Yes, by default. Every application's audio on a Mac is converted by the system mixer to the output device's current nominal sample rate, whatever the rate of the file being played. A 96 kHz file on a device set to 48 kHz is resampled down to 48 kHz. A 44.1 kHz file on a device set to 96 kHz is resampled up. The device's rate lives in Audio MIDI Setup, and the mixer never changes it by itself.
The only way for a file's own samples to reach the DAC at the file's own rate is for an application to take the device exclusively and set a format the mixer cannot touch. This page explains what the mixer does step by step, what resampling does to a signal, how to tell whether it is happening to you, how a player bypasses it, and the cases in which resampling still happens and an honest player says so.
The system mixer is the part of CoreAudio that runs as coreaudiod. It exists so that many applications can share one output device at the same time, and it does that in a fixed sequence:
None of this is a defect. It is what lets a notification chime play over a video call while music runs in the background, all at different rates, without any of them fighting for the hardware. It is also why the identity case is not a shortcut: a 44.1 kHz file played on a device set to 44.1 kHz skips the rate conversion, but its samples still pass through the floating-point pipeline and the volume multiplication before they reach the DAC.
A sample rate converter computes new sample values at new instants in time. It does this by reconstructing the band-limited signal the original samples describe, through an interpolation filter, and reading it again at the new rate. The output is a new set of samples that approximates the original signal. Good converters are very good, and for most listening the result is transparent. Three things remain true regardless of quality.
The floating-point stage deserves a word of its own. At unity gain, a multiplication by 1.0 in 32-bit float is, for 24-bit content, transparent in every practical sense. It is still not the same as no multiplication, and a chain that promises to deliver the file's bits cannot include it.
The workaround everyone finds first is to open Audio MIDI Setup and set the device to the file's rate. It works, for that file. The next album at a different rate is resampled again, and the floating-point path was never bypassed in the first place. Changing the rate by hand before every album is the job a player should be doing, per track, without asking.
The mixer converts because it owns the device. A player that takes the device exclusively, through the CoreAudio mechanism called hog mode, becomes the only process talking to the hardware. It then sets the device's nominal sample rate to the file's rate and selects a non-mixable format, a physical stream format that carries the operating system's promise that no mixing, resampling or float conversion will take place. From that point the player writes the file's samples into the hardware buffer through a real-time callback, and nothing sits between the two. How that works, what changes on your Mac while a device is held, and when you should not do it are covered in the companion page on exclusive mode on macOS.
Because the rate is set per track, gapless playback holds within an album at one rate: the device never stops between consecutive tracks. When the rate changes between two tracks, a brief reconfiguration is unavoidable, since the DAC's clock must lock to the new frequency. That pause is the hardware's, and the alternative, converting the second track to the first track's rate, is exactly what this page is about avoiding.
Exclusive mode removes the mixer's conversion, not every conversion. Three cases remain, and what matters is that the player reports them instead of claiming bit-perfect delivery.
The principle behind the colours is simple: "no resampling" is a claim to be verified, not assumed, and the indicator has to change the moment it stops being true.
A player that sets the device's rate per track also has to decide what to do when it stops. VeraVox restores the device's original nominal rate and physical format when a session ends, so the rest of the system carries on exactly as before. On Shared Output devices a setting in Settings, Restore Device Sample Rate, lets you keep the last rate instead, which helps with network audio drivers that take several seconds to lock each rate change. On the exclusive path the full device state is always restored.