# MIDI Multicast Broadcast and synthesise MIDI over UDP. The advantage of a connectionless protocol is that multiple servers and clients are easily supported, and the clients can be started while the servers are off. ## Development Run `nix develop` for a development environment. Inside it, run `make`. `src` must point to the source code, and `out` must point to where the build artefacts should be placed. For example: ```sh make src=. out=bin ``` ## Compilation Run `nix build`. ## Options Options are passed through environment variables. ### Common - `MCAST_GROUP`: The UDP multicast address. - `MCAST_PORT`: The UDP multicast port. - `DEBUG`: Increase verbosity. ### Client - `RELAY_DELAY`: The intended delay in milliseconds between the time a message is sent and played. Increasing it reduces stuttering but increases latency. Both the client and server should have synchronised clocks. - `SOUNDFONT`: The path to the sound font for synthesis. ### Server - `MIDI_IN`: The name of the MIDI input in ALSA.