|MIDIbots: intelligent music automata
MIDIbots is a small application written in C++ and Lua to customize and extend MIDI-enabled applications. It works pretty much like a MIDI router: it receives MIDI messages (usually directly from hardware interfaces), processes them, then sends them out again to a MIDI port (usually to an audio playback software like Ableton Live or Native Instruments Traktor).(*)
One obvious application is to stabilize a MIDI interface whose XY joystick is uncalibrated and gives erratic results, making it all but unusable. With MIDIbots you can intercept those MIDI messages and decide to mute values in the center of the joystick which you consider unstable.
Another example is a devices inability to send the right pitch bend messages; you have a wheel but the values it sends arent compatible with your audio software. MIDIbots allows you again to intercept those messages, reformat them, and pass them along to your audio playback software.
MIDIbots is unique in that at its core youll find a Lua Virtual Machine; a small yet lightning-fast scripting language like Java that is used by most video game companies (f.ex. LucasArts and Microsoft). Lua scripts are simple text files that are compiled on the fly; you can actually edit them while MIDIbots is running and just press the refresh button. Each little Lua script function is called a MIDI "bot" (robot) because it usually handles a simple function.
In addition to being able to remove, modify and duplicate MIDI messages there are functions for:
- On-Screen Display (OSD), i.e. a transparent text string that floats above all other windows (like the channel# on a television)
- reading RGB pixels from open windows, to determine button states of a softwares graphical user interface
- sending virtual mouse move & mouse clicks to use features that aren't available with MIDI
- playing WAV files for user feedback
- getting a laptops power supply state (AC/Battery, minutes & percentage left)
- auto-repeat of MIDI codes (like auto-repeat on a PC keyboard) with optional dead zone (f.ex. for the DM2 joystick)
MIDIbots currently runs only Windows
(*)To intercept and re-route MIDI messages you usually need to install a software MIDI loopback virtual device such as http://www.midiox.com/myoke.htm