I started this project with the hope of creating a way to make MIDI controllers easily interact with lights, fog machines, bubble machines, and all kinds of other devices. Essentially if you want to create a Rube Goldberg machine with MIDI this might be the right software for you!
This utility allows you to work with MIDI control change and note on/off messages from your controller (sliders, keys, pads and knobs), and associate unconventional rules with them. Game controllers supported by jInput are also available as input sources, and every button and analog input is remapped to a MIDI CC. This program is built with a focus on "short" messages, however it is a full functional MIDI Router as well when using the "Port Mappings" feature.

On the left hand side of the interface you will see a list labeled "MIDI Devices" this will show all detected MIDI Hardware and Game Controllers (as detected by jInput).
In the main part of the interface you will see 4 tabs, "Midi Controls", "Control Change Rules", "Port Mappings", "Logger A", and "Randomizer"
![]() |
Midi Controls This tab will display a list of all the Control Change inputs you are working with, if you are unsure of the mapping of your controlers knobs and inputs, select "Create Control on MIDI input" under the options menu. Once this option is selected any input from the controller will create a Control entry in the list. |
![]() |
Control Change Rules Actions to be performed when certain conditions are met, see "creating a rule" below |
![]() |
Port Mappings This allows you to create virtual mappings between MIDI ports, think of it like a patchbay. You can even use this to connect a game controller directly to a MIDI output (assuming you dont want to modify the messages) |
![]() |
Logger A This is one of two logger output panels for displaying messages or debugging your rules. |
![]() |
Randomizer This allows you to configure the randomizer midi device to produce randomized control change messages. (This tab is only availabe when the device is enabled) |
![]() |
Project Assets This allows you to Import resources such as images and sounds for use with your project. Upon saving these files will be stored inside your project file. |
![]() |
RTP 0.0.0.0 This allows you to control RTP connections for Apple's network MIDI protocol, a tab will appear when the RTP device is opened. |
"Rules" are a way to trigger an action under certain types of MIDI input. For instance if you would like to trigger a sound, run a script or call an API when the mod wheel is moved or any knobs are adjusted. In order to create a rule right-click or double click on the control listed in the "MIDI Controls" tab, then click "create rule"

CALL URL - Make a request to a URL (response is ignored)
RUN PROGRAM - Execute a program or shell script
PLAY SOUND - Play a wav file
PLUGIN - Send message to a plugin
TRANSMIT CONTROL CHANGE - Send a control change Message
ENABLE RULE GROUP - Enable a group of rules
DISABLE RULE GROUP - Disable a group of rules
TOGGLE RULE GROUP - Toggle a group of rules, if the value >= 64 the group is enabled otherwise its disabled.
LOGGER A MESSAGE - Add some text to Logger A
LOGGER B MESSAGE - Add some text to Logger B
EFFECT IMAGE - Change the effects on an image and brings it visible on the canvas
MAPPING ENABLE - Enable a Port Mapping
MAPPING DISABLE - Disable a Port Mapping
MAPPING TOGGLE - Toggle a Port Mapping, if the value >= 64 the mapping is enabled otherwise its disabled.Once you've set all the parameters for your rule. Just click "Create Rule" you can go back and edit a rule at any time just by clicking on it (rules are listed at the bottom of the interface)
Latest Update: November 20 2024 02:09:07 PM EST
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.