This tool acts as a helper between Midi and OSC. It allows you to receive OSC data and forward them to a Midi-device and/or (yes, simultaneously) vice versa. I somewhat accidentally discovered that you can use this tool to also transmit Midi data over network (over OSC). It’s based on openFrameworks. It works on Mac, Windows and probably on a Raspberry Pi. Source code and binaries for Mac and Windows are available on Github .
The program was created with a focus on using it together with VDMX but since OSC is rather universal there shouldn’t be (m)any problems using it in conjunction with other programs. Right now it supports Midi events for Note ON, Note OFF and Control Change. Message format is as follows:
Incoming Midi Note ON -> OSC: NoteOn/[Channel]/[Pitch] Value
Midi Note OFF -> OSC: NoteOn/[Channel]/[Pitch] 0
Midi Control Change -> OSC: ControlChange/[Channel]/[Controller] Value
Incoming OSC: NoteOn/[Channel]/[Pitch] Value -> Midi Note On with corresponding values.
OSC: NoteOff/[Channel]/[Pitch] Value -> Midi Note Off with corresponging values.
OSC: ControlChange/[Channel]/[Controller] Value -> Midi ControlChange with corresponging values.
Incoming Midi events can also be directly passed through.
Everything works mostly out of the box. Midi in- and outputs as well as the network can be selected via the program’s interface. Settings are automatically stored in an xml-file upon termination of the program. Default network ports for OSC are 1234 for outgoing data and 12345 for incoming data. You have to manually alter the xml file in order to change those.
The setup is pretty straightforward: attach a Midi-device to your computer and start the program.
The program’s interface consists of just a few parts (see below image):
1: Selects the port where Midi-data are coming in to the software. That’s probably your controller’s Midi Out
2: Selects the Midiport where incoming OSC data are sent to. This _can_ be your controller’s input or another Midi-device that is attached to your computer.
3: This is the Midi-Thru-port that mirrors Midi-signals coming in from 1)
4: The broadcast address of your network interface. If you have mutlitple network interfaces you can chose between them and 127.0.0.1
5: The log tells you about incoming and outgoing data.
The following setup converts Midi to OSC: The program receives data from a Launchkey Mini. Midi Out and Thru are disabled (because they are set to [none]) and normalized OSC data are sent out via 192.168.178.255 port 1234. The log-window in the lower half shows that something is happening.
The next configuration acts like the one above but additionally passes incoming Midi data thru to the “IAC-Treiber Bus 1”
the following configuration expects normalized OSC data via the network interface and routes them to the Midi port “IAC-Treiber Bus 1”. Incoming Midi data are not processed (because the input is set to [none]) and nothing is passed thru.
And now for the part I discovered purely by accident: Running this program on two different computers allows you to transmit Midi data over network via OSC. On the computer sending the data over the network you set the program to receive Midi data and pass them to OSC, outgoing port 1234. On the receiving computer you have to change the xml-file so that the receiving OSC port is set to ‘1234’. That’s basically all there is to say… it’s just too obvious. Nice little tool, I’d say.
Go ahead and clone, fork, do whatever you like with the software. Feel free to contact me if anything is left unclear.