Companion App (Mac / iPad / iPhone)
The Track8 companion app runs the same firmware as the hardware natively on iPad, iPhone and Apple-silicon Macs. The device image is a fully working control surface — tap the buttons, drag up or down on an encoder to turn it, tap or briefly touch an encoder to push it (a touch that did not turn the encoder is a push when you lift the finger), and rest a finger on an encoder for two seconds to open MIDI Learn for it, as on the hardware — and the screen in the middle is the real Track8 UI, rendered live. Multi-channel interfaces and AUv3 plugins are wired in through the same mapping pages as on the hardware (see Plugins below).
Three touch buttons live in the corners of the window, outside the device:
| Corner | Button | What it does |
|---|---|---|
| bottom-left | ⓘ | Info overlay: labels every encoder and button with what it does on the current screen (hold SHIFT to see the shifted actions) |
| top-left | ⤢ | Zoom: the window shows only the device panel — encoders, screen, track buttons and the button grid — as large as the window allows (since v1.2.3) |
| bottom-right | 🎨 | Theme editor (below) |
Only one of ⓘ and 🎨 can be open at a time, and neither is available while zoomed (their panels sit on the wood the zoom crops away); tapping ⤢ closes them. The zoom setting is remembered.
MIDI Control — MIDI Learn, the DEVICE and CONTROL
screens, device profiles — works in the app with any CoreMIDI source: USB
controllers, Bluetooth MIDI, network sessions (since
v1.2.3).
The DEVICE screen lists the sources the iPad or Mac sees; flag a controller
as CTRL there exactly as on the hardware, and its CCs and notes drive the
mappings instead of being recorded. There is no DIN row in the app.
MIDI Sync works in the app as on the
hardware (since
v1.2.4-SNAPSHOT):
as MASTER it sends MIDI clock, Start / Continue / Stop and Song Position
(or MTC) to every CoreMIDI destination, as SLAVE it follows clock,
transport and Song Position from any CoreMIDI source, USB or Bluetooth,
with the same UTILITY → MIDI settings. Clock and notes leave the app
timed against the audio they belong to, so a sequencer on the other end
hears a steady clock whatever the screen is doing. MTC as slave takes
quarter frames only (no full-frame locate over Bluetooth).
The app also appears as a MIDI device of its own, Track8, to other apps
and MIDI routers such as midiMittr or AUM (since
v1.2.4-SNAPSHOT):
subscribe to its source to get its clock, transport and MIDI tracks, send
to its destination to play or record into it, or sync a synth app to it.
That is for app-to-app routing only. Hardware needs no routing: Track8
reads every MIDI source and sends to every destination by itself, so
routing a USB or Bluetooth device to or from Track8 in a router would
deliver its messages twice. What apps send to the destination shows on the
DEVICE screen as the Track8 (apps) port, which can be flagged as a
control surface like any other.
What goes where follows the DEVICE screen exactly as on the hardware (since v1.2.4-SNAPSHOT):
a device flagged CTRL gets none of Track8’s MIDI (no clock, no notes,
no thru), a device flagged IGNORE is neither sent to nor heard, its clock
and transport included, a MACKIE surface gets only its own feedback, and
a device flagged MPE gets only the tracks that play into it.
Mackie Control surfaces work in the app as
on the hardware, over USB or Bluetooth: buttons, faders, knobs, motor
faders, LEDs and displays. MPE works
in the app as on the hardware, over USB, Bluetooth or to other apps: flag
the controller’s port MPE and its notes are recorded with their bend,
pressure and timbre; turn a track’s CHANNEL encoder past 16 to the
device and the track plays into it, one channel per note. For an MPE synth
app, or an MPE instrument hosted in AUM, the app publishes a second MIDI
device, Track8 MPE: subscribe the synth to its source, and pick
MPE Track8 on the track. It shows on the DEVICE screen as
Track8 MPE (apps) and is flagged MPE from the start.
Recording MIDI in the app follows the hardware too (since v1.2.4-SNAPSHOT): pitch
bend and pressure are recorded, REC OFFSET and record quantize apply,
step record works while the transport stands, and a key held when
recording starts begins with the take. Every note is placed at the moment
it arrived and echoed with the timing it was played with, one audio buffer
later; it no longer depends on the screen’s refresh. If you set a MIDI
REC OFFSET in the app before, check it again. MIDI thru in the app works like on the
hardware (since v1.2.4-SNAPSHOT): what you play in goes out on the selected MIDI
track’s channel (or into its MPE device) to every device, the one you
play included, so a keyboard with local control off and an MPE instrument
such as the Osmose hear themselves through Track8. MIDI MON switches it
off for all devices: do that when a keyboard synth plays its own notes
twice (local control on), or when two apps or devices feed each other’s
MIDI back (two Track8s linked both ways, a router sending the app its own
output), which would echo every note without end. For finer control, each
device’s ROUTE page works in the app as on
the hardware (since v1.2.4-SNAPSHOT): set THRU to OTHERS on the device that
feeds MIDI back, keep clock away from a device, or send MTC to one app
while the others get clock. MTC from the app has no full-frame message, so
a device that needs one to locate should get MTC from the hardware. With this the app also keeps playing,
recording and sending MIDI when you switch to another app or lock the
screen while the transport runs, so a take survives a locked phone and a
synth app in front keeps its clock (since
v1.2.4-SNAPSHOT).
Stopped, the app goes to sleep in the background like any other.
Bluetooth MIDI controllers (Korg nanoKONTROL Studio, Bluetooth pedals, …)
only become MIDI sources once they are paired through iOS’s Bluetooth MIDI
page — not the Bluetooth settings: press BLUETOOTH on the DEVICE screen,
tap the controller, Done. Track8 talks to the device directly, in both
directions (since
v1.2.4-SNAPSHOT
also out: clock, transport, the MIDI tracks and thru reach a Bluetooth
MIDI adapter such as a WIDI connected here), so it stays connected while
the app runs; a device already paired through another app is picked up as
a regular source.
The app’s audio input MODE defaults to SINGLE — one stereo input feeding every track — rather than the hardware’s MULTI (since v1.2.3); switch it under Utility → AUDIO if you use a multi-channel interface.
On iPhone (since v1.2.3) the app runs in landscape, starts zoomed, and has no ⓘ — there is no room around the device for its callouts. The zoomed device keeps the label row above the encoders as thumb room. The Dynamic Island covers the left end of the screen while zoomed; zoom out if you need the input meters.
Plugins (AUv3)
Since v1.2.3 the app hosts Audio Unit v3 plugins as outboard gear: a plugin is a box with audio ins and outs and a MIDI in, wired through the same mapping pages you use for a multi-channel interface. Nothing changes on the overviews, the transport or the record gesture; a project with a plugin wired in records and plays exactly like one with a hardware synth on the inputs.
The rack. UTILITY → AU RACK shows eight slots, one per encoder; a loaded slot’s label carries the plugin kind (AU1 (FX), INST, GEN, MFX, MIDI), its box turns orange while the plugin loads and red when it cannot, and the notes under the title recap the controls. Turn
an encoder to pick the plugin for its slot (or - to empty it); push it to
switch the encoder to the slot’s MIDI receive channel (OMNI or CH 1
to CH 16, default = the slot number). The line under each slot says what
the app made of it: the plugin kind once it is loaded, LOADING,
MISSING when the plugin is no longer installed, UNSUPPORTED when it
refuses 48 kHz float stereo, FAILED when its extension stopped rendering.
Touch a loaded slot to open the plugin’s own view as a sheet; the
buttons and encoders keep working underneath, Done (or a swipe down)
closes it. Slot settings and plugin states are stored with the app’s other
device settings, never in the project, so projects stay identical to the
hardware’s.
Wiring. Every loaded slot adds one stereo pair of channels to the
mapping pages on UTILITY → AUDIO, named after the plugin and listed
after the interface’s own channels:
| You want | Wire it as | What happens |
|---|---|---|
| a synth in the mix | plugin → EXTERNAL channel | live synth with volume, pan, mute and delay / reverb sends; not recorded |
| a synth on tape | plugin → TRK IN (MULTI mode) and arm the track | the instrument is printed like any input; plays back on the hardware without the plugin |
| an effect on one track | INSERTS: track send → plugin, plugin → track return | “process this track through this box”; blend with INS MIX on the Track FX 2 page as on the hardware |
| a send effect | SENDS n → plugin, plugin → EXTERNAL channel | “a parallel wash of this box”, fed from the Track Sends screen |
MIDI. A MIDI track plays into every slot whose receive channel matches
its channel, and to CoreMIDI as before, so one track can drive a hardware
synth and a plugin at once; live playing reaches the instrument on the
selected MIDI track’s channel, gated by MIDI MON like the hardware’s MIDI
thru. Plugins that emit MIDI (arpeggiators, sequencers) are treated like
any input port: channel discarded, recorded on the selected MIDI track,
never a control surface.
Latency. The app does not read or compensate a plugin’s latency, so a
slot behaves exactly like outboard gear: set REC OFFSET by ear if a
recorded instrument lands late. A plugin fed from a send or insert sees the
audio one engine chunk later, the same one-block loop a hardware insert has.
Export. An export renders the rack offline with its own plugin instances, seeded from the live plugins’ current state, so what you hear is what you get; an export with several plugins takes correspondingly longer. A slot that cannot be loaded for the export renders silence.
Multi-channel interfaces. The same release opens every channel of a
USB interface on iPad and Mac: TRK IN, INSERTS, SENDS, EXTERNAL,
MAIN OUT and ALT METRON now reach beyond channels 1/2, exactly as on
the hardware. Before, the app used two inputs and two outputs whatever the
interface offered.
Latency
(since v1.2.3)
The BUFFER SIZE setting under Utility → AUDIO sets the iOS
audio buffer, as it sets the JACK buffer on the hardware. iOS grants a
nearby size of its own choosing (an iPad gave 96 frames for 80). The app
starts at 64 frames (1.3 ms) on A17 Pro / M-series iPads, on iPhone 15 Pro
and newer and on every Mac, and at 128 frames (2.7 ms) on older devices.
If the sound crackles, pick a larger value.
What you hear while monitoring is still delayed by the iPad’s own audio
hardware — around 15 ms round trip on the built-in speaker and microphone,
less on a USB-C interface. The RTL figure next to BUFFER SIZE is what
iOS reports for the device in use: its input and output hardware latency
plus one buffer each way, using the buffer size iOS actually granted. When
that differs from the setting, the granted size follows in brackets:
64 (512) 21.7ms means the system runs 512 frames whatever was asked, as a
Mac does with its device’s own buffer, so the latency does not move with
the setting there. The figure
changes with the route, so plugging in an interface or headphones updates
it. Bluetooth output (AirPods and the like) adds 150 ms or more on its own and
cannot be tuned from the app — for playing along, use the speaker, a wired
headphone adapter, or a USB-C audio interface. Align recordings with
REC OFFSET, exactly as on the hardware.
Audio device
(since v1.2.3)
iOS chooses the audio device, not the app: whatever is plugged in or paired
is the route. SOUNDCARD on Utility → AUDIO shows that
route by name — Mic + Speaker for the built-ins, Mic + Headphones with
a wired headset, or the interface’s own name such as MOTU UltraLite mk5
— and there is nothing to select with the encoder. Every route keeps its
own BUFFER SIZE, MODE and I/O settings, exactly as each USB interface does
on the hardware, so an interface remembers its buffer size when it is
plugged back in. The buffer size takes effect the moment the route
changes; other settings apply with the next engine start.
Sample rate
(since v1.2.3)
The engine runs at 48 kHz. On iPad and iPhone the app sets the device to that rate. On a Mac the rate belongs to the system: the device keeps what is set in Audio MIDI Setup (Applications → Utilities), and the app resamples to and from 48 kHz on the fly, so a Mac at 44.1 or 96 kHz works too. 48,000 Hz is still the setting to prefer on a Mac: no resampling, and a few milliseconds less latency, which is why the app says so once per launch when it had to resample. Earlier versions quit a moment after launch on a Mac at any other rate. If the engine cannot start for another reason, the app shows Audio engine could not start with the reason and a Retry button instead of the device.
Orientation
(since v1.2.3)
The device stays put. Tilt or flip the iPad and the drawing does not rotate with the screen — it keeps the landscape orientation you last used, and system sheets (file pickers, share sheet) open in whatever orientation the iPad is actually in. In Split View or Stage Manager the app lays out to the window it is given.
Theme editor
(since v1.2.2)
The theme editor lets you build a color theme while watching the real UI
change, instead of guessing from static previews. It uses the same
theme.json format as the hardware (and the
web theme editor), so anything you
make here can go straight onto your Track8.
- Tap 🎨 in the bottom-right corner. Panels cover everything above and below the Track8 screen, listing every themeable color by name, grouped into General, Encoders, Audio tracks, MIDI tracks, Markers and FX curves. The encoders and track buttons are under the panels while the editor is open; the button grid beside the screen stays usable. The editor starts from the theme currently selected under Utility → THEME (DEFAULT included).
- Tap a color swatch to open the system color picker. Every change is applied to the rendered screen immediately — switch screens with the buttons beside the display (Audio, MIDI, Master FX, Settings) to see exactly which elements the color affects. Opacity is part of the color.
- Type a name into the text field and tap SAVE. The theme is written to
the app’s
theme.jsonand becomes the selected theme, so it also shows up under Utility → THEME. Saving under an existing name asks before replacing it. REVERT throws away unsaved changes and reloads the selected theme. - EXPORT opens the share sheet with the app’s
theme.json(all your themes, plus any you imported). Save it to Files, AirDrop it, or mail it, then copy it over thebin/theme.jsonon your Track8 — it is a drop-in replacement. - IMPORT picks a
theme.jsonfrom Files and merges its themes into the app’s list (same-named themes are replaced). Use it to bring themes from the web editor or from your Track8 into the app.
Closing the editor (🎨 again, or opening the info overlay) discards unsaved changes after asking for confirmation and restores the selected theme.