On iOS MIDI routing can be a bit confusing when it comes to routing between apps. Here's a quick guide:
When using MIDI hardware it's usually straightforward. The hardware will show up in the sources/destinations section probably named with something very similar to the model or brand of MIDI hardware.
Network MIDI is like hardware MIDI but with the added complication that you need to establish the network MIDI connection. If you just choose "Network Session 1" as a MIDI source/destination, it won't work. You'll also need to connect your device. There are a few ways to do this, but the easiest on OSX is to open Audio MIDI Setup, go to the Network MIDI section then select your device and click Connect.
Network MIDI can also suffer from latency issues depending on your WIFI setup. Sometimes you can have a great connection and the built-in latency compensation is enough to deliver a pretty solid clock, but that's not always the case!
Virtual (inter-app) MIDI
This is where you have to be careful because there are often two ways to make a connection between a sender and receiver app. To use a real-world analogy, either:
- the sending app can expose a MIDI socket and the other app can plug itself into that socket; or
- the receiving app app can expose a MIDI socket and the sending app can plug itself in!
In MIDI » Link mode, from the sending app you need to either send the clock to "MIDI Link Sync IN" or to the apps virtual MIDI. In MIDI Link Sync, you should correspondingly select either "MIDI Link Sync IN" or the apps virtual MIDI, probably named after the app itself.
In Link » MIDI mode, from MIDI Link Sync you need to either send the clock to "MIDI Link Sync OUT" or to the receiving apps virtual MIDI. In the receiving app's MIDI clock source, you should correspondingly select either "MIDI Link Sync OUT" or the apps virtual MIDI.