Nomad is actually an orchestrator.
Maestro is A MIDI task driver for HashiCorp Nomad that sends MIDI signals from .mid files to music software like Ableton Live.
Example demo video for our Nomad team Hack Week available here!
- Go v1.18 or later (to compile the plugin)
- Nomad v0.9+ (to run the plugin)
- MacOS (maybe it works on windows, idk)
- portmidi C lib to play the MIDI
(
brew install portmidi) - Virtual MIDI ports
- Some music software (e.g. Ableton Live)
- gomidi/midi has some neat tools available too.
$ make buildStart Nomad with the example agent config and set the plugin dir to where the binary is.
make build puts it in the current directory.
$ nomad agent -dev -config=./example/agent.hcl -plugin-dir=$(pwd)In my setup, each musical "part" needs these things:
- MIDI file
- virtual MIDI port
- track in your music software DAW that listens on that port (and be sure the track is armed)
- task in a job with the
"midi-portmidi"driver (seeexample/example.nomad.hcl) that connects all these things together.
I export my .mid files from Ableton, which only does single-channel files, hence all the separate ports.
You can generate them differently and take advantage of channels on one port, if you can work that out.
Have a look in example/ for various examples or whatever.
source example/funcy.sh for some helpful functions to run or stop different parts.
I'm pretty tired at the end of Hack Week, so I'm just gonna leave this here.
Good luck!