1QMIDIARP(1)                 General Commands Manual                QMIDIARP(1)
2
3
4

NAME

6       qmidiarp - MIDI arpeggiator and LFO
7
8

SYNOPSIS

10       qmidiarp [OPTION] [file]
11       qmidiarp { --help | --version }
12
13

DESCRIPTION

15       QMidiArp  is  an advanced MIDI arpeggiator, programmable step sequencer
16       and LFO.  It runs with either JACK MIDI or ALSA MIDI. It can  hold  any
17       number of arpeggiator or LFO modules running in parallel. The arpeggia‐
18       tor modules produce sequences depending on  the  notes  sent  to  their
19       input  port,  which  is  typically  connected  to a keyboard or another
20       sequencer. The step sequencer modules allow you to create  simple  lin‐
21       ear,  monophonic  and  globally  transposable  sequences similar to the
22       first analog sequencers. The MIDI LFOs independently produce MIDI  con‐
23       troller  data  of  adjustable  waveform, time resolution, amplitude and
24       duration. For each module, an input note filter is available,  and  the
25       output  port  and  channel can be set independently.  Since the modules
26       use a common sequencer queue, they are automatically in sync with  each
27       other. QMidiArp works with an internal tick resolution of 192 ticks per
28       beat. The queue can be synchronized to an incoming MIDI realtime  clock
29       or  as  a  JACK transport client. Most of the relevant control elements
30       are accessible via MIDI controller through a MIDI-learn infrastructure.
31       QMidiArp  also  has  a log tool displaying the history of incoming MIDI
32       events in colors depending on their type.  QMidiArp is based on the Qt4
33       toolkit.
34
35
36   General Operation
37       When  no  commandline options are given, QMidiArp starts as a JACK MIDI
38       client with an input port and two output ports. For  starting  QMidiArp
39       as  an ALSA client, use the -a option.  A new arpeggiator or LFO module
40       can be created by clicking one of the Add Arp..., Add  LFO...   or  Add
41       Step  Sequencer...   buttons, which will show a new tab with the chosen
42       module in the main area. The modules can be renamed  or  removed  using
43       the  corresponding  buttons  or menu functions. Modules can be detached
44       from the main window to control and view them in parallel. They can  be
45       brought  back  to  the main window again by clicking on the icon on the
46       left side of each module title bar. They can also be  aligned  side-by-
47       side  within  the  same  window  if the main window is stretched suffi‐
48       ciently before reinserting a module. The entire  setup  containing  all
49       arps,  sequences  and LFOs in the tab bar along with the parameters set
50       in the Settings window can be saved to or loaded from  a  QMidiArp  XML
51       file (.qmax). The tempo of the queue can be set in beats per minute and
52       affects all modules. The queue is started and stopped by the blue arrow
53       button.
54
55
56   MIDI Clock operation (ALSA MIDI only)
57       In  ALSA  mode, QMidiArp runs using its own clock and tempo, but it can
58       optionally use incoming MIDI clock events as clock and start/stop  con‐
59       trol  source.   If  the  MIDI  clock  button  right of the tempo box is
60       pressed, the running ALSA queue is stopped, and QMidiArp will wait  for
61       an  incoming "MIDI Clock Start" event from an external source connected
62       to QMidiArp's MIDI input. Once this event is  received,  the  queue  is
63       started using MIDI realtime clock events as clock source. QMidiArp will
64       best remain in sync with the incoming MIDI clock if its internal  tempo
65       value  (see  above)  approximately  corresponds to that of the incoming
66       clock. The MIDI clock tempo is, however, measured while  the  queue  is
67       running.  Therefore,  if  the  tempos  of  the  MIDI  clock and that of
68       QMidiArp differ, synchronization should become stable from  the  second
69       queue  start.  The  queue  will  stop  when  a MIDI Clock Stop event is
70       received. During MIDI Clock operation, QMidiArp's own clock  start  and
71       stop  functions  as  well as adding or loading new setups are disabled.
72       They are enabled again by unchecking the MIDI clock button.
73
74
75   JACK Transport Client Operation
76       When the Jack Transport Connect button is pressed, QMidiArp will try to
77       connect  to a running Jack server and then function as a Jack Transport
78       client, i.e. set its tempo and remain synchronized to  a  running  Jack
79       Transport  master.  Note that QMidiArp will restart its queue from zero
80       whenever Jack transport is  starting  regardless  of  Jack  Transport's
81       position.  This also applies in case of a looping Jack Transport queue.
82       The Jack button will be released automatically if QMidiArp gets discon‐
83       nected  from  Jack by a possible Jack shutdown or if Jack is not avail‐
84       able at connection time.
85
86       Note: MIDI Clock and Jack Transport button states will  be  saved  with
87       the  QMidiArp  session file, and get active or inactive when a new ses‐
88       sion file is loaded.
89
90
91   Arpeggiator Modules
92       QMidiArp's arpeggiators can produce complex patterns derived  from  the
93       notes  played  on  a MIDI keyboard. QMidiArp's arpeggiator modules were
94       inspired by the MAP1 hardware arpeggiator by Rudi Linhard.
95
96       Input and Output panels
97
98       Each arpeggiator has an Input and an  Output  panel.  The  Input  panel
99       defines  the  note  range  and  the  MIDI  channel  to which the arp is
100       assigned. Notes that pass this Input filter are  sorted  by  pitch  and
101       added  to  the  internal note buffer of the arpeggiator. Incoming notes
102       that do not match any filter can either be discarded or forwarded to  a
103       selectable  MIDI  port (see Settings ). The Output panel holds settings
104       for the MIDI channel and output port to  which  the  arpeggiator  notes
105       will be sent.
106
107       Arpeggiator Patterns
108
109       Arpeggio  patterns  can  be  selected  and edited in the Pattern panel.
110       Pattern presets are selectable from a combo box. The  currently  active
111       pattern is displayed as a piano roll type screen showing the base notes
112       as streaks. The y-scale of the graphics window corresponds to the index
113       of the notes in the pattern. Octave changes (see Editing patterns ) are
114       shown as additional horizontal lines.  The notes  that  are  eventually
115       sent  depend  on  the  input  notes  received  by  the arpeggiator. The
116       received notes notes are attributed in ascending  order  to  the  notes
117       defined  in  the pattern. For example, a single streak on the bottom of
118       the arp display ("simple" presets) means that at the first pass through
119       the pattern, the lowermost note played on the keyboard is played.  If a
120       chord is played on the keyboard and only one note  is  present  in  the
121       pattern,  only  the  lowermost pressed note is output at the first pass
122       through the pattern. For the following repetitions of the pattern,  the
123       chosen  "repeat mode" is used to determine the following notes.  If the
124       pattern contains stacked note streaks (chord mode),  chords  played  on
125       the  keyboard are also output as chords with polyphony up to the number
126       of notes defined in the stack.
127
128       Repeat Mode
129
130       This setting defines the behavior of the arpeggio over several  repeti‐
131       tions  of  the pattern when the number of notes pressed on the keyboard
132       is higher than the number of notes present in the pattern.  When Repeat
133       Mode  is "Up", the next higher note played on the keyboard is played at
134       each repetition. With "Down", the next lower note  is  played.  With  a
135       single  note  present in the arp pattern, this creates classical linear
136       arpeggios. This way even simple patterns like "01" (or even  "0")  will
137       generate  a complete arpeggio.  When "Static" is selected, this classi‐
138       cal arpeggio mode will be disabled, and the output  notes  remain  con‐
139       stant.
140
141       Trigger mode
142
143       QMidiArp's arpeggiators can run in three modes. "No trigger" will cause
144       the arp running continuously in synchronization with  the  internal  or
145       external  clock  source.  Even  when new notes are played, they will be
146       output quantized to the running queue. "Kbd restart" will cause a reset
147       of  the playhead position upon the next note to be output, but the out‐
148       put pattern stays  quantized  to  the  queue.  When  "Kbd  trigger"  is
149       selected, each new note played in stakato will trigger the pattern with
150       the timing of the played note.
151
152       Editing Arp patterns
153
154       Arp patterns are defined by a text sequence containing the notes  them‐
155       selves as numbers along with control changes for chord, tempo, velocity
156       and octave changes. When the Edit pattern button in the  pattern  panel
157       is  clicked,  the  current pattern preset appears as a text input line.
158       The edited pattern can be stored in the preset list by clicking on  the
159       Store  pattern button. The currently active pattern can be removed from
160       the preset list by clicking on the Remove pattern  button.  All  preset
161       patterns  are immediately saved in the .qmidiarprc resource file when a
162       pattern is stored or removed, and the new pattern list is  made  avail‐
163       able  to  the  other arps in the tab bar. Pattern presets are automati‐
164       cally loaded on each application start.
165
166       The syntax for the pattern text is as follows:
167
168       0..9 : Note indices
169          + : One octave up
170          - : One octave down
171          = : Reset to standard octave
172          > : Double tempo
173          < : Half tempo
174          . : Reset to standard tempo
175        ( ) : Chord, begin..end,
176              e.g. (012) would be a chord of the
177              lowermost three notes in the buffer
178          / : Volume up by 20%
179          \ : Volume down by 20%
180          d : Double length
181          h : Half length
182          p : Pause
183
184       Any token is valid until the end of a pattern is reached. The  token  >
185       will  e.g.  double  the  tempo  for all following notes of the pattern.
186       When the loop jumps back to the beginning of the pattern, the tempo  is
187       reset to its initial value, i.e. a quarter note.
188
189       Random
190
191       The  timing,  velocity and length of the output notes can be randomized
192       using the sliders in the Random panel. These settings can  be  used  to
193       make  the  arpeggiator  sound  less  mechanical, but if they are set to
194       higher values, they add interesting accents to the patterns.
195
196       Envelope
197
198       QMidiArp can modulate the velocity of the arpeggios  with  an  envelope
199       function  defined by Attack time and Release time. If an attack time is
200       set, the velocities of the output notes are ramped up during the attack
201       time  defined in seconds. If a release time is set, notes released from
202       the keyboard are continued to be output while their velocity is  ramped
203       down linearly and until the release time has reached its end. The enve‐
204       lope function only makes sense if the sound driven by the arp is veloc‐
205       ity-sensitive.  It  works  best with highly polyphonic patterns such as
206       "Chord Oct 16 A".
207
208       Groove
209
210       The Groove sliders control a linear shift of timing, length and  veloc‐
211       ity  within each beat of the output pattern. This can be used to create
212       swing timing and accent. The Groove settings are adjusted for all  arps
213       simultaneously.
214
215
216   LFO Modules
217       In parallel to the arps, QMidiArp can send MIDI controller data in form
218       of a low frequency oscillator (LFO) to the  assigned  output.  The  LFO
219       data consist of controller events that are in sync with the arpeggiator
220       queue. The queue has to be in running state to enable the LFO. Each LFO
221       module  has  a  waveform panel to define the shape of the outgoing data
222       and an output panel to define MIDI Channel, ALSA  port  and  controller
223       number  to  be produced. The waveform can currently be set to Sine, Saw
224       Up, Saw Down, Triangle, Square and Custom. The frequency of the LFO can
225       be  set  in muliples and divisors of the arp tempo, such that frequency
226       of 1 produces one full wave per beat. If frequencies lower than  1  are
227       selected,  the  length  of the wavetable has to be adjusted correspond‐
228       ingly to produce a full wave. The time resolution of the LFO determines
229       the  number  of events produced every beat and can be adjusted to up to
230       192 events per beat.  Amplitude and  offset  of  the  waveform  can  be
231       adjusted from 0...127. Low resolutions lead to audibly discrete rythmic
232       controller changes whereas higher resolution values lead to  more  con‐
233       tinuous waves.
234
235       Muting individual wave points
236
237       Individual  wave  points can be muted/unmuted by clicking on the corre‐
238       sponding location in the wave display with the right mouse  button.   A
239       muted wave point is shown in darker color.
240
241       Custom Waveforms
242
243       When  Custom is selected, the waveform can be drawn with the left mouse
244       button in the waveform display. A calculated waveform is copied to  the
245       custom  waveform  whenever it is being modified by the mouse. This will
246       overwrite the previous custom waveform  with  the  currently  displayed
247       waveform.  As  all LFO operations, drawing and muting can be done while
248       the queue is running, and becomes effective immediately.
249
250       Play direction and looping
251
252       The play mode can be switched between:
253
254
255         ->_> : Forward and Loop
256         <_<- : Backward and Loop
257         ->_< : Forward and Bounce
258         >_<- : Backward and Bounce
259         ->_| : Forward Single shot
260         |_<- : Backward Single shot
261
262       The direction and loop settings apply immediately when changed  on  the
263       fly.
264
265       Recording
266
267       The  LFO  records  incoming  controller  data  as selected in the Input
268       panel, when the Record button is pressed. Note that the  Record  button
269       itself  can  be  attributed to a MIDI toggle controller so that it pro‐
270       vides a convenient implementation of a controller  motion  sampler  and
271       looper.
272
273       LFO Input panel
274
275       The  input  panel contains settings on which MIDI CC is to be recorded,
276       how the LFO acts to note events received on the input. As the arpeggia‐
277       tors,  the  LFO  can be restarted or (re-) triggered by notes played on
278       the keyboard, and the wave output can be stopped or not when  Note  Off
279       events are received on the input Channel
280
281       LFO Output panel
282
283       The  LFO  output panel contains the port, channel and controller number
284       settings of the LFO data produced by each LFO tab. You  can  also  mute
285       each LFO wave.
286
287
288   Step Sequencer Modules
289       By  clicking  Add Step Sequencer...  in the control tool bar, a new Seq
290       module can be added to the tab bar. Each of  these  modules  produce  a
291       simple  linear (monophonic) sequence, similar to the first analog hard‐
292       ware sequencers. The Seq modules are controllable while  running,  also
293       in a similar way to analog step sequencers.
294
295       Programming a sequence
296
297       As  QMidiArp's  LFO  modules,  the  step sequencer can be programmed by
298       adjusting notes with left mouse clicks on  the  sequence  display.  The
299       octave  range is fixed to 4. The lowest note is C2 if the global trans‐
300       pose is set to 0. Notes can be muted with the right  mouse  click.  The
301       sequence  length  can  be  adjusted between 1 and 8 beats, and the time
302       resolution can be set to values between 1 and 16 per beat. A resolution
303       of  4  means  that 4 notes are output every beat, i.e. sixteenth notes.
304       The sequence can also be programmed using the Record function. When the
305       Record  button  is  pressed,  notes  received on the input port will be
306       recorded step-by-step starting from the last modified note. Programming
307       can be done on the fly also when the sequencer queue is running.
308
309
310       Controlling the sequence globally
311
312       There  are  sliders to adjust the global velocity (volume), note length
313       and transpose of the sequence in semitones.
314
315       Seq Input and Output panels
316
317       The Seq Input panel determines how to handle incoming notes on the MIDI
318       Channel  set  in the channel box. If Note is checked, the sequence will
319       be globally transposed with the incoming note as  transpose  value.  If
320       Velocity  is  checked  in addition, the sequence will output notes with
321       the same velocity as that received on its input. The Input  panel  also
322       determines  how  the sequence behaves when incoming notes are received.
323       It can be restarted, triggered and stopped with the timing of  received
324       notes as the LFO modules.
325
326       The  Seq Output panel is equivalent to that of arpeggiator and LFO mod‐
327       ules.
328
329       Note that accents within a pattern can be produced by running LFO  mod‐
330       ules  in parallel to the Seq module, and by sending to the same channel
331       and port as the Seq module.
332
333
334   Settings
335       The Settings window allows one to configure if and to which port incom‐
336       ing  events that do not match any module's input filter are forwarded (
337       unmatched events). It also allows one  to  set  whether  incoming  con‐
338       troller  events  are  recognized for muting and controlling the modules
339       separately. If this option is set, QMidiArp will recognize MIDI control
340       events that can be attributed to different parameters (see MIDI Control
341       ). By checking the compact module style all new  created  modules  will
342       show with small GUI elements to be more economic in space when distrib‐
343       uted as separate windows over the desktop.
344
345       All settings in this dialog are stored along with the  module  data  in
346       the qmax session file.
347
348
349   MIDI control
350       QMidiArp  supports  MIDI  control events if the Modules controllable by
351       MIDI CC option is checked in the Settings dialog.
352
353       MIDI Learn
354
355       Controllers can be attributed by right-clicking on the sliders or  mute
356       checkbox  in  each module and selecting MIDI Learn.  QMidiArp will then
357       wait for MIDI control events, and moving a MIDI controller connected to
358       QMidiArp's input will attribute this controller to the control item. It
359       is possible to add several MIDI controllers to one item. If MIDI Forget
360       is  selected, all controllers for that item are removed. If Cancel MIDI
361       learning is selected, the learn process is stopped.
362
363       Note that by default, mute controllers are interpreted as toggles, i.e.
364       the  mute  state is toggled on reception of a value of 127 from the at‐
365       tributed controller.
366
367       Control Editor
368
369       The Control Editor is accessible from the View menu.  Controls  can  be
370       edited  by  MIDI  control  number, channel, and the minimum and maximum
371       values that are sent to the control item. Mute controllers have a  spe‐
372       cial  behaviour.  If minimum and maximum are equal, the controller acts
373       as toggler upon reception of the adjusted value.  If minimum is differ‐
374       ent from maximum, the corresponding module will be muted upon reception
375       of minimum and unmuted upon reception of maximum as values.
376
377       If Remove is pressed, the currently  selected  line  will  be  removed,
378       pressing  Revert reloads the current controller settings. Pressing Can‐
379       cel quits the control editor without applying changes, and only  if  OK
380       is pressed, the edited control list becomes active.
381
382
383   Global Storage
384       There  is  another dock window available for storing and restoring most
385       of the parameters of all modules at once. In this window,  each  module
386       and  its  storages  appear  as  a column, the first column representing
387       switches for all modules globally. When the small Store button  on  the
388       left  is clicked, all modules will store their parameters in a location
389       given by the current row,  and  the  next  available  storage  location
390       appears.  Module storages can be recalled by clicking on the buttons of
391       each individual module or globally (numbered buttons in the first  col‐
392       umn). Storage locations can be removed again by clicking on the "arrow"
393       button on the bottom of the list.  When a new module is added at a time
394       when  storage  locations  already  exist for other modules, the storage
395       locations for the new module will be empty and can be filled  by  using
396       Store again at this location.
397
398       When QMidiArp is running, the switch behavior will depend on the selec‐
399       tion made in the comboboxes in the first row of the window.
400
401       End of will cause parameter switches to occur when the  module  in  the
402       second  combobox  reaches its pattern end. When individual switches are
403       done the module in the column of  the  clicked  module  determines  the
404       switch time.
405
406       After  will  do  parameter  switches  at the end of the number of beats
407       selected in the second combobox after the restore button is clicked.
408
409       The switch can be done by MIDI controller assigned by  the  MIDI  Learn
410       context  menu of the top button of each column. Note that it is the the
411       controller value that corresponds to the storage location, and that you
412       may  want  to  adjust  the range of controllers to your needs using the
413       MIDI Control Editor With the Global Storage handler, QMidiArp  can  act
414       as a simple but handy live sequencer tool.  But the Golbal Storage but‐
415       ton in the View menu and in the main toolbar toggles visibility of  the
416       Global Storage window.
417
418
419   Event Log
420       The  Event  Log  displays  incoming MIDI events. It is displayed in the
421       bottom area by default, but can be hidden if not needed or set floating
422       as a top-level window on the desktop. Logging can also be disabled gen‐
423       erally or for MIDI Clock events only.
424
425
426   Example Files
427       There are currently three demo arpeggios.  The  demo.qma  arpeggio  was
428       intended  to  be used with the following sound types: Ch 1: Marimba, Ch
429       2: Celesta, Ch 3: Acoustic Bass, but you can get interesting results if
430       you use other instrument settings.
431
432       The  demo_seqlfo.qmax  setup shows the use of the new sequencer and LFO
433       modules playing in parallel. The sequencer outputs should be routed  to
434       percussive  synthesizer sounds. The LFO data is intended to act on fil‐
435       ter cutoff, which has the standard  controller  CC#74.  ZynAddSubFX  by
436       Paul  Nasca reacts on these filter cutoff controllers. The "Bass 1" and
437       "Plucked 3" presets from this synthesizer  work  well  with  this  demo
438       file.
439
440

OPTIONS

442       --portCount <num>
443              Set  the  number  of  available  ALSA output ports to <num>. The
444              default is 2.
445
446       --help Print possible command-line options and exit.
447
448       --version
449              Print version information and exit.
450
451       --alsa Use the ALSA MIDI backend
452
453       --jack Use the JACK MIDI backend (default)
454
455       file   Name of a valid QMidiArp (.qmax) XML file to be loaded on start.
456

FILES

458       *.qmax
459              QMidiArp XML files containing session data in XML text format.
460
461

EXAMPLES

463       Example QMidiArp files  can  be  found  in  /usr/share/qmidiarp  or  in
464       /usr/local/share/qmidiarp
465

NOTES

467       Errors and warnings are written to stderr(3).
468

SUPPORT

470       qmidiarp-devel@lists.sourceforge.net
471

AUTHORS

473       Frank  Kober,  Nedko  Arnaudov, Guido Scholz and Matthias Nagorni. This
474       manual page was written by Frank Kober <emuse@users.sourceforge.net>.
475
476
477
478                                  2011-11-07                       QMIDIARP(1)
Impressum