OK I've done a basic experiment using Dante as the audio transport and macOS network MIDI as the MIDI transport. Within the confines of the experiment (a couple channels) it works perfectly with no discernible latency. There's a number of pieces to put together, I'll sketch it out.
Setup
- Setup Dante network.
- I have 32 channels of hardware Dante on the slave side, but I need 44 for a standard orchestra (24 instruments in stereo). I could go mono but decided to just DVS (Dante Virtual Soundcard) on both ends with 64 channels total. My network is configured properly with QoS on the switches.
- Just use Dante Controller to hook the outputs of the slave channels to the inputs of the controller/main computer
- Setup the MIDI network channel
- Go into Audio MIDI setup network panel and set up network MIDI channels. I need 24 so I created two sessions (16 MIDI channels per session) on both computers, then just had them connect to each other.
- Setup the VI server.
- There are articles on how to do this in Logic. One problem, Logic really likes to have a single audio interface, and a single document open at a time. With this I need AVS to be the audio device - not my hardware interface I normally use. Plus I didn't want this to interfere with the work I do on the 'slave' (it's really a slave to the other computer since it has the VI's, but I do most of my work on it).
- Setup MainStage 3. Neat solution, MainStage supports setting the audio interface per document, unlike Logic, and is better with multiple documents open.
- Create a new MainStage session, get rid of the junk in there, then create a bunch of "Keyboards" in the layout, but assign each one of them to one of the MIDI channels from the two network MIDI interfaces created earlier.
- Then add channel strips for each instrument (piccolo, flute, ...), and set them up to have MIDI input from each of the 'keyboard' objects.
- So basically piccolo takes your first network MIDI session channel 1 as it's input, flute takes the first session channel 2, etc.
- Then just route their respective outputs to AVS channels (1-2, 3-4, etc).
- Setup the master computer
- This is in logic. Put down a bunch of "External MIDI" instruments. Route the MIDI to the network MIDI channels (piccolo goes to first interface channel 1, etc). Audio output goes to whatever you usually have.
Latency
I have three managed switches between the two computers which is the maximum recommended from Audinate
- AVS
- allows for a minimum latency of 4mS
- In Dante that means it's the maximum latency, you can get better than that
- Logic
- 32 I/O buffer gives some glitches
- 64 is glitch free in my basic testing with a roundtrip of 9mS
- Dante
- Dante Controller normally gives you actual latencies per connection/device, but it's not pulling it in for some reason. Something to investigate, I've gotten this before
- Network MIDI
- Audio MIDI Setup is reporting 0 latency but I don't know if that's real
Done! I only set up a few because to get the templates worked out will take some time as it's a lot of repetitive setting of stuff, but it can obviously be saved to a template. Best is I can leave MainStage up all the time, it won't interfere with the Logic work on that computer, and then on my other computer now I can get some work done and stream all my samples from the computer which has them.
Of course as said earlier this all could be done with VEP, but I'm already a Dante studio and like to stay with that if I can. I will go ahead and flesh out a full orchestra to see how it works with 44 channels of audio streaming with 24 channels of MIDI.