1QMIDIARP(1) General Commands Manual QMIDIARP(1)
2
3
4
6 qmidiarp - MIDI arpeggiator and LFO
7
8
10 qmidiarp [OPTION] [file]
11 qmidiarp { --help | --version }
12
13
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
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
458 *.qmax
459 QMidiArp XML files containing session data in XML text format.
460
461
463 Example QMidiArp files can be found in /usr/share/qmidiarp or in
464 /usr/local/share/qmidiarp
465
467 Errors and warnings are written to stderr(3).
468
470 qmidiarp-devel@lists.sourceforge.net
471
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)