diff --git a/src/commonMain/kotlin/nl/astraeus/vst/MidiMessageHandler.kt b/src/commonMain/kotlin/nl/astraeus/vst/MidiMessageHandler.kt new file mode 100644 index 0000000..d35bef4 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/vst/MidiMessageHandler.kt @@ -0,0 +1,16 @@ +package nl.astraeus.vst + +typealias MidiHandler = (Byte, Byte, Byte) -> Unit + +object MidiMessageHandler { + val handlers = mutableMapOf>() + + fun addHandler(byte1: Byte, byte2: Byte = 0, handler: MidiHandler) { + handlers.getOrPut(byte1) { mutableMapOf() }[byte2] = handler + } + + fun handle(byte1: Byte, byte2: Byte, byte3: Byte) { + handlers[byte1]?.get(byte2)?.invoke(byte1, byte2, byte3) + } + +}