More and more musicians are using laptops in their rigs. Wouldn't it be great to
harness the power of those laptops to offer greater control capabilities than are
usually available in MIDI foot controllers?
Well, yeah, if you're already using a laptop - but you wouldn't want to lose the
flexibility that foot control offers either.
Enter a hybrid hardware/software MIDI foot controller. A hybrid system separates
the physical interface from the control logic so that the logic can run on a computer.
The logic, or engine, is more easily maintainable and updated when it runs as an
application on a computer than as firmware in dedicated hardware.
Using the monome, you build your own MIDI foot controller but run the 'brains' of
the foot controller on a computer. I'm currently running mTroll on an Asus eee PC
Model 900 (the extremely slow 16GB SSD model).
Neither the hardware nor the software requires a MIDI channel.
The controller hardware is powered by the computer via USB, supports 64 physical
switches, 64 LEDs, and 4 expression pedals.
If you aren't happy with current MIDI foot control offerings or just want to build
one yourself, read on to learn more about my DIY MIDI controller.
Patches
Unlimited patch count
Patches can send multiple MIDI messages of any length
Patches support Normal, Toggle, Momentary or Sequence modes
Normal mode sends one of set MIDI messages when switch pressed, and a different set when another Normal mode patch is selected
Toggle mode sends one set of MIDI messages when switch pressed, and a different set when pressed again
Momentary mode sends one set of MIDI messages when switch pressed, and a different set when released
Sequence mode increments through a list of messages to send when a switch is pressed repeatedly (a toggle with more than 2 sets/states) (Dr. Z )
Patch state is retained across bank loads Meta-patch for resetting all patches loaded in a bank Meta-patch for loading another bank
Banks
Unlimited bank count
Banks are simply mappings of patches to switches (physical or virtual)
Banks can address more switches than are physically present on input hardware
A single patch can be used in multiple banks or on multiple switches in the same bank
Multiple patches can be assigned to a single switch in any given bank (the first patch assigned to a switch in a bank owns the switch label and indicator)
Banks can be configured with load and unload patch states (optionally activate or deactivate particular patches at bank load or unload)
Support for default mappings (for instant access switch creation)
Support for defining exclusive switch groups per bank (for radio button functionality)
Expression Pedals
Support for four expression pedals
Each pedal can be configured globally and/or locally per patch
Supports minimum and maximum transmission values, value inversion and manual pedal calibration
Each pedal can be configured for one or two controllers (per pedal, up to 2 globals and 2 per patch locals)
Only one patch at a time has control of the pedals (in addition to the global control which can be disabled per patch)
Support for manual calibration
Configuration
Patch and bank settings are stored in plain text XML file (example)
UI is configured via an independent plain text XML file (example)
Same data file can be used with different UI files for display on different resolutions or form factors
Other
Can be used without input hardware (using computer keyboard, and on-screen buttons and indicators)
Support for multiple MIDI out devices (one MIDI out assignment per patch)
Supports independent labels for each switch/button (Dr. Z )
User-definable LED brightness
LED state can be inverted (lit when off, unlit when on)
The current version of the Win32 application requires the
Qt 4.4.1 libraries (and VS2008 dependencies)
(built 2008.11.02). The Qt libraries are downloaded separately from the app since they
are bulky and not likely to change as often as the app. Extract the contents of the
Qt zip file to the application directory.
mTroll (build 2010.01.03) a Win32 application (no installer; just unzip
and run - configuration is done via the included XML files).
Usage notes here. Don't forget Qt too
if you have not already installed the 4.4.1 binaries.
To use with a monome board, you must install the
FTDI D2XXX drivers (not necessary
for standalone operation).
source code
The application is released as open source software licensed under GPLv3. The source code for
the Qt port is available here (archived 2010.01.03).
My altered version of the monome firmware (updated 2007.11.04)
is included in the application source download
(modified ADC port handling, see Expression Pedal Calibration). The
originalwork
is licensed under GPL, so my alterations
are as well.