gitmyhub

MIDImsst

C ★ 0 updated 23d ago

A single-keyboard two-hand MIDI router designed for 61-key keyboards. Routes one MIDI keyboard to two independent voices (left hand / right hand) with support for keyboard splitting, transposition, preset memories, and a real-time Shift control mode.

A C utility that splits one 61-key MIDI keyboard into independent left-hand and right-hand voices.

CALSAWinMMMinGWsetup: moderatecomplexity 3/5

MIDImsst is a small MIDI routing utility written in C that turns a single 61-key keyboard into a two-handed instrument. It takes the incoming MIDI signal from one physical keyboard and splits it so the left hand and right hand each control a separate voice, sent out on their own independent MIDI channel, similar to how a home organ or arranger keyboard can play two different sounds from one keyboard.

The split point between the two hands is adjustable, and each hand can be transposed independently by up to three octaves in either direction, in semitone steps. A special Shift mode is built in: holding down the highest C key on the keyboard switches the device into a control mode where other keys, instead of playing notes, adjust settings like the split point, channel assignment, and transposition in real time. While in this mode, all messages are sent on channel 16 so a connected DAW can pick them up as control signals rather than notes. Three preset configurations are stored and can be recalled instantly, including the factory defaults, and a sustain pedal can be simulated with the left mouse button on Windows, with a switch for positive or negative pedal polarity.

By default the right hand outputs on channel 4 and the left hand on channel 10, with no split point set, meaning the whole keyboard plays as the right hand voice until a split is configured.

The project builds natively on Linux, where it needs the ALSA sound library, and can be cross-compiled from Linux for 32-bit or 64-bit Windows, or compiled natively on Windows with MinGW. The code separates the platform-independent MIDI routing logic from the operating system specific parts, so support for a new platform only requires writing a new file that implements the audio callback rather than changing the core logic.

No license is stated in the README.

Where it fits