QMidiArp - A
MIDI Arpeggiator, Step
Sequencer and Controller LFO
- Main Toolbar
Transport Client Operation
- Global Storage
- Event Log
- Example Files
- Comand Line Usage and Options
- Supported Files
on icon for module documentation
Connections and General
options are given, QMidiArp starts as a JACK MIDI client
with an input port and two output ports. You can now connect the MIDI
ports. In the following example, an Edirol UA-25 interface is connected
to a MIDI Keyboard. A2jmidid is used (a2j -e) to bridge the ALSA MIDI
world to Jack MIDI.
In Ladish or Patchage, this would look like the
following, the MIDI connections are in red, the audio connections in
In QJackCtl you would connect QMidiArp like the following (note that
we're looking at the MIDI tab that
shows JACK MIDI connections only):
The a2j JACK MIDI client shows the ALSA MIDI devices and programs
(here only necessary for the UA-25 hardware interface. The JACK MIDI
elements (such as qmidiarp and yoshimi) show up directly.
If you don't have a2jmidid or only have ALSA MIDI programs or don't
want to use JACK MIDI, you can use QMidiArp with ALSA as well.
For starting QMidiArp as an
client, use the -a option, and you would see something like this when
ZynAddSubFX and qmidiarp -a
Note that in this example we are looking at the ALSA tab showing
ALSA MIDI connections.
The QMidiArp main toolbar will
show up like this after starting the program:
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.
To make QMidiArp play whatsoever, you need to start it using 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. The Jack button will be released
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.
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. Groove settings apply to 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
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
- Set the number of available MIDI output
ports to <num>. The
- -h, --help
- Print possible command-line options and
- -v, --version
- Print version information and exit.
- -a, --alsa
- Use the ALSA MIDI backend
- -j, --jack
- 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.