This CLI application converts realtime MIDI IO to NDI metadata frames as specified here: sienna-tv.com midi over ndi
It has two modes:
- Receiving MIDI from a selectable NDI source and sending it to a virtual MIDI port using
teVirtualMIDI - Receiving MIDI from a MIDI device using
RtMidiand outputting it as NDI Metadata frames
midi_to_ndi --helpmidi_to_ndi -lmidi_to_ndi -r --ndi-source "NDI Source Name" --midi-output-name "NDI MIDI" the midi output name is optional and defaults to "NDI MIDI"
midi_to_ndi -t --midi-input "MIDI Port Name" --ndi-send-name "NDI MIDI"the ndi send name is optional and defaults to "NDI MIDI"
NDI Metadata frames are a way to send metadata over the network using the NDI protocol. They can theoretically contain any text data but it usually uses XML to structure the data.
The NDI Metadata frames used in this project are structured as follows:
<MIDI>E00040</MIDI>Where E00040 is the hexadecimal MIDI message to be sent.
the teVirtualMIDI driver needs to be installed on your system. This comes for example with loopMIDI: loopMIDI
The project is currently in a very early stage of development and might not work as expected.
- hardcoded windows NDI binaries: you might need to specify the path to the NDI dlls in
CMakeLists.txtdepending on your system - hardcoded winmm.lib in
CMakeLists.txt: For other platforms than Windows you might need to replace this with the appropriate library
- NDI SDK - needs to be installed on your system
- RtMidi - included in the source
- teVirtualMIDI SDK - needs to be installed on your system
- Boost program_options - install boost on your system or use vcpkg
The project uses CMake to build. You need to have the NDI SDK and teVirtualMIDI SDK installed on your system and the .lib files and .dll files set in CMakeLists.txt.
cmake -B build -S .cmake --build build --parallel --config Debug
call .\build\bin\Debug\midi_to_ndi.exeor
cmake --build build --parallel --config Release
call .\build\bin\Release\midi_to_ndi.exe