◀ Back to contents

Audio backends

A backend is the application's route to a converter: the engine that opens the device, moves the samples and reports the errors. It is chosen under Preferences ▸ Audio, and which backends the list offers depends on where the application runs. In the browser the LOCAL backends are Web Audio and the QA40x over WebUSB - see Phonalyser.web in a browser - and the table below covers the engines a desktop application or a server bench runs: what you measure through when connected to a server. How a backend works inside - callbacks, ring buffers, exclusive modes - is described in Theory ▸ Audio backend; this page is the practical half: what exists where, and what the bench does to the hardware volume on your behalf.

Which backend on which system

BackendOSNotes
WASAPI exclusiveWindows The EXCL: devices - bit-exact exclusive mode through the csjsound provider, and the route to the high sample rates. Needs the csjsound natives beside the application.
WDM-KSWindows Kernel streaming through PortAudio - low latency, callback driven.
JavaSound (shared)Windows The system mixer's shared mode - always available, resampled by Windows, and therefore the fallback rather than the measurement route.
ALSALinux JavaSound over the card's plughw device - direct card access, one opener at a time. Port names and jack detection come from alsa-utils.
CoreAudiomacOS PortAudio over the CoreAudio HAL. Sample-rate lists are read from the device's own declared formats, not probed through the OS converter.
QA40xall three The QuantAsylum analyzer over USB - its own clock, ranges and device-provided calibration. See the QA40x sections of Preferences.
netall three A Phonalyser server's backends over the LAN - whatever the bench machine offers appears beside the local list.

Hardware volume on Linux and macOS

A card's hardware volume sits INSIDE the calibrated chain: a control away from where it stood during calibration scales every sample, and nothing in the reading says so. On Linux and macOS the bench therefore manages the opened device's own volume itself:

Windows is different on purpose. There the system volume is part of the calibration: set it once, calibrate, and leave it - the bench does not touch it.

macOS: capture glitches on some devices

Some USB devices tear the CAPTURE stream on macOS at operating-system level: every capture shows ringing bursts and discontinuities while the analog output measures perfectly clean, and the very same recording made with Apple's own tools carries the same tear. One example bench device is the Cubilux CB5 - but the incompatibility is a property of the device-and-macOS pairing and can happen with other devices too. The same device may work flawlessly on Linux and Windows.

The workaround is an Aggregate Device. In Audio MIDI Setup create an aggregate and put the device's input and output into it, then select the aggregate on the bench. The aggregation layer adds the stream handling the device's own path lacks, and the captures come out clean.

Important: uncheck "Drift Correction" for the sub-devices of the aggregate. With it, macOS resamples the streams to align their clocks - an alignment that is NOT synchronized to the source the way the measurement itself is - and that resampling shows up as frequency leakage in the spectrum.
Audio MIDI Setup - an aggregate device wrapping the CB5, Drift Correction unchecked

An aggregate publishes no volume controls of its own; the bench pins and restores the volumes of its MEMBER devices instead, so the 0 dB discipline above holds through the aggregate too.