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 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
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
382 *.qmax
383 QMidiArp XML files containing session data in XML text format.
384 *.qma
385 Old QMidiArp files in plain text format.
386
388 Example QMidiArp files can be found in /usr/share/qmidiarp or in
389 /usr/local/share/qmidiarp
390
392 Errors and warnings are written to stderr(3).
393
395 qmidiarp-devel@lists.sourceforge.net
396
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)