playground:ios_core_midi_connections_explained

This is an old revision of the document!


iOS MIDI Connections Explained

It can be confusing understanding how to connect apps via MIDI in iOS. This article attempts to explain the concepts, common misconceptions, and troubleshooting techniques. The article is mainly focused on connections between apps, but also has a section about MIDI concepts within some common hosts.

Core MIDI is Apple’s name for its MIDI routing mechanism. Understanding certain concepts about Core MIDI can go a long way toward understanding how to connect things.

There are multiple types of connections to consider, each with their own concepts.

  • App to App
  • Hardware
  • Network
  • BlueTooth

App to App

Virtual Ports
App Source vs. Destination

Ignoring hardware, BlueTooth, and the Network Session for now, there are multiple ways apps can receive MIDI from other apps.

  1. Select which app(s) to listen to
    In the MIDI settings apps that work this way, there should be a list of apps currently advertising themselves, from which you can select one or more apps to listen to. Some apps allow multiple selections, some don’t. Some show only currently running apps, and some remember apps whether they’re running or not.
  2. Listen for any incoming MIDI directed to them
    These apps generally advertise their “destination” virtual ports so that apps can select to send to them. To connect this way, go to the sending app MIDI settings and select the app you want to send to.
  3. Listen to all MIDI Input
    This one is bad. The app listens for any MIDI input that isn’t directed to a particular receiving app. Since hardware controllers have no way of selecting to which app they send, MIDI from any hardware will be picked up by such apps. Some make it even worse by not even providing a MIDI channel selector. Korg Module is an infamous example of this. It will pick up any and all hardware MIDI input and there’s nothing that can be done to overcome this.
  4. Combinations of the above
    Yes, sometimes apps can do it more than one way. For instance, in AUM, one can select an external app to listen to, or one can select “AUM Destination” to listen to. More on this later.

Apps can send MIDI to other apps in a few ways too.

  1. Select which apps to send MIDI to
    In the MIDI settings for there should be a list of app ports to send to. These apps are advertising their virtual destination ports. Some sender apps will allow multiple destination selections, some will not.
  2. Send all MIDI out on the app’s own virtual MIDI port
    Such apps may not have a MIDI output setting at all. Instead, they will show up in the available MIDI inputs list of apps that work that way (see #1 above).

Hardware

BlueTooth

Network Session

Certain things about Core MIDI are unintuitive (to some people). Getting past these also helps to reduce problems.

  • playground/ios_core_midi_connections_explained.1557702641.txt.gz
  • Last modified: 2019/05/13 09:10
  • by wim