Maestro
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!
Requirements
- 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.
Building the Plugin
$ make build
Deploying Driver Plugins in Nomad
Start 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)
Configuring your machine
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 (see example/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.
Running tasks
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!