QMidiArp - A
MIDI Arpeggiator, Step
Sequencer and Controller LFO
- General Operation
Transport Client Operation
- Global Storage
- Event Log
- Example Files
- Comand Line Usage and Options
- Supported Files
on icon for module documentation
no commandline options are given, QMidiArp starts as a JACK MIDI client
with an input port and two output ports. For starting QMidiArp as an
client, use the -a option.
New modules can be created by
clicking one of the Add Arp...,
Add Step Sequencer...
buttons, which will show a new
tab with the chosen module in the main area. The modules can be renamed
or removed using the corresponding buttons or menu functions. Modules
can be detached from the main window to control and view them in
parallel. They can be brought back to the main window again by clicking
on the icon on the left side of each module title bar. They can also be
aligned side-by-side within the same window if the main window is
stretched sufficiently before reinserting a module. The entire
setup containing all arps, sequences and LFOs in the tab bar along with
the parameters set in the Settings
window can be saved to or loaded from
a QMidiArp XML file (.qmax). The tempo
of the queue can be set in beats per minute and
affects all modules. The queue is started and stopped by the blue arrow
Clock operation (ALSA MIDI only)
QMidiArp can use incoming MIDI clock
events as clock and start/stop
If the MIDI clock button
right of the tempo box is pressed, the running ALSA queue is stopped,
will wait for an incoming "MIDI Clock Start" event from an external
source connected to QMidiArp's MIDI input. Once this event is received,
the queue is started using MIDI realtime clock events as clock
source. QMidiArp will best remain in sync with the incoming MIDI clock
if its internal tempo value (see above) approximately corresponds to
that of the incoming clock. The MIDI clock tempo is,
however, measured while the queue is running. Therefore, if the tempos
of the MIDI clock and that of QMidiArp differ, synchronization should
become stable from the second queue start. The queue will stop when a
MIDI Clock Stop event is received. During MIDI Clock operation,
QMidiArp's own clock start and stop functions as well as adding or
loading new setups are disabled. They are enabled again by unchecking
the MIDI clock button.
Transport Client Operation
When the Jack Transport Connect
button is pressed, QMidiArp will try to connect to a running Jack
server and then function
as a Jack Transport client, i.e. set its tempo and remain synchronized
to a running Jack Transport master. Note that QMidiArp will restart
its queue from zero whenever Jack transport is starting regardless of
Jack Transport's position. This also applies in case of a looping Jack
Transport queue. The Jack button will be released automatically
if QMidiArp gets disconnected from Jack by a possible Jack shutdown or
if Jack is not available at connection time.
MIDI Clock and Jack Transport button states will be saved with
the QMidiArp session file, and get active or inactive when a new
file is loaded.
is another dock window available for storing and restoring most of the
parameters of all modules at once. In this window, each module and its
storages appear as a column, the first column representing switches for
all modules globally.
the small Store button
on the left is clicked, all modules will store their parameters in a
location given by the current row, and the next available storage
location appears. Module storages can be recalled by clicking on the
buttons of each individual module or globally (numbered buttons in the
first column). Storage locations can be removed again by clicking on
the "arrow" button on the bottom of the list. When
a new module is added at a time when storage locations already exist
for other modules, the storage locations for the new module will be
empty and can be filled by using Store
again at this location. Note that you can click on the top row button of each module to raise its window if it is hidden by others.
When QMidiArp is running,
the switch behavior of the left global column will depend on the selection made in the comboboxes
in the first row of the window.
End of will cause parameter switches to occur when the module in
the second combobox reaches its pattern end. When individual switches
are done the module in the column of the
clicked module determines the switch time.
After will do parameter switches at the end of the number of
beats selected in the second combobox after the restore button is
The individual switches always occur at pattern end. This
way each module handles itself, and you can do several switch requests
for different modules at the same time.
righ-clicking on the individual switch buttons the context
menu shown on the right appears.
You can store the current module parameters and pattern at the current location and decide what to do when a pattern reaches its end.
Stay here is the default mode without location change after pattern end.
Jump back will cause the module to go back to the previously active location. This is useful when breaks are part of your setup.
will cause a jump to the location selected below when the pattern ends.
These "interconnections" between locations provide a dynamic way of
setting up a pattern sequence like in a "song mode", but they can also
be used in conjunction with a MIDI controller to trigger a particular
pattern sequence at a desired time and then return to a statically
All switches can be done by MIDI controller assigned by the MIDI Learn context menu of the top
row button of each column. Note that it is the the controller value that corresponds to the
storage location, and that you may want to adjust the range of
controllers to your needs using the MIDI
With the Global
Storage handler, QMidiArp can act as a simple but handy live
sequencer tool. But the Golbal Storage
button in the View menu and in
the main toolbar toggles visibility of the Global Storage window.
sliders control a linear shift of timing, length and velocity within
each beat of the output pattern. This can be used to create swing
timing and accent. The Groove settings are adjusted for all modules
The Settings window allows you to configure if and to which port incoming
events that do not match any module's input filter are forwarded (
events). You can also set whether incoming controller events are recognized for
muting and controlling
the modules separately. If this option is set, QMidiArp will recognize
MIDI control events that can be attributed to different parameters (see
). By checking the compact module style
all new created modules will show with small GUI elements to be more
economic in space when distributed as separate windows over the
settings in this dialog are stored along with the module data in
qmax session file.
QMidiArp supports MIDI control events
if the Modules controllable
by MIDI CC
option is checked in the
can be attributed by right-clicking on the sliders or
mute checkbox in each module and selecting MIDI Learn.
QMidiArp will then wait for MIDI control events, and moving a MIDI
controller connected to QMidiArp's input will attribute this controller
to the control item. It is possible to add several MIDI controllers to
one item. If MIDI Forget
is selected, all controllers for that item are removed. If Cancel
is selected, the learn process is stopped.
that by default, mute controllers are interpreted as toggles,
the mute state is toggled on reception of a value of 127 from the
is accessible from the View
menu. Controls can be edited by MIDI control number, channel, and the
minimum and maximum values that are sent to the control item. Mute
controllers have a special behaviour. If minimum and maximum are equal,
the controller acts as toggler upon reception of the adjusted value.
If minimum is different
from maximum, the corresponding module will be muted upon reception of
minimum and unmuted upon reception of maximum as values.
is pressed, the currently selected line will be removed, pressing
reloads the current controller settings. Pressing Cancel
quits the control editor without applying changes, and only if OK
is pressed, the edited control list becomes active.
displays incoming MIDI events. It is displayed in the bottom area by
default, but can be hidden if not
needed or set floating as a top-level window on the desktop. Logging
can also be disabled generally or for MIDI Clock events only.
There are currently three demo arpeggios. The demo.qmax arpeggio was
intended to be used with the following sound types: Ch 1: Marimba, Ch
2: Celesta, Ch 3: Acoustic Bass, but you can get interesting results if
you use other instrument settings.
demo_seqlfo.qmax setup shows the use of the new sequencer and
modules playing in parallel. The sequencer outputs should be routed
to percussive synthesizer sounds. The LFO data is intended to act on
filter cutoff, which has the standard controller CC#74. ZynAddSubFX by
Paul Nasca reacts on these filter cutoff controllers. The "Bass 1"
and "Plucked 3" presets from this synthesizer work well with this demo
Line Usage and Options
- --portCount <num>
- Set the number of available MIDI output
ports to <num>. The
- Print possible command-line options and
- Print version information and exit.
- Use the ALSA MIDI backend
- Use the JACK MIDI backend (default).
- Name of a valid QMidiArp (.qmax) XML file
to be loaded on start.
QMidiArp XML files containing session
data in XML text format.