Skiff

Atmos · Layouts, folds, sample rates, bit-perfect

Skiff's device takes every layout from mono to 9.1.6, at 44.1 to 192 kHz, and gets each channel to the speaker with its label, through your plug-ins or untouched.

Speaker layout

BedHeightLFE

A room with two speakers.

01Who does what

macOS decodes Dolby Atmos, the E-AC-3 JOC streams in Music, the TV app and anything else built on AVFoundation, and renders its objects to the speaker layout of the output device. With a route on, that device is Skiff.

Skiff carries what macOS renders: every channel, labelled, through your chain to the matching speaker. It doesn't decode or re-render anything itself, so what reaches your speakers is what macOS made for them.

Open-back headphones.

02Setting up

  1. Open Audio MIDI Setup, select your interface or receiver, click Configure Speakers, and pick its layout, say 7.1.4.
  2. In Skiff, pick that device as your output. Skiff takes on its layout and switches it to Skiff's sample rate.
  3. Turn the output route on. In Music, set Dolby Atmos to Always On if it doesn't switch on by itself.

The status line shows the rate and any fold. A 7.1.4 system playing a 7.1.4 render with no plug-ins reads Active · 0.1 ms · 48 kHz · Bit-perfect.

03Layouts

Each layout uses Core Audio's own channel order, so apps and Core Audio's mapper see an exact match.

LayoutChChannel order
Mono1M
Stereo2L R
Quad4L R Ls Rs
5.16L R C LFE Ls Rs
7.18L R C LFE Ls Rs Rls Rrs
7.1.412L R C LFE Ls Rs Rls Rrs Ltf Rtf Ltr Rtr
9.1.616L R C LFE Ls Rs Rls Rrs Lw Rw Ltf Rtf Ltm Rtm Ltr Rtr

Channels travel by label, not by position. Hardware wired in another order, like Logic's 7.1.4 "B" order, still gets each channel on the right speaker, bit for bit.

04Smaller systems

When your speakers lack one the mix has, that channel moves to the first speaker on its list that you do have, 3 dB down. Nothing is dropped except the LFE.

MissingLands on
CL and R
Ls, RsL, R
Rls, RrsLs, Rs · then L, R
Lw, RwL, R
Ltf, RtfLtm, Rtm · then L, R
Ltm, RtmLtf, Rtf · Ltr, Rtr · Ls, Rs · then L, R
Ltr, RtrLtm, Rtm · Rls, Rrs · Ls, Rs · then L, R
LFENever folds. On headphones the bass would only clip.

So 7.1.4 on headphones gives each side its own channel plus center, side, rear and both heights at −3 dB:

L = L + 0.707 × (C + Ls + Rls + Ltf + Ltr)

A single speaker takes L and R at −6 dB each.

Patch cables.

05Through your chain

The chain runs as wide as the Skiff device, so a 7.1.4 render goes through your plug-ins as twelve channels. If any plug-in in the chain only takes stereo, the whole chain runs in stereo and the status line says where it folded, like in: 12ch → 2ch. A fold between the chain and the hardware shows as out:.

06Sample rates

44.1, 48, 88.2, 96, 176.4 and 192 kHz, at every layout. Set Skiff's rate in Audio MIDI Setup like any device. When you pick hardware, Skiff asks it for the same rate so nothing resamples between the chain and the speakers.

Hardware that can't run at Skiff's rate, like 44.1 kHz Bluetooth headphones, is converted by Core Audio. The status line shows the rate the route runs at.

The mic chain runs at Skiff's rate too, so the mic has to support it.

A small audio interface.

07Bit-perfect

The status line says Bit-perfect when all three hold:

  • No plug-in is running: the chain is empty or every stage is switched off.
  • Every channel lands on one speaker at unity. A reorder is fine; a fold isn't.
  • Skiff and the hardware run at the same rate.

It's a promise about samples, not timing. The route still shows its latency.

08Other formats

Players that decode their own audio, like IINA, mpv or VLC, hand Core Audio plain multichannel PCM with a layout. TrueHD, DTS, AC-3, AAC and the rest arrive at Skiff as labelled channels, and Skiff routes them like anything else.

09What's tested

Skiff's test suite checks these against its own driver, engine and routing code:

  • Every published layout matches Core Audio's own tag, channel for channel.
  • Every rate opens at every Atmos width.
  • 7.1.4 and 9.1.6 arrive bit-exact at 48 to 192 kHz, also when the hardware is wired in another order.
  • Every channel of every Atmos layout reaches mono, stereo, 5.1, 7.1 and 7.1.4 systems, at a gain between 0 and 1, the LFE excepted.

A second suite runs against the installed driver and macOS's own renderer:

  • A tone on each channel of 7.1.4 and 9.1.6 comes out only on that speaker.
  • 13 decoded formats land on their speakers within 0.2 dB.
  • An E-AC-3 JOC Atmos film soundtrack puts real signal in the height channels.
Eurorack modules.

10Limits

  • 6.1's back channels (Cs, Lsd, Rsd) aren't Skiff speakers. AVFoundation players fold them in for you. A player writing raw 6.1 to Core Audio loses them in Core Audio, before Skiff sees them.
  • Head-tracked Spatial Audio is macOS's AirPods feature. Through Skiff, headphones get the stereo render macOS makes for them.
  • Layouts wider than 9.1.6 aren't published.
A synthesizer knob.