Skip to content
macOSDeep Dive Published Updated 10 min readViews unavailable

Core Audio Aggregate Devices on macOS: Clock Sources, Drift Correction, and Channel Maps

Combine macOS audio interfaces into one Core Audio device, align sample rates and clocks, map channels, and troubleshoot synchronization safely.

An aggregate device combines audio streams from multiple devices into one logical Core Audio device. It is useful when a recording application needs more input channels than one interface provides, or when an application expects one selected device for both input and output. It does not make independent hardware clocks identical. The configuration still needs a deliberate synchronization source, an explicit sample-rate plan, and a channel map that the operator can reproduce.

This guide focuses on audio interfaces and other physical audio devices configured in Audio MIDI Setup. Core Audio also supports aggregate devices containing taps; process-tap capture is a separate topic with its own setup and lifetime, covered in Core Audio Process Taps on macOS: Capture Scope, Consent, and Teardown. If the goal is only to send the same output to several devices, start with Apple’s separate Multi-Output Device configuration instead of assuming an aggregate device is the right routing object.

Decide whether aggregation fits the job

An aggregate device presents the streams of its selected subdevices as one device to compatible applications. Apple gives the example of combining an eight-channel device and a two-channel device into a ten-channel device. The aggregate can be used for input or output, or as the Mac’s sound input or output. The usable directions and channel counts still depend on the actual hardware and its exposed streams.

Before creating one, list the needed inputs and outputs, the intended application, each device’s supported sample rates, and whether the hardware can share a synchronization signal. If the application can select a separate input and output device, that can be simpler: Apple notes that its music-creation apps support separate devices, while an aggregate device can help with applications that do not. Choose the least complex route that satisfies the application and channel requirements.

Do not confuse three separate ideas:

  • An aggregate device combines streams into one logical device.
  • A Multi-Output Device sends playback to multiple output devices.
  • Hardware clock synchronization, such as a correctly configured word-clock connection supported by the devices, is a property of the hardware setup, not something created merely by checking both devices into an aggregate.

Build a stable channel map first

Connect and power on every interface before creating the aggregate. Open Audio MIDI Setup’s Audio Devices window, click its Add control, and choose Create Aggregate Device. Give it a name tied to its purpose and the hardware set, such as Studio-Inputs-48k, rather than a generic name that could be mistaken for another configuration.

Select the Use checkbox for each intended subdevice. Apple documents that the order in which the boxes are selected determines input and output channel order in applications such as Logic Pro and MainStage. You can drag a subdevice left or right in the list to change its position and therefore its channel numbers. Keep the Audio MIDI Setup window open while configuring the recording application; Apple’s guide maps the displayed device channels to the numbered input and output choices in the application.

For example, suppose a session needs eight inputs from a rack interface and two from a separate USB interface. Add only those devices, place them in a documented order, and verify whether the application sees the intended ten input channels. In the project, label the tracks with both the aggregate channel number and the physical source, such as Input 9 - USB mic. A channel number by itself is not a durable microphone identity: changing the subdevice selection or order can change what that number means.

Treat the channel list as part of the session configuration. Record the device names, order, channel assignments, selected format, and any hardware-sync wiring in the session notes. After a cable, interface, or order change, confirm the assignments again instead of trusting a saved track name.

Pick one clock and set the sample-rate policy

Devices report nominal sample rates, but separate clocks can run at slightly different actual rates. Apple notes that devices at the same nominal rate can still need correction because of clock timing drift. For devices without hardware synchronization, choose the subdevice with the most reliable clock as the primary source and enable synchronization for the other subdevices. Apple uses varying labels across its published instructions: one Audio MIDI Setup settings page says Sync Source and Sync, while other Apple instructions use Clock Source and Drift Correction. Follow the controls shown in the Audio MIDI Setup version you are using.

Ideally, set all devices to the same sample rate as the selected synchronization source. That minimizes conversion. Matching the displayed rate does not remove independent-clock drift, so keep synchronization enabled for every non-source device that is not hardware-synchronized. If a device supports only a different or fixed rate, Apple says it can still be combined: use the primary source’s rate and enable synchronization on the device that must be converted. The synchronization step compensates for drift and converts that device’s rate to match the primary source.

Use a repeatable decision process:

  1. Pick the rate required by the recording or production session and verify that the intended primary interface supports it.
  2. Select the interface with the most reliable clock as the source. If devices are linked by hardware synchronization, use the primary clock in that synchronized system as Apple’s guide describes.
  3. Set matching rates where the hardware permits, then select Sync for each device that is not synchronized through hardware.
  4. Reopen or inspect the aggregate after connecting devices and confirm the source, rates, and checkboxes before opening the production session.

Do not choose a clock only because its interface advertises the largest sample-rate number. The documented operational question is which source provides the most reliable time base for this device set and session. Nor should a software checkbox be used to mask a broken or undocumented hardware word-clock topology.

When interfaces share word clock

If the devices are connected by separate word-clock cables, follow the interface manufacturers’ connection and termination instructions. Apple’s documentation says to disable software drift correction for devices synchronized through those separate word-clock connections and enable Sync or Drift Correction for devices that are not synchronized through hardware.

Make the distinction per device. A mixed setup may include a primary interface, another interface locked to it by hardware, and a USB microphone with no word-clock input. The hardware-locked interface should follow the vendor’s synchronization setup; the independent USB device needs software synchronization when Apple’s setting is available. If Audio MIDI Setup disables the checkbox, Apple’s guide says that synchronization cannot be changed for that device. Check its hardware configuration and documentation rather than repeatedly toggling unrelated settings.

Route and test the device before recording

Select the aggregate in the application’s input or output menu. In Logic Pro and GarageBand, Apple documents that selecting an aggregate as output also selects it as input by default, though the input can be changed. MainStage requires its input to be selected manually. Other applications may have different routing controls, and some can use separate input and output devices without an aggregate.

Run a short acceptance test before an important recording:

  1. Confirm that the application shows the expected number of channels and the intended sample rate.
  2. Feed a known source into one physical input at a time, or use a clearly spoken channel slate, and verify that only the intended track receives it.
  3. Record a short segment long enough to expose a synchronization problem, then check for missing inputs, discontinuities, unexpected channel swaps, and drift between sources.
  4. Stop, disconnect and reconnect devices in a controlled test, then repeat the checks before treating hot-plug recovery as supported by the workflow.

For output, use Audio MIDI Setup’s speaker configuration and test tones where that feature applies; Apple’s speaker-setup guide documents testing speaker assignments with those tones. Do not use an output tone test as evidence that every input channel is mapped correctly. Verify inputs and outputs independently, at a conservative monitoring level, and prevent microphones from feeding back into loudspeakers during routing checks.

If only mirrored playback is needed, Apple’s Multi-Output Device guide describes sending playback through multiple output devices and choosing a primary device. That is a different configuration task from presenting multiple subdevice streams as one aggregate. Choose the object that matches the signal path instead of stacking both without a specific reason.

Inspect an aggregate from a Core Audio client

Apple’s current Core Audio HAL reference exposes an AudioHardwareAggregateDevice object with a clockSource property and an ordered subdevices array. Apple says the subdevice order is significant because it determines aggregate stream order. The following diagnostic fragment reads those properties through the Swift API and reports errors; it does not create, modify, or start an aggregate device.

import CoreAudio
import Darwin

func logAggregateTopology(_ aggregate: AudioHardwareAggregateDevice) {
    do {
        let clockSource = try aggregate.clockSource
        let subdevices = try aggregate.subdevices

        if let clockSource {
            print("Clock source: \(try clockSource.name)")
        } else {
            print("Clock source: unavailable")
        }
        for (index, subdevice) in subdevices.enumerated() {
            print("Ordered subdevice \(index): \(try subdevice.name)")
        }
    } catch {
        fputs("Could not inspect aggregate topology: \(error)\n", stderr)
    }
}

The HAL’s subdevices property can include active and inactive members. This diagnostic is a topology snapshot, not a channel-layout decoder: query and validate the relevant stream and channel-layout properties before assigning application channels. Run property inspection on a control or diagnostic path, handle thrown errors, and avoid changing device composition as a side effect of a monitoring routine. Apple marks AudioHardwareAggregateDevice and subdevices as macOS 15.0 or later; guard this API at that availability boundary or retain a lower-level HAL path for older deployment targets.

Diagnose drift, missing channels, and unstable routing

If tracks slowly lose alignment, first confirm whether each subdevice is hardware-synchronized. Then verify the selected source, its sample rate, and Sync or Drift Correction on every independent non-source device. Apple’s documentation explicitly calls out nominally matching devices that still correct for clock timing drift, so an equal sample-rate display alone is not a sufficient test.

If the channel count or order is wrong, re-check the Use selections and subdevice order in Audio MIDI Setup, then compare its channel numbers with the application’s input list. If the aggregate disappears or a stream is unavailable after a device reconnect, refresh the topology and repeat the short acceptance test. Device discovery and default-route monitoring are separate questions; see Core Audio Device Discovery: Enumerating and Tracking macOS Audio Hardware for inventory and route-change handling.

If the session works only at one sample rate, inspect the rates each interface actually supports and choose the common session rate when possible. If no common rate exists, use Apple’s documented primary-source conversion path and validate the resulting recording; do not assume every application or device combination behaves identically. If synchronization cannot be changed for a device, treat that as a hardware or implementation constraint and consult the vendor’s current documentation.

Finally, keep test notes that separate symptoms from guesses: macOS version, interface models, connection and word-clock topology, selected source, sample rates, Sync states, subdevice order, application format, and the time at which a discontinuity appeared. This makes a repeatable routing defect diagnosable without changing several clock and channel settings at once.

Related:

Sources:

Comments