Why is there a delay before changes to EQ settings take effect?

When I change physical EQ controls on a stereo, I hear the change immediately. When I change software EQ (like in Mac's Music app), though, there's a ~4 second delay before I hear the change. I've noticed that in all the software EQs I've used.

What doesn't it take effect immediately?

To reproduce this:

  1. Open Music app (or any audio app that has a built in EQ)
  2. Start playing a track
  3. Open the equalizer and turn it on
  4. Select the Flat preset, and wait 5 seconds to make sure it's applied
  5. Select the Rock preset, and listen for how long it takes until you hear the change

Solution 1:

When audio is being played, its played into a buffer. This buffer will stream to your speakers, but introduces latency. If the buffer is really low, sound will crackle if the buffer runs out, for example because the CPU can't keep up.

Depending on the audio driver, different buffer lengths are needed because some audio drivers are fast where others are slow. For simple day-to-day audio, a slow audio driver is used with large buffer. In a music program, a driver such as ASIO or WASAPI is used which are fast and have small buffers.

Your buffer is large to begin with, so you do apply the EQ but you don't hear it because you still have to listen to other sound being played first.

To prove that this is indeed happening, switch EQ settings twice with a bit of delay, but ensure that the second switch happens before you hear the first. If I'm correct, you will still hear the first EQ preset being applied.

On a mac with M1 processor, running x86 software, additional latency can occur because the instructions are not realtime but needs to be processed.