aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md42
1 files changed, 42 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5fbec65
--- /dev/null
+++ b/README.md
@@ -0,0 +1,42 @@
+# 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.