The MIDI router

2024/06/21

If you have ever played around with audio synthesizers you will probably have heard about MIDI: Music Instrument Digital Interface. As the name suggests, it is a digital interface for music instruments. It allows you to send various messages between various instruments. You can use this to control audio equipment. For example, if you send note information to a synthesizer, it will play those notes as if someone was playing it’s keyboard. Obviously it only works on compatible instruments that can be controlled via an electrical interface. This usually means synthesizers, but there are also organs and percussion instruments that can be controlled via MIDI.

The 5-pin DIN connector commonly used for MIDI

The most common form of MIDI ports on synthesizers.

The protocol was originally developed in 1982 and it is very minimalistic. It’s implemented as a one-way serial communication port and devices can have a MIDI input, output and a ’thru’ port. The input accepts MIDI data and the device is free to do with it as it pleases. The output port sends commands to other devices its connected to, for example when you play the keyboard or change some values. The ’thru’ port just copies everything from the input.

Limitations

Now, this protocol is not the most advanced and it certainly does not allow you to do really fancy stuff right out of the box. It really depends on how much the audio equipment itself lets you configure it. For example, imagine you have a bit larger keyboard. You have a lot of keys, wouldn’t it be nice if you could use half of them to control one synthesizer, and the other half to control a different one? That is not possible unless you have equipment with a very advanced MIDI interface.

The goal

Now, there is nothing that stops equipment manufacturers from adding these functions to their products; It is just very costly to do so. But, since the communication protocol is very simply and only one-way (simplex) there is nothing that stops us from adding equipment in between which is able to do advanced routing and mapping. So that is what I’m proposing:

I want to make a device with multiple MIDI in- and outputs which is able to accept and send out MIDI data according to user-defined filter and mapping rules.

>> Home