Skip to content

MindStudioOfficial/midi_to_ndi

Repository files navigation

WIP: MIDI to NDI converter

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 RtMidi and outputting it as NDI Metadata frames

Usage

midi_to_ndi --help

List MIDI Inputs and NDI Sources

midi_to_ndi -l

Receive MIDI from NDI Source and send it to Virtual MIDI Port

midi_to_ndi -r --ndi-source "NDI Source Name" --midi-output-name "NDI MIDI" 

the midi output name is optional and defaults to "NDI MIDI"

Transmit MIDI from MIDI Device as NDI Metadata Frames

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

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.

Requirements

the teVirtualMIDI driver needs to be installed on your system. This comes for example with loopMIDI: loopMIDI

Current state of development

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.txt depending on your system
  • hardcoded winmm.lib in CMakeLists.txt: For other platforms than Windows you might need to replace this with the appropriate library

Dependencies

Building

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.exe

or

cmake --build build --parallel --config Release

call .\build\bin\Release\midi_to_ndi.exe

About

convert realtime MIDI data to NDI® Metadata frames and back

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages