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

OPTIONS

370       --portCount <num>
371              Set the number of available ALSA  output  ports  to  <num>.  The
372              default is 2.
373
374       --help Print possible command-line options and exit.
375
376       --version
377              Print version information and exit.
378
379       file   Name of a valid QMidiArp (.qmax) XML file to be loaded on start.
380

FILES

382       *.qmax
383              QMidiArp XML files containing session data in XML text format.
384       *.qma
385              Old QMidiArp files in plain text format.
386

EXAMPLES

388       Example  QMidiArp  files  can  be  found  in  /usr/share/qmidiarp or in
389       /usr/local/share/qmidiarp
390

NOTES

392       Errors and warnings are written to stderr(3).
393

SUPPORT

395       qmidiarp-devel@lists.sourceforge.net
396

AUTHORS

398       Matthias Nagorni, Frank Kober and Guido Scholz. This  manual  page  was
399       written by Frank Kober <emuse@users.sourceforge.net>.
400
401
402
403                                  2009-10-20                       QMIDIARP(1)
Impressum