latest version

Table of Contents


is a free programmable UNIX command-line tool for Mac OSX 10.4 and 10.5 (Tiger/Leopard intel or ppc) to execute any shell command (a script [Shell, Ruby, Perl, Java, AppleScript, Python, etc.], an UNIX command [open, say, etc.]) triggered by any MIDI event sent by a MIDI device. In other words MIDImyAPP can not only control other music devices but also other applications on your Mac.

For instance you can remote GarageBand:

or to play/stop a sound file, to set the output volume of the Mac, or open an other application, or change the face of the selected word in your text editor to bold by a single MIDI event (programmable keyboard).

MIDImyAPP rescans the MIDI configuration for each change on the global MIDI settings automatically.

MIDImyAPP is written in Carbon-C++ entirely to decrease the latency time as much as possible. For live performances it is recommended to use at least a double-core Intel Mac with 2GHz.

Hint: Each AppleScript as shell command which begins with tell app will be executed internally to speed up the execution.

1 Installation

Simply download and decompress the ZIP archive to any location on your Mac.

download MIDImyAPP (100kB)

2 Usage

2.1 Start

MIDImyAPP is an UNIX shell command which runs in the Terminal.

An other option to start MIDImyAPP is to double-click at startMIDImyAPP from Finder.

If there is the need to run MIDImyAPP in the background you can double-click at startMIDImyAPPBG and close the Terminal afterwards. To stop MIDImyAPP double-click at stopMIDImyAPP

Once you invoked MIDImyAPP (not hidden) you should see the sent MIDI events in the Terminal window (a kind of MIDIlogger).

2.2 Configuration

2.2.1 General Remarks

Inside the MIDImyAPP folder there is a default configuration file called config.plist. This file is a standard Mac Property List file (plist) which can be edited with the “Property List Editor”. Simply double-click at it and the editor starts.

The internal structure is quite simple:

If you open it in a text editor you will see:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <key>THE MIDI EVENT</key>
    <string>SHELL COMMAND</string>


2.2.2 Coding General Workflow for static MIDI events: General Workflow for MIDI events passing a variable:

If you press for instance a key the velocity is passed as variable (last byte), if you control a slider, drawbar, or knob the actual value is passed as variable. To ignore or use that variable follow this workflow:

2.2.3 Examples

Hint Have a look at the config.plist shipped with MIDImyAPP for further examples.

2.2.4 The usage of other configuration files

The configuration file config.plist will be used as default. MIDImyAPP accepts the option -p FILE to load an other configuration file. To use for instance the configuration file “My first gig.plist” located on the Desktop start MIDImyAPP from Terminal via:

./MIDImyAPP -p "$HOME/Desktop/My first gig.plist"

2.2.5 execMode

It is possible to use MIDImyAPP as slave to send each MIDI event to an other script or file. In that mode MIDImyAPP does not make usage of a configuration file.


2.3 Runtime Commands

The following runtime commands are available:

3 Author

     Hans-Jörg Bibiko   mail@bibiko.de, bibiko@eva.mpg.de

4 Copyright Notes

MIDImyAPP is totally free. The only condition is to give feedback about usability, bugs, suggestions, etc.

5 Release Notes

6 Appendix

6.1 play / stop utility

Inside the MIDImyAPP folder there are two tiny command-line utilities play and stop.

6.2 scpt Folder

In that folder you find some useful AppleScripts for controlling “GarageBand” and others.