midiHost turns a Raspberry Pi 2 with a small PiTFT screen and four buttons into a standalone USB MIDI host. My Akai MPK mini Play can then play other instruments without a computer in between.
Incoming MIDI events go through a chain of filters before they are sent on: transpose, channel mapping, controller mapping and pressure to CC. Two targets are set up:
- A Novation Circuit gets notes on channel 1 or 2, one channel per synth.
- A Korg Kaossilator Pro+ gets a custom filter that turns notes into positions on its XY pad. X comes from the note and Y from a knob on the keyboard.
The interface is text-mode on the little screen, and the four buttons switch modes. The code is based on the filter example from python-rtmidi.