Sound / 07
Audio Units
Load AUv3 instruments, route sequenced or live MIDI, synchronize plug-in tempo, choose the compatible host path, map parameters, and preserve patches with the project.
How AU routing works
GlassTracker does not add an iOS-only AU instrument type to the portable project. A Phrase uses a normal tracker MIDI instrument:
The MIDI instrument’s DEST field chooses All, MIDI Out, AU Rack, or Inserts. Use AU Rack when a channel should drive hosted instruments without also playing external gear. All is the compatibility default for older projects.
The iOS sidecar remembers the loaded component, both channel choices, patch state, bypass, Output Trim, Compatibility mode, timing options, and CC maps.
Add and play an AUv3 instrument
- Install an AUv3 instrument app. Launch it once if it requires first-run setup.
- Open Project → AU Rack or Mixer → AU Rack.
- Select add instrument, then search by vendor or plug-in name.
- Wait for the slot to finish loading and select its plug-in name to choose a known audible patch.
- Select Create to create a new tracker MIDI instrument for the slot, or configure one manually.
- Set the MIDI instrument’s DEST to AU Rack or All.
- Enter a Phrase note using that MIDI instrument and press PLAY.
PLAY starts and stops the song from the rack and its pickers, so routing and patches can be tested without leaving the page.


LISTENS ON and DELIVERS AS
Select a slot’s CH badge to edit two different channel decisions:
| Mode | Meaning | Typical setting |
|---|---|---|
| LISTENS ON | Which tracker or incoming MIDI channel selects this rack instance. | Match the MIDI instrument’s Channel. |
| DELIVERS AS | The channel byte that the selected plug-in actually receives. | 1 for most isolated AU instruments. |
| AS ROUTED | Pass the original listening channel through unchanged. | Multitimbral units, channel-10 drums, or 16-part instruments. |
More than one slot may LISTEN ON the same channel. That intentionally layers the instruments. Changing either channel releases held notes and discards old scheduled events before the new route becomes active.
Rack slot controls
| Control | Purpose |
|---|---|
| CH | Edit LISTENS ON and DELIVERS AS routing. |
| Plug-in name | Open the AU’s custom editor. Dismissing it snapshots document state. |
| Map | Map tracker MIDI CC numbers to AU parameters. |
| Create | Create a new tracker MIDI instrument in the next free bank slot for this listening channel. |
| Bypass | Stop MIDI delivery and silence held notes without removing saved state. |
| Remove | Detach the unit and remove the active slot assignment. |
| Output Trim | Return trim from mute through −48…+18 dB. 0 dB is calibrated unity. Use ENTER+left/right for 0.5 dB and ENTER+up/down for 3 dB changes. |
| Latency badge | The latency reported by the AU. Automatic PDC uses this value and the rest of the live route. |
| Compatibility | Off retains the Standard AUv3 UI/state instance; On reinstantiates the component with raw Audio Unit ownership. Both are explicitly rendered by GlassTracker. |
| Advanced Options | Shows MIDI Nudge and MIDI Clock. Hiding the controls does not change their saved values. |
| MIDI Nudge | ±50 ms correction for latency the AU does not report. Positive values schedule that slot earlier. PDC ONLY means zero manual adjustment. |
| MIDI Clock | Opt-in Start/Stop and render-synchronized 24-PPQN clock for this slot only. Off by default. |
Opening plug-in editors
Every plug-in editor is presented in landscape inside the screen's safe area, so controls stay clear of the camera cutout and rounded corners. Choose Done to close it and return to the screen you were using.
- Select a loaded rack slot's plug-in name, or an insert's editor control, to open that Audio Unit directly.
- Hold ALT by itself for about half a second to open a project-local quick picker. It lists only the rack instruments and effects currently loaded in the open project. Selecting one opens its editor; closing it returns to the original tracker or native screen.
- For shortcuts that work across projects, open Device → AU UI Shortcuts. Add a generic location such as Rack 1, Channel 2 · FX 1, or Master · FX 1, then learn a QWERTY key or chord and/or a MIDI CC or note.
- A shortcut targets the location rather than a particular plug-in. Rack 1 therefore controls whichever Audio Unit the current project has in Rack 1. The mapping is stored on this device, not in a project.
- Trigger the same mapping again to close its editor; trigger a different mapping to switch editors. A mapped key takes precedence over the normal hardware-keyboard action, and mapped MIDI is consumed rather than also playing a note or changing a parameter.
- MIDI Learn and MIDI editor shortcuts require Receive MIDI under Device → MIDI Input.
Compatibility hosting
Most instruments should remain on Compatibility Off — Standard host. Standard keeps the AUv3 wrapper for the plug-in’s editor, presets, parameters, and saved state while GlassTracker explicitly renders its Audio Unit. If a plug-in is still silent or behaves incorrectly, Compatibility On reinstantiates it with lower-level raw Audio Unit ownership.
| Setting | Host path | When to use it |
|---|---|---|
| Off | Standard AUv3 UI/state instance, explicitly rendered through GlassTracker’s source node | Default; use for conforming AUv3 instruments. |
| On | Separately instantiated raw Audio Unit, explicitly rendered through GlassTracker’s source node | Use when the Standard ownership path is demonstrably incompatible. |
There is no dependable AU capability flag that identifies the required path, so this is an explicit per-slot choice rather than a hardcoded vendor list. The current host has produced working AudioKit Nerd Synth, King of FM, and Super J8 device results; Super J8 is no longer on the unsupported-plugin list. GlassTracker still does not choose a host for an entire vendor.
Switching paths preserves routing, Output Trim, bypass, timing options, CC maps, and the latest serializable document state. Save an important preset first because the AU itself still controls how completely its state survives reinstantiation.
Tempo, transport, and internal sequencers
Every hosted instrument and effect receives Apple musical-context and transport callbacks: current project tempo, quarter-note beat position, 4/4 time signature, and moving/stopped state. Play, Stop, tempo changes, and graph rebases are published against the audible render timeline, not a UI timer.
The live graph asks for 48 kHz and pins the sample rate actually granted at boot—normally 48 kHz on a modern iOS device. The tracker render quantum, hosted AUs, MIDI timestamps, and PDC use that one rate. Project WAV assets can still use the portable 44.1 kHz file format; file rate and live graph rate are different.
A tempo-aware AU should normally follow host context. Enabling a second wire-clock source can double-clock it or cause it to prefer the less appropriate source. Turn MIDI Clock on only when a specific plug-in ignores host context and you have verified that it requires 24 PPQN.
Some internal sequencers need a held trigger
An AU sequencer can be perfectly synchronized yet stop because its input gate closed. For a sustained trigger, set the tracker MIDI instrument’s Length to 00, place one note on the desired start row, and do not replace or stop it until the sequence should end. A bell patch may audibly decay even while MIDI remains held, so use the plug-in’s step display or a sustained test patch when diagnosing.
MIDI Nudge is not a tempo control
Nudge moves a consistently early or late onset on top of automatic PDC. It cannot change an internal sequencer’s note division, correct tempo drift, repair a free-running phase, or prevent a plug-in from resetting its own pattern. Keep it at PDC ONLY while testing tempo and transport lock.
CC mapping
A Phrase can send MCC aabb, where aa is the controller and bb is the 0–127 value. The rack map binds that controller to an AU parameter.
Parameters are alphabetized and searchable.
Enter a decimal CC such as 22, or explicit hexadecimal such as 0x16. Both forms are shown.
For CC 22 / 0x16, write MCC 16bb.
The map restores with the slot and follows a Standard/Compatibility switch when the AU exposes stable parameter identifiers.
MCC 1600 ; mapped parameter minimum
MCC 1640 ; value 64
MCC 167F ; mapped parameter maximum
Playing an AU from an external keyboard
- Open Device → MIDI Ports and enable the keyboard under Sources.
- Open Device → MIDI Input and turn Receive MIDI on.
- Set the keyboard’s incoming channel route to AU Rack or All.
- Set the AU slot to LISTEN ON that channel.
- Leave DELIVERS AS on 1 unless the plug-in requires another channel.
Live AU input is delivered immediately rather than quantized. Routed CC, Program Change, pressure, and pitch bend messages reach hosted plug-ins as well as notes.
Patches and project restore
GlassTracker captures AU document state when the editor closes, the project saves, the app backgrounds, or the rack explicitly persists. Large state blobs spill to bounded files instead of bloating the sidecar JSON.
- Save after choosing an important patch, then force-quit and reopen once to verify that AU’s restore behavior.
- Cold units are prepared during project load; AU-heavy projects can show Loading project audio for several seconds.
- A missing plug-in keeps its component identity, routing, and saved patch. Reinstall it and reload rather than removing the placeholder.
- An out-of-process AU crash receives bounded automatic reinstatement attempts with cached state.
- Rack and FX state commit as one staged transaction; an interrupted save leaves the prior generation available.
Tracker commands for AU instruments
ARPcycles relative note offsets;MCHadds chord notes.VELsets note velocity;VOLsends MIDI CC 7 volume.MCCsends CC and drives mapped AU parameters;MPCsends Program Change.PSLandLEGproduce MIDI pitch bend;RTGretriggers by ticks.DLYandMTTmove the entire Phrase row before its MIDI is scheduled.
If an AU is silent
- Confirm the slot is loaded, not bypassed, and Output Trim is audible.
- Confirm the Phrase references a MIDI instrument and its DEST includes AU Rack.
- Match the instrument Channel to LISTENS ON.
- Set DELIVERS AS to 1, disable Program Change, and select a known audible preset.
- Test one held note with Length
00. - Switch Compatibility On for that slot if Standard remains silent.
- Only then remove/re-add it, after saving or noting the preset.
Unsupported plug-ins and performance
Components with known host-level failures can be omitted from the pickers. Device → Unsupported Plugins shows the current list. The list describes GlassTracker’s current host, not whether the component works in another app.
- Establish one stable AU before adding layers and effects.
- Reduce polyphony, unison, oversampling, internal effects, and animated editors if the graph underruns.
- Use the Mixer PDC display and latency badges; add MIDI Nudge only for a repeatable unreported offset.
- Bypass or remove genuinely unused units. Loaded units still have graph and state-management cost.