
Monitoring · 19 October 2026 · 8 min
Your low end changes when you move your chair. That’s the room, not the mix
If your 808 or bass gets louder or disappears when you lean back or roll the chair a foot, you’re hearing room modes: low frequencies that resonate between parallel walls (f = c ÷ 2L for each dimension) and pile up in some spots while cancelling in others. In an untreated room, don’t EQ the mix to your chair. Find a better seat, then check the low end on headphones, against references and on a meter.
Every bedroom producer has had this night. The 808 sounds perfect at the desk. You lean back to listen like a fan and it’s twice as big. You walk to the door and one note of the line just vanishes. Then the bounce goes to the car and it’s either boomy or gone, and you can’t tell which version of your room lied to you.
All of them, a little. Below a couple of hundred hertz a small room isn’t a neutral box. It’s a set of resonances, and where you sit decides which ones you hear.
What a room mode is
Bass wavelengths are long: about 8 m at 41 Hz, the low E of a lot of 808 lines. When half a wavelength fits exactly between two parallel walls, sound bouncing back and forth reinforces itself and the room resonates. That happens at f = c ÷ (2 × L), where c is the speed of sound (about 343 m/s) and L the distance between the walls, and again at every whole multiple of that frequency.
Each of those resonances has a fixed pattern in the room. Pressure is highest at the walls. For the first mode it drops to almost nothing halfway between them, so a seat in the middle of the room sits in a hole at that frequency. The second mode has two holes, at a quarter and three quarters of the way. And so on up.
These wall-to-wall ones are called axial modes, and they’re the strongest. There are weaker ones that bounce off four walls (tangential) or all six (oblique). In a bedroom-sized room they’re spread far enough apart that the low end behaves like a handful of separate peaks and holes rather than a smooth curve, until they get dense somewhere in the low hundreds of hertz.
Work out your own room’s modes
You need a tape measure and this. It lists the axial modes for each dimension, flags the ones that land on top of each other and the big gaps between them, and shows where the length-mode holes are:
#!/usr/bin/env python3
"""room_modes.py: axial room modes for a rectangular room, plus where they bunch up.
python3 room_modes.py 3.6 3.0 2.4 # length width height in metres
python3 room_modes.py 12 10 8 --ft # or in feet
Axial modes (between two parallel walls) are the strongest: f = n * c / (2 * L).
Rigid-wall rectangle maths: a real room with doors, windows and stud walls will differ."""
import sys
C = 343.0 # speed of sound in m/s at about 20 °C
args = [a for a in sys.argv[1:] if not a.startswith("--")]
dims = [float(a) * (0.3048 if "--ft" in sys.argv else 1) for a in args] or [3.6, 3.0, 2.4]
names, top = ("length", "width", "height"), 300
modes = []
for name, L in zip(names, dims):
n = 1
while n * C / (2 * L) <= top:
modes.append((n * C / (2 * L), name, n)); n += 1
modes.sort()
L, W, H = dims
print(f"room {L:.2f} x {W:.2f} x {H:.2f} m, axial modes up to {top} Hz")
for name, d in zip(names, dims):
print(f" {name:6s} {d:4.2f} m: " + ", ".join(f"{f:.1f}" for f, nm, _ in modes if nm == name) + " Hz")
print("\nall axial modes, low to high (gap = distance to the previous one)")
prev = None
for f, name, n in modes:
gap = f - prev if prev else 0
flag = ""
if prev and gap < 0.05 * f: flag = " <- within 5% of the last one: expect a pile-up"
elif prev and gap > 20 and f < 200: flag = " <- big gap below it: expect a hole"
print(f" {f:6.1f} Hz {name} {n} gap {gap:5.1f}{flag}")
prev = f
print(f"\nlength-mode nulls sit at these distances from the front wall (m):")
for n in (1, 2, 3):
print(f" {n * C / (2 * L):5.1f} Hz: " + ", ".join(f"{(2 * k + 1) * L / (2 * n):.2f}" for k in range(n)))
print(f"38% of the length: {0.38 * L:.2f} m from the front wall (a starting point, not a cure)")
print(f"dead centre {L / 2:.2f} m sits in the null of every odd length mode")
For a common bedroom, 3.6 × 3.0 × 2.4 m (about 12 × 10 × 8 ft):
$ python3 room_modes.py 3.6 3.0 2.4
room 3.60 x 3.00 x 2.40 m, axial modes up to 300 Hz
length 3.60 m: 47.6, 95.3, 142.9, 190.6, 238.2, 285.8 Hz
width 3.00 m: 57.2, 114.3, 171.5, 228.7, 285.8 Hz
height 2.40 m: 71.5, 142.9, 214.4, 285.8 Hz
all axial modes, low to high (gap = distance to the previous one)
47.6 Hz length 1 gap 0.0
57.2 Hz width 1 gap 9.5
71.5 Hz height 1 gap 14.3
95.3 Hz length 2 gap 23.8 <- big gap below it: expect a hole
114.3 Hz width 2 gap 19.1
142.9 Hz length 3 gap 28.6 <- big gap below it: expect a hole
142.9 Hz height 2 gap 0.0 <- within 5% of the last one: expect a pile-up
171.5 Hz width 3 gap 28.6 <- big gap below it: expect a hole
190.6 Hz length 4 gap 19.1
214.4 Hz height 3 gap 23.8
228.7 Hz width 4 gap 14.3
238.2 Hz length 5 gap 9.5 <- within 5% of the last one: expect a pile-up
285.8 Hz length 6 gap 47.6
285.8 Hz width 5 gap 0.0 <- within 5% of the last one: expect a pile-up
285.8 Hz height 4 gap 0.0 <- within 5% of the last one: expect a pile-up
length-mode nulls sit at these distances from the front wall (m):
47.6 Hz: 1.80
95.3 Hz: 0.90, 2.70
142.9 Hz: 0.60, 1.80, 3.00
38% of the length: 1.37 m from the front wall (a starting point, not a cure)
dead centre 1.80 m sits in the null of every odd length mode
A few things jump out. Nothing at all below 47.6 Hz, so an E1 at 41 Hz gets no help from the length of the room. Three modes in the first 72 Hz, then a 24 Hz hole before 95 Hz. And 142.9 Hz is shared by the length and the height, because 3.6 m is exactly one and a half times 2.4 m. Builders love neat ratios. Rooms with neat ratios stack their modes, and a stacked mode is a note that rings.
Same 808, seven chairs
Mode frequencies tell you where the trouble is. They don’t tell you what your seat hears. For that we ran a textbook modal model of the same room. It’s computed, not measured: rigid walls, a low-frequency decay of 0.6 s (a typical untreated small room), two speakers 0.6 m from the front wall and 0.9 m from the side walls playing mono bass, and a listener centred left to right with ears at 1.1 m. Each number is the level at that seat compared with the room’s average at that frequency (averaged over 1,100 points), so 0 dB means the seat hears what the room does on average.
| Seat (from front wall) | E1 41 Hz | G1 49 Hz | A1 55 Hz | C2 65 Hz | D2 73 Hz | 100 Hz | 808 line, loudest − quietest note |
|---|---|---|---|---|---|---|---|
| 25% (0.90 m) | −1.3 | +0.6 | +0.4 | −3.1 | −7.3 | −5.2 | 7.8 dB |
| 32% (1.15 m) | −5.7 | −1.5 | −0.3 | −0.9 | −2.3 | −1.8 | 5.4 dB |
| 38% (1.37 m) | −11.7 | −4.4 | −2.3 | −1.5 | −1.6 | +1.4 | 10.2 dB |
| 45% (1.62 m) | −18.2 | −10.5 | −6.2 | −3.5 | −2.1 | +3.3 | 16.0 dB |
| 50%, dead centre (1.80 m) | −9.8 | −20.0 | −10.6 | −5.3 | −2.6 | +3.5 | 17.4 dB |
| 62% (2.23 m) | −1.9 | −6.2 | −10.9 | −30.4 | −9.9 | +1.6 | 28.6 dB |
| Near the back wall (3.30 m) | +3.9 | +2.9 | +2.2 | +1.4 | −2.4 | +0.1 | 6.3 dB |
The 808 line is E1, G1, A1, C2, D2. Real rooms leak bass through doors, windows and stud walls, so they’re usually less extreme than a rigid-wall model. The pattern is what to take away, and it’s not subtle:
- Dead centre is the worst seat in the room. G1 at 49 Hz sits right on the first length mode (47.6 Hz), and the middle of the room is that mode’s hole: −20 dB. Mix there and you’ll push that note until it’s huge everywhere else.
- Thirty centimetres is a different mix. Rolling back 30 cm from the 38% seat took G1 from −4.4 to −12.4 dB and A1 from −2.3 to −7.2. Sliding 30 cm sideways changed every 808 note by 0.3 dB or less, because a symmetric pair of speakers playing mono bass barely excites the first side-to-side mode. In this room, front to back is what matters.
- 38% is a starting point, not a cure. The old rule of sitting about 38% of the way into the room keeps you out of the worst length-mode holes, and it was fine from C2 up here. But E1 still sank 11.7 dB. The most even 808 line in this room was at 32%.
- The back wall lies the other way. Against it, most of the 808 line gets louder (+1.4 to +3.9 dB). It’s fairly even, but it’s even and too loud, so mixes made there tend to come out thin.
And no seat is flat. Scanning 35–120 Hz in quarter-hertz steps, every seat had at least 16 dB between its loudest and quietest point, and the 62% seat had 37 dB. That’s why you don’t trust any single chair with the low end. You use the room for what it’s good at and check the bass somewhere else.
Checks that work without treatment
- Find the least-bad seat. Start around 38% of the room length, away from the exact centre, speakers symmetric. Play the tones below and move your head forward and back in 15–30 cm steps. Pick the spot where the notes sound most even, then mark the floor so you sit there every time.
- Listen to steps, not songs. A song hides the room because the notes keep moving. Stepped sine tones let you name the note that booms and the one that vanishes. A slow sine sweep works too, but steps are easier to write down.
- Measure if you can. An inexpensive measurement mic and free room-analysis software (REW is the one most people use) will draw the curve your ears are guessing at. Measure a few points around your head and average them; one point is as misleading as one chair.
- Check the bass on headphones, in mono. Headphones skip the room entirely. They’re not perfect in the sub, but they don’t have nulls that move with your head. Play the 808 line in mono and listen for notes that jump out or drop away.
- Compare against references in the same seat. Level-match two or three released tracks in your genre and flip between them and your mix. The room colours all of them the same way, so you’re judging the difference, which is the part that survives the trip to the car.
- Read a meter that can’t hear your room. A spectrum view or a reference comparison reads the file, not the air. CoProducer’s reference match lines your bounce up against a reference metric by metric and shows where it diverges, and that answer doesn’t change when you roll your chair.
- Then translate. Car, earbuds, phone. Last, not first, because by then you already know what the low end should be.
Here are the tones. Twelve notes from E1 to E3, two seconds each, at a safe −18 dBFS peak, with a cue list so you know what you’re hearing:
#!/usr/bin/env bash
# bass_steps.sh: stepped sine tones for a by-ear room check (2 s each, 0.5 s gap, -18 dBFS peak).
# ./bass_steps.sh -> bass_steps.wav plus a cue list of which tone plays when
# Play it at a moderate level, sit still, and note which tones jump out or vanish.
# Then move 30 cm and play it again.
set -euo pipefail
notes=("E1 41.2" "F1 43.7" "G1 49.0" "A1 55.0" "B1 61.7" "C2 65.4" "D2 73.4" "E2 82.4" "G2 98.0" "A2 110.0" "C3 130.8" "E3 164.8")
inputs=(); filt=""; i=0; t10=0 # time in tenths of a second
for n in "${notes[@]}"; do
set -- $n
inputs+=(-f lavfi -i "aevalsrc=0.126*sin(2*PI*$2*t)*min(1\,min(t\,2-t)/0.02):s=48000:d=2")
inputs+=(-f lavfi -i "anullsrc=r=48000:cl=mono:d=0.5")
filt+="[$((2*i)):a][$((2*i+1)):a]"
printf "%3d.%d s %-3s %6s Hz\n" $((t10 / 10)) $((t10 % 10)) "$1" "$2"
t10=$((t10 + 25)); i=$((i+1))
done
ffmpeg -v error -y "${inputs[@]}" -filter_complex "${filt}concat=n=$((2*i)):v=0:a=1[out]" -map "[out]" -c:a pcm_s24le bass_steps.wav
echo "wrote bass_steps.wav ($(ffprobe -v error -show_entries format=duration -of csv=p=0 bass_steps.wav) s)"
$ ./bass_steps.sh
0.0 s E1 41.2 Hz
2.5 s F1 43.7 Hz
5.0 s G1 49.0 Hz
7.5 s A1 55.0 Hz
10.0 s B1 61.7 Hz
12.5 s C2 65.4 Hz
15.0 s D2 73.4 Hz
17.5 s E2 82.4 Hz
20.0 s G2 98.0 Hz
22.5 s A2 110.0 Hz
25.0 s C3 130.8 Hz
27.5 s E3 164.8 Hz
wrote bass_steps.wav (30.000000 s)
Write down what jumps and what vanishes at your seat, then move 30 cm and do it again. In five minutes you’ll know which notes of your 808 line you can’t trust from that chair.
Small fixes that actually help
- Don’t sit or put the desk at the dead centre of the length. It’s the one spot guaranteed to be in the first mode’s hole.
- Keep the speakers symmetric to the side walls. As the model showed, a symmetric pair with mono bass largely sidesteps the first width mode.
- Thick absorption in the corners helps most. Every mode has high pressure in the corners. Thin foam panels do very little at 50 Hz. Bass traps need real depth.
- Room-correction EQ can tame peaks, not fill holes. Cutting a boomy note works. Boosting a null doesn’t, because you’re pushing more energy into a spot where the room cancels it. You spend headroom and the hole stays.
Genre notes
- Trap and drill. 808 lines from E1 to A1 (41–55 Hz) sit below or right on the first modes of most bedrooms, the region the room gets most wrong. Do the final 808 level on headphones and against references, and use the speakers for feel.
- R&B and neo-soul bass. Bass guitar and synth bass from 60 to 120 Hz walk right through the cluster of modes, so one note per bar can bloom or vanish. Stepped tones will tell you which ones before you start riding faders.
- House and techno. The kick fundamental around 50–60 Hz is the groove. If your seat sits in the first length mode’s hole, you’ll overcook the kick. Check it against a reference you know well in that genre.
- Rock and pop. Kick and bass weight around 80–100 Hz. In the example room, the gap between the 72 and 95 Hz modes is where the room gives bass the least help, which makes it an easy place to over-boost the bass guitar and then wonder why the master is wooly everywhere else.
- Why does my bass sound different in different parts of the room?
- Room modes. Low frequencies resonate between parallel walls at f = c ÷ 2L and its multiples, and each resonance is loud in some places and cancelled in others. In our computed example of a 3.6 m room, moving 30 cm front to back changed a 49 Hz note by 8 dB.
- Where should I sit to mix in an untreated room?
- Start around 38% of the room length from the front wall, never at the exact centre, with the speakers symmetric to the side walls. Then test with stepped tones or a measurement mic and move until the low notes are most even. In our example room the best seat was at 32%.
- Can EQ fix room modes?
- Partly. Cutting a peak that booms at your seat helps. Boosting a null does not, because the room cancels that frequency at that spot and the extra energy just costs headroom. Seat position, symmetry and thick bass trapping do more.
- Should I mix the low end on headphones?
- Use them to check it. Headphones skip the room, so the level of each 808 note doesn’t change when you move. Combine that with level-matched references and a meter, then confirm the result on speakers, in the car and on a phone.