explaingit

imzzdenis/midimsst

Analysis updated 2026-05-18

0CAudience · generalComplexity · 3/5Setup · moderate

TLDR

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

Mindmap

mindmap
  root((MIDImsst))
    What it does
      Splits one keyboard
      Two hand voices
      Real time transposition
    Tech stack
      C
      ALSA on Linux
      WinMM on Windows
    Use cases
      Play two sounds from one keyboard
      DAW control via Shift mode
      Recall preset configurations
    Audience
      Musicians
      Home keyboard players
      Hobbyist developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Turn a single 61-key keyboard into a two-voice instrument for left and right hand parts.

USE CASE 2

Route left and right hand notes to separate MIDI channels for a synth or sound module.

USE CASE 3

Send real-time control changes to a DAW using the Shift key control mode.

USE CASE 4

Save and recall preset channel, split, and transposition setups with one key press.

What is it built with?

CALSAWinMMMinGW

How does it compare?

imzzdenis/midimsstac000/find-flvacc4github/kdenlive-omnifade
Stars00
LanguageCCC
Last pushed2013-04-05
MaintenanceDormant
Setup difficultymoderatemoderatemoderate
Complexity3/52/52/5
Audiencegeneraldevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires a C toolchain and, on Linux, the libasound2-dev package to build.

No license terms are stated in the README.

In plain English

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.

Copy-paste prompts

Prompt 1
Explain how the Shift control mode works and how to change the split point using it.
Prompt 2
Help me build MIDImsst on Linux and list the required ALSA dependencies.
Prompt 3
Walk me through cross-compiling this project from Linux for 64-bit Windows.
Prompt 4
Show me how to add support for a new platform by writing a platform_*.c file.

Frequently asked questions

What is midimsst?

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

What language is midimsst written in?

Mainly C. The stack also includes C, ALSA, WinMM.

What license does midimsst use?

No license terms are stated in the README.

How hard is midimsst to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is midimsst for?

Mainly general.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.