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:

PHRASEnote + MIDI instrument
CHANNEL + DESTrouting carried by the MIDI instrument
LISTENS ONrack slots selected by that channel
DELIVERS ASchannel byte received by the plug-in

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

  1. Install an AUv3 instrument app. Launch it once if it requires first-run setup.
  2. Open Project → AU Rack or Mixer → AU Rack.
  3. Select add instrument, then search by vendor or plug-in name.
  4. Wait for the slot to finish loading and select its plug-in name to choose a known audible patch.
  5. Select Create to create a new tracker MIDI instrument for the slot, or configure one manually.
  6. Set the MIDI instrument’s DEST to AU Rack or All.
  7. 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.

GlassTracker AU Rack
AU Rack. Each slot has routing, editor, map, tracker-instrument creation, bypass, removal, output, timing, clock, and Compatibility controls.
GlassTracker Add Instrument Audio Unit picker
Add Instrument. Installed AUv3 instruments are grouped by vendor and searchable.

LISTENS ON and DELIVERS AS

Select a slot’s CH badge to edit two different channel decisions:

ModeMeaningTypical setting
LISTENS ONWhich tracker or incoming MIDI channel selects this rack instance.Match the MIDI instrument’s Channel.
DELIVERS ASThe channel byte that the selected plug-in actually receives.1 for most isolated AU instruments.
AS ROUTEDPass 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

ControlPurpose
CHEdit LISTENS ON and DELIVERS AS routing.
Plug-in nameOpen the AU’s custom editor. Dismissing it snapshots document state.
MapMap tracker MIDI CC numbers to AU parameters.
CreateCreate a new tracker MIDI instrument in the next free bank slot for this listening channel.
BypassStop MIDI delivery and silence held notes without removing saved state.
RemoveDetach the unit and remove the active slot assignment.
Output TrimReturn 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 badgeThe latency reported by the AU. Automatic PDC uses this value and the rest of the live route.
CompatibilityOff retains the Standard AUv3 UI/state instance; On reinstantiates the component with raw Audio Unit ownership. Both are explicitly rendered by GlassTracker.
Advanced OptionsShows 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 ClockOpt-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.

SettingHost pathWhen to use it
OffStandard AUv3 UI/state instance, explicitly rendered through GlassTracker’s source nodeDefault; use for conforming AUv3 instruments.
OnSeparately instantiated raw Audio Unit, explicitly rendered through GlassTracker’s source nodeUse 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.

Start with MIDI Clock off

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.

01
Open Map.

Parameters are alphabetized and searchable.

02
Select a parameter.

Enter a decimal CC such as 22, or explicit hexadecimal such as 0x16. Both forms are shown.

03
Write MCC in hex.

For CC 22 / 0x16, write MCC 16bb.

04
Save.

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

  1. Open Device → MIDI Ports and enable the keyboard under Sources.
  2. Open Device → MIDI Input and turn Receive MIDI on.
  3. Set the keyboard’s incoming channel route to AU Rack or All.
  4. Set the AU slot to LISTEN ON that channel.
  5. 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

  • ARP cycles relative note offsets; MCH adds chord notes.
  • VEL sets note velocity; VOL sends MIDI CC 7 volume.
  • MCC sends CC and drives mapped AU parameters; MPC sends Program Change.
  • PSL and LEG produce MIDI pitch bend; RTG retriggers by ticks.
  • DLY and MTT move the entire Phrase row before its MIDI is scheduled.

If an AU is silent

  1. Confirm the slot is loaded, not bypassed, and Output Trim is audible.
  2. Confirm the Phrase references a MIDI instrument and its DEST includes AU Rack.
  3. Match the instrument Channel to LISTENS ON.
  4. Set DELIVERS AS to 1, disable Program Change, and select a known audible preset.
  5. Test one held note with Length 00.
  6. Switch Compatibility On for that slot if Standard remains silent.
  7. 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.