QMidiarp Logo QMidiArp - A MIDI Arpeggiator, Step Sequencer and Controller LFO


Home Download Documentation
Demo Materials
Project detail Support Development Authors


Documentation

GUI Overview

Index

General Operation
MIDI Clock operation
JACK Transport Client Operation
Global Storage
Arpeggiator Modules
LFO Modules
Step Sequencer Modules
Settings
MIDI control
Event Log
Example Files
Comand Line Usage and Options
Supported Files

Click on icon for module documentation

ArpsLFOsSeqs

General Operation

When 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 ALSA client, use the -a option.


Command Toolbar

New modules can be created by clicking one of the Add Arp..., Add LFO... or 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 button.

MIDI Clock operation (ALSA MIDI only)

QMidiArp can use incoming MIDI clock events as clock and start/stop control source. If the MIDI clock button right of the tempo box is pressed, the running ALSA queue is stopped, and QMidiArp 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.

 

JACK 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.

Note: MIDI Clock and Jack Transport button states will be saved with the QMidiArp session file, and get active or inactive when a new session file is loaded.

Global Storage

There 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.

Global Storage handler

When 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.

Global Switching
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 clicked.

Individual Switching
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.

By righ-clicking on the individual switch buttons the context menu shown on the right appears.

Jump Location Context Menu

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. 

Jump to 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 active pattern.

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 Control Editor.

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.


Groove

The Groove 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 simultaneously.

Groove Settings Window


Settings

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 ( unmatched 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 MIDI Control ). 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 desktop.

All settings in this dialog are stored along with the module data in the qmax session file.

 

MIDI control

QMidiArp supports MIDI control events if the Modules controllable by MIDI CC option is checked in the Settings dialog.

MIDI Learn

Controllers 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 MIDI learning is selected, the learn process is stopped.

Note that by default, mute controllers are interpreted as toggles, i.e. the mute state is toggled on reception of a value of 127 from the attributed controller.

Control Editor

Midi Control EditorThe Control Editor 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.

If Remove is pressed, the currently selected line will be removed, pressing Revert 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.

 

Event Log

The Event Log 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.

 

Example Files

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.

The demo_seqlfo.qmax setup shows the use of the new sequencer and LFO 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 file.

 

Command Line Usage and Options


qmidiarp [OPTION] [file]
qmidiarp { --help | --version }

 

OPTIONS

--portCount <num>
Set the number of available MIDI output ports to <num>. The default is 2.
--help
Print possible command-line options and exit.
--version
Print version information and exit.

--alsa
Use the ALSA MIDI backend
--jack
Use the JACK MIDI backend (default).

file
Name of a valid QMidiArp (.qmax) XML file to be loaded on start.
 

Supported Files

*.qmax :  QMidiArp XML files containing session data in XML text format.



Please also have a look at
Dave Philips' article set on arpeggiators in LinuxJournal.com        QMidiArp's French language page on LinuxMAO.org

Get QMidiArp at SourceForge.net. Fast, secure and Free Open Source software downloads