Steven Bleifer

Notes · September 2026

Two displays, one stereo pair.

I got a second Studio Display and wanted the left one to be the left channel. macOS has no setting for that. Getting there meant an aggregate audio device, a menu bar app to give it a volume control, and a long argument with a 37 millisecond delay that turned out not to be the thing I thought it was.

Two Studio Displays Aggregate device 800 frames of correction Tuned by ear

What I actually wanted

Two identical-looking displays sitting side by side, each with six speakers in it. Played as two separate devices they each produce their own stereo image, about two feet apart, which sounds like two radios playing the same song. What I wanted was obvious: the left panel is the left channel, the right panel is the right channel, one wide stereo pair.

macOS does not have a checkbox for this. The Sound settings panel lets you pick one output device. Two displays are two devices.

Aggregate, not multi-output

Audio MIDI Setup can combine devices two ways, and only one of them works here.

A Multi-Output Device mirrors the same signal to everything in it. Both displays would play full stereo. That's for playing the same thing in two rooms, not for splitting channels.

An Aggregate Device concatenates the channels instead. Each Studio Display presents eight output channels, so the aggregate has sixteen: one to eight is the first display, nine to sixteen is the second. Then "Configure Speakers" lets you say which of those sixteen is Left and which is Right.

The part that isn't in any menu

Both displays are named "Studio Display Speakers". Identically. macOS numbers them by connection order, not by where they physically sit, and nothing in the interface tells you which is which. I mapped them, listened, and had them backwards. There is no way to know except to play something hard-panned and use your ears.

Which channel to feed each panel

Each display takes an eight channel feed: front left, front right, front centre, LFE, back pair, top pair. The stereo mapping only lets you pick one of those per side, so the question is which one makes a whole display sing.

Front centre seemed right. It's the middle, it should engage the whole array. It sounded terrible. Not quiet, just vague, like the sound was coming from the general direction of the desk rather than from anywhere. My guess is that feeding a display its centre channel makes its internal processing spread the signal across all six drivers, so neither panel behaves like a point source and there's nothing for a stereo image to hang on.

Front left on the left display and front right on the right display images far better. Same speakers, same volume, completely different sense of where things are.

I'd actually tried the corner channels early on and dismissed them as thin. That test was run while left and right were still swapped, so it was never a fair comparison. Worth re-running experiments after you fix the thing that was confounding them.

Aggregate devices have no volume

The moment the aggregate became the output, the volume keys stopped working and the menu bar slider went grey. macOS doesn't provide volume control for aggregate devices at all. Not a bug, just not implemented.

So the setup needed a small app: a menu bar item that writes volume to both displays at once through CoreAudio, keeping them locked to the same value, and intercepts the volume keys so they behave normally.

It grew from there. It now also carries brightness, True Tone, Night Shift and auto-brightness for both panels together, and it selects the aggregate automatically when the displays reappear after undocking.

Volume keys yes, brightness keys no

Volume keys arrive as ordinary system-defined events and can be intercepted. Brightness keys never reach a session event tap at all on Apple silicon — macOS handles them further down, and only adjusts one display. I spent a while assuming my code was broken before logging every event that arrived and finding there were none. So brightness works the other way round: let macOS handle the key, watch for the change, and copy it to the other display.

The delay

With everything mapped correctly it still sounded smeared. Centred vocals wouldn't lock between the screens, and on video it was an audible echo between left and right.

CoreAudio reports each device's latency, and the two displays were nowhere near each other:

DisplayReported latencyChannel
2022 Studio Display1056 frames — 22.3 msRight
Newer Thunderbolt 5 Studio Display2861 frames — 59.9 msLeft

A 1805 frame gap. 37.6 milliseconds, which is far past the point where two sounds stop fusing into one and start sounding like an echo.

An aggregate device stores a per-member latency-out value for exactly this, so the fix looked like arithmetic: add 1805 frames to the fast display and they line up.

It sounded worse. Noticeably worse.

That value doesn't delay a device. It declares that a device has extra latency, so the system compensates by sending its audio earlier. I'd applied it to the display that was already early and doubled the error. Same number, wrong display.

Moving the 1805 frames to the slow display helped a lot but wasn't right either. So I stopped reasoning about it and built a small script that steps through candidate offsets, playing a click burst at each one, and listened.

OffsetVerdict
0 framesecho
1805 frames on the fast displayclearly worse
1805 frames on the slow displaybetter, still there
1400 framestighter
800 framestightest, beat 600 below and 1000 above

The measurement said 1805. The right answer was 800. macOS compensates for part of the gap on its own, just not all of it, and no amount of reading numbers would have told me how much. The only reason 800 is trustworthy is that it beat its neighbours on both sides, which is the difference between a minimum and the edge of a range you happened to stop at.

It wasn't the daisy chain

Both displays run off one Thunderbolt port, chained. So the obvious story was that the downstream display picks up latency going through the first one's controller, and the fix is to give each display its own port.

I was about to recommend rearranging the desk when I checked the USB tree properly. Only the newer display exposes Desk View cameras, which identifies it, and its speaker interface number matches one of the two audio device IDs. The newer display is the one plugged straight into the Mac. The 2022 display is the one hanging off the back of it.

The downstream display is the fast one. The chain isn't the cause. These are two different generations of hardware and the newer one simply has slower audio, presumably because it does more processing before anything reaches a speaker. Re-cabling would have cost dock bandwidth and fixed nothing.

Worth writing down

Three plausible explanations, in order: macOS doesn't compensate, macOS fully compensates, the daisy chain causes it. All three were wrong. The thing that actually resolved it was a script that plays a click and a person saying which one sounds tighter.

Where it landed

SettingValue
DeviceAggregate, both displays, drift correction on the non-clock member
ChannelsLeft → left display front left · Right → right display front right
Timing800 frames of compensation on the slower display
VolumeMenu bar app, both displays locked together, volume keys intercepted
BrightnessNative keys, mirrored to the second display within 250 ms
After undockingEverything persists; the aggregate is reselected automatically

The tuning lives in coreaudiod's own settings file rather than anywhere I control, which turned out to be good news: unplug the dock, plug it back in, and it all comes back without intervention. I tested that rather than assuming it.

The whole thing is two displays doing something Apple never advertised they could do, held together by about four hundred lines of Swift and a number I could only find by listening.