CoProducer Measure a mix
A glowing cyan and magenta volume ring with a single gold marker on black marble, a soft frequency curve arching between two studio monitors behind it, a handheld level meter at the left

Monitoring · 20 October 2026 · 7 min

Your mix sounds better loud and thinner quiet. Pick one monitoring level

NoDAW Labs · Lacquer Vol. 05

Your ears change with the volume knob: as playback gets quieter, the bass and the very top fade faster than the mids, and whatever is a little louder tends to sound better. Pick one listening level for most of the mix, mark the knob, level-match every comparison, and check loud and quiet on purpose, briefly, at the end.

Two in the morning, everyone’s asleep, so you mix quietly and push the 808 until it feels right. Next afternoon you play it at a normal volume and the low end is a mess. Or the other way round: you crank it to feel the record, pull the bass down because it’s shaking the desk, and the next morning on earbuds the whole thing is thin.

Neither mix was wrong for the volume you made it at. That’s the problem. The knob changed what you heard, and you mixed to the knob.

Your ears have a volume-dependent EQ

Human hearing isn’t flat, and how unflat it is depends on level. Researchers have mapped this since Fletcher and Munson in the 1930s, and the modern version is the equal-loudness contours in the ISO 226 standard. The short version: we’re most sensitive in the low few kilohertz, where speech lives. As the level drops, low frequencies (and the extreme top) need more and more energy to sound as loud as the mids.

In a session that means:

Louder wins every A/B

The second trap is the same effect in a comparison. When two versions differ in level, the louder one usually comes across as fuller and clearer, even when the gap is only a decibel or so and nothing else changed. It’s why good plugins have an output trim or auto-gain, and why “this EQ sounds amazing” so often means “this EQ is louder”.

So level-match before you judge. This measures integrated loudness (the same ITU-R BS.1770 measure streaming services use) and tells you how much to pull the louder one down:

#!/usr/bin/env python3
"""Level-match two bounces before you decide which one is better.
usage: python3 level_match.py A.wav B.wav      (pip install numpy soundfile pyloudnorm)"""
import sys
import numpy as np, soundfile as sf, pyloudnorm as pyln

def measure(path):
    x, sr = sf.read(path, always_2d=True)
    lufs = pyln.Meter(sr).integrated_loudness(x)          # ITU-R BS.1770 integrated loudness
    return lufs, 20 * np.log10(np.abs(x).max())
(la, pa), (lb, pb) = measure(sys.argv[1]), measure(sys.argv[2])
print(f"A {sys.argv[1]}: {la:6.2f} LUFS integrated, sample peak {pa:5.1f} dBFS")
print(f"B {sys.argv[2]}: {lb:6.2f} LUFS integrated, sample peak {pb:5.1f} dBFS")
d = lb - la
if abs(d) < 0.1: print("within 0.1 LU: compare as they are")
else:
    loud = "B" if d > 0 else "A"
    print(f"{loud} is {abs(d):.1f} LU louder: turn {loud} down {abs(d):.1f} dB (don't turn the other up) before you judge")

We made a version B of a synthetic loop with a 3 dB high shelf and 1.5 dB more gain, then compared it with the original:

$ python3 level_match.py ab_A.wav ab_B.wav
A ab_A.wav: -19.38 LUFS integrated, sample peak  -4.2 dBFS
B ab_B.wav: -17.49 LUFS integrated, sample peak  -1.4 dBFS
B is 1.9 LU louder: turn B down 1.9 dB (don't turn the other up) before you judge

B came out 1.9 LU louder, not 1.5, because the brighter top adds measured loudness too. Unmatched, B wins on volume alone. Matched, you finally hear whether the shelf is actually better. Turn the louder one down rather than the quieter one up; it keeps your headroom and your ears.

Set one level you can come back to

The usual way to calibrate is pink noise at a known digital level, played through one speaker at a time, with an SPL meter at your listening position set to C-weighting and slow response. Turn the monitor level until each speaker reads your target, then mark that spot on the knob. This writes the noise file:

#!/usr/bin/env python3
"""Pink noise at -20 dBFS RMS for setting a monitoring level with an SPL meter.
usage: python3 calibration_noise.py [seconds]      (pip install numpy soundfile)"""
import sys
import numpy as np, soundfile as sf

sr, secs = 48000, float(sys.argv[1]) if len(sys.argv) > 1 else 60
n = int(sr * secs); rng = np.random.default_rng(1)
spec = np.fft.rfft(rng.standard_normal(n)); f = np.fft.rfftfreq(n, 1 / sr)
band = (f >= 20) & (f <= 20000)
spec[band] /= np.sqrt(f[band]); spec[~band] = 0         # -3 dB per octave from 20 Hz to 20 kHz
x = np.fft.irfft(spec, n)
x *= 10 ** (-20 / 20) / np.sqrt(np.mean(x ** 2))        # exactly -20 dBFS RMS
fade = int(0.05 * sr); x[:fade] *= np.linspace(0, 1, fade); x[-fade:] *= np.linspace(1, 0, fade)
sf.write("pink_-20dBFS_rms.wav", x, sr, subtype="PCM_24")
rms, peak = np.sqrt(np.mean(x ** 2)), np.abs(x).max()
print(f"wrote pink_-20dBFS_rms.wav: {secs:.0f} s mono, {sr} Hz, 24-bit")
print(f"RMS {20*np.log10(rms):.2f} dBFS, peak {20*np.log10(peak):.2f} dBFS, crest {20*np.log10(peak/rms):.1f} dB")
X = np.abs(np.fft.rfft(x)) ** 2; octave = lambda c: X[(f >= c / np.sqrt(2)) & (f < c * np.sqrt(2))].sum()
for c in (31.5, 125, 500, 2000, 8000):                  # pink noise: equal energy in every octave
    print(f"  octave at {c:>6g} Hz: {10*np.log10(octave(c) / octave(500)):+5.1f} dB vs 500 Hz")
$ python3 calibration_noise.py 60
wrote pink_-20dBFS_rms.wav: 60 s mono, 48000 Hz, 24-bit
RMS -20.00 dBFS, peak -5.93 dBFS, crest 14.1 dB
  octave at   31.5 Hz:  +0.0 dB vs 500 Hz
  octave at    125 Hz:  +0.0 dB vs 500 Hz
  octave at    500 Hz:  +0.0 dB vs 500 Hz
  octave at   2000 Hz:  +0.0 dB vs 500 Hz
  octave at   8000 Hz:  +0.0 dB vs 500 Hz

Pink noise has equal energy in every octave, which is why it’s used for this: the meter sees the whole range at once instead of one frequency your room happens to like. The 14.1 dB crest factor is also about what you’d expect from real music.

What target? Big film stages have traditionally calibrated around 85 dB SPL per speaker, but that’s a large room with the speakers far away. In a bedroom or a small studio most people land lower, somewhere in the 70s. The exact number matters less than coming back to the same one. A phone SPL app can be a few dB off, but it’ll be off the same way every time, and consistency is the whole point.

No meter at all? Use the conversation test: at your mix level you should be able to talk to someone next to you in a normal voice without raising it. It’s rough, but it’s repeatable, which a level you pick by feel each night isn’t.

How long you can listen

There’s a second reason to mix at a moderate level. In the US, NIOSH recommends limiting noise exposure to 85 dBA averaged over eight hours, and halving the time for every 3 dB above that:

Level (dBA)NIOSH recommended limit per day
858 hours
884 hours
912 hours
941 hour
9730 minutes
10015 minutes

A ten-hour session at a level that feels exciting can be several days’ worth of exposure. Mixing in the 70s isn’t only better for balance. It’s how you’re still hearing the top end in twenty years. Take breaks, too: after a few hours your sense of the top end gets less trustworthy, which is a good time to stop making EQ decisions.

Then check loud and quiet, on purpose

  1. Do most of the mix at your marked level. Balance, EQ and compression decisions happen here.
  2. Quiet check. Drop it to just above a whisper. The lead vocal should still be clear and the kick and 808 should still read as a groove. If the vocal disappears when it’s quiet, it’s too low in the mix, not just quiet.
  3. Loud check, briefly. Thirty seconds at a loud level shows you what jumps out: sibilance, a harsh synth, a boomy note. Not a chorus on loop for an hour.
  4. Level-match every comparison. References, your last version, the plugin on and off. Run the script or use a matched A/B.
  5. Read the file, not the room. A meter doesn’t have a volume knob. Run the bounce through CoProducer and the report reads integrated LUFS and true peak straight off the file, the same at 2 a.m. as at noon.

Genre notes

What volume should I mix at?
Pick one moderate level and come back to it every time. Calibrate with pink noise at −20 dBFS RMS and an SPL meter (C-weighted, slow) at your seat. Large film rooms use about 85 dB SPL per speaker. In small rooms most people go lower, into the 70s. Consistency matters more than the exact number.
Why does my mix sound different at different volumes?
Because hearing sensitivity changes with level. The equal-loudness contours (Fletcher and Munson, now ISO 226) show that at lower volumes bass and extreme treble need more energy to sound as loud as the mids. Mix quiet and you tend to over-boost the lows; mix loud and you tend to under-do them.
Why does the louder version always sound better?
A small level difference, around a decibel, is often heard as fuller or clearer rather than simply louder. Level-match before comparing. In our test a version with a 3 dB high shelf and 1.5 dB more gain measured 1.9 LU louder, so it would win an unmatched A/B on volume alone.
How do I calibrate my monitors without an SPL meter?
A phone SPL app is fine for consistency even if it’s a few dB off. With nothing at all, use the conversation test: at your mix level you should be able to talk to someone beside you without raising your voice. Then mark the knob so you can return to it.

A free one-pager

The checklist we run before every release.

Loudness, true peak, mono, tails, export settings and the metadata basics, on one page. Leave your email and it opens straight away, or read it here first. No email needed for that.