====== Controlling iOS/iPadOS Apps via MIDI ====== It can be confusing at first to understand how to control knobs and settings in apps using MIDI from a hardware controller or other MIDI source. Some apps accept direct midi in to control things, some expose "AUv3 Parameters", and some do both ... or neither. ===== Direct Control ===== If an app accepts MIDI CC's directly, you route MIDI directly to the app and it directs CC values to it's controls internally. Some apps have hard coded CC numbers for each control. Most often there is a way to map the CC numbers that you want to the controls though. How to set those up varies from app to app, but the general process is to engage "MIDI Learn", tap a control, then send a CC, which will then be registered to that control. **Advantages** * CC mappings to controls are usually remembered by the app and are portable between hosts. * MIDI routing is more intuitive. It's natural to think if you're controlling something with MIDI you'd route the MIDI directly to it. **Disadvantages** * CC values are limited to a range of 128 steps. That can result in "steppyness" that you can hear in the output. * A few hosts don't handle direct routing of CC's to, for instance, effect plugins. * Each app handles MIDI mapping differently so one has to learn the hard coded CCs or the mapping system for each. ===== AUv3 Parameter Control ===== AUv3 plugins generally offer a different way of control. The most important thing to understand about this is //the MIDI control is handled by the **host**.// Rather than routing MIDI CCs to the app, you route them to the //host's MIDI Control system//. Some apps controlled this way (generally FX) may not even have a way to route midi directly to them. **Advantages** * Much finer control is available. This doesn't matter so much when controlling from a MIDI source that's limited to 128 values, but can be helpful in hosts that provide LFOs and other automation. **Disadvantages** * Routing can seem less intuitive. CC's are routed to the host's MIDI Control system and the host then controls the app. For example, if you are playing notes from a controller and twisting knobs on it, you might expect to route everything to the same place. However, you would route the notes directly to the app and the CC's to the host MIDI control system. * Mappings are tied to only that host, and in some cases to only that session, resulting in potentially needing to do more setup and mapping than with direct CC control.