CoProducer Measure a mix
A glowing cyan subwoofer cone on black marble sending thin magenta harmonic ribbons into the speaker of a smartphone

Low end · 15 October 2026 · 8 min

Why your 808 disappears on phone speakers

NoDAW Labs · Lacquer Vol. 05

Most phone speakers barely play anything under about 200–300 Hz, so a clean 808 sitting at 40–60 Hz is mostly not there on a phone. What survives is its harmonics. Blend in a parallel layer of controlled harmonics between roughly 120 Hz and 1.5 kHz, check it through a phone-speaker filter, and the note comes back without touching the sub.

You know this one. In the studio the 808 is the whole record: long, round, rattling the desk. Then you send the bounce to your phone, hit play on the bus, and the hats, the snare and the vocal are all there, sitting on top of nothing. The beat feels like it lost a floor. Nothing is wrong with the file. The phone just can’t play the note you wrote.

The fix isn’t more sub. It’s giving the 808 something a tiny speaker can actually reproduce, and keeping the real low end exactly where it is for the systems that can play it.

A phone hears the harmonics or nothing

A phone speaker is a driver about the size of a fingernail. It can’t move enough air to make much 50 Hz at any volume, so its output falls off hard somewhere in the low hundreds of hertz. Where exactly depends on the phone, but somewhere between 200 and 500 Hz is a fair rough picture. A laptop does a bit better and gives up closer to 100–150 Hz.

An 808 on G1 has a fundamental at 49 Hz. A1 is 55. Even an 808 riding high in the key rarely goes much past 80–90 Hz. So on a phone, the fundamental, which is most of the 808’s energy, simply doesn’t play. What you hear is whatever the 808 has above 200–300 Hz: its harmonics at 2×, 3×, 4× the note and up.

Here’s the part that makes the fix work. When your ear gets a stack of harmonics at 98, 147, 196, 245 Hz, your brain fills in the 49 Hz pitch that isn’t physically there. Psychoacoustics calls it the missing fundamental. A clean sine 808 has almost no harmonics, so there’s nothing to infer the note from. A saturated 808 carries its own pitch up into the range a phone can play.

The test: same 808, five ways

We built a synthetic four-note 808 line (G1, G1, F1, A1, quick pitch drop into each note, long decay) and a stand-in for the rest of the mix: band-limited noise from 300 Hz to 8 kHz at a fixed level. Then we made four variants, matched all of them to the same full-range RMS so nobody wins by being louder, and ran each through two rough speaker models: a laptop (4th-order high-pass at 150 Hz) and a phone (4th-order high-pass at 300 Hz). These are synthetic test signals and simple filters, not a measurement of any real phone, but the gaps between versions are what you’ll hear.

VersionFull-range RMSSample peakLaptop modelPhone model808 vs rest of mix, on the phone
A · clean sine 808−16.2 dB−6.0 dB−45.8 dB−57.5 dB−33.4 dB
B · parallel harmonics, −12 dB blend−16.2 dB−5.3 dB−30.5 dB−39.3 dB−15.3 dB
B · parallel harmonics, −6 dB blend−16.2 dB−3.9 dB−25.3 dB−34.1 dB−10.1 dB
C · whole 808 driven hard (tanh)−16.2 dB−11.1 dB−35.1 dB−47.7 dB−23.7 dB
D · clean 808 slowed to 0.8×−16.2 dB−5.3 dB−49.3 dB−59.5 dB−35.5 dB

Read the phone column. The clean 808 sits 33 dB under the rest of the mix: on a phone, it’s gone. A parallel harmonic layer blended 12 dB under the 808 brings it up by about 18 dB on the phone model and costs 0.7 dB of peak. Push the blend to −6 and the gain is about 23 dB, for 2.1 dB of peak. The full-range level didn’t move, because we matched it, so the sub is doing the same job it was doing before.

Version C is interesting for a different reason. Driving the whole 808 into saturation helps the phone by about 10 dB and drops the sample peak 5 dB at the same RMS, because it squares off the wave. That’s exactly why trap and drill engineers clip 808s on purpose: it buys loudness and headroom. But it changes the sub itself, and you can’t dial the phone layer separately from the weight. Parallel gives you two faders instead of one.

Here’s what the −6 dB blend actually added on the first note, before any speaker model:

HarmonicFrequencyLevel vs the 49 Hz fundamentalDoes a phone play it?
2nd98 Hz−14.2 dBNo
3rd147 Hz−16.7 dBBarely; a laptop does
4th196 Hz−8.8 dBBarely
5th245 Hz−17.2 dBPartly
6th294 Hz−22.2 dBPartly
7th343 Hz−21.1 dBYes
9th441 Hz−31.0 dBYes

The parallel harmonics move, step by step

  1. Send or duplicate the 808 to its own bus. Leave the original alone. That one keeps the sub.
  2. Saturate the copy hard. Tape, tube, a soft clipper, a distortion: anything that makes harmonics. You’re not listening to this channel on its own, so don’t be shy. The ffmpeg version below drives it 24 dB into a soft clipper.
  3. Band-limit the copy, roughly a high-pass at 100–150 Hz and a low-pass at 1–2 kHz. The high-pass keeps it from stacking on your sub; the low-pass keeps the fizz away from the vocal and hats.
  4. Blend it up with a phone filter on the monitor path (or just your phone) until each 808 note reads as a note, then back off a dB or two. Somewhere between −18 and −6 dB under the dry 808 is a good range to start in.
  5. Check it full-range and in mono. The sub should feel identical. If the low mids feel thick, pull the blend back or move the low-pass down.

Flavor matters. Asymmetric saturation (tube- or tape-style) adds even harmonics: 2nd and 4th, which are octaves of the note and sit very musically. Symmetric clipping adds odd harmonics, the 3rd and 5th, which is where the bark and growl come from. Trap and drill usually want the bark. R&B, clean pop and anything with a sung bass line usually want the octaves, blended lower. In house and techno the kick tends to own the sub and the bass already lives higher, so this matters less there, but the phone check still tells you if the groove survives.

Slowed versions make it worse

If you also put out a slowed edit, check the slowed one on a phone separately. Slowing to 0.8× by resampling drops every pitch with it: a G1 at 49 Hz lands near 39 Hz. In the test that cost another 2 dB on the phone model and 3.5 dB on the laptop model, on an 808 that was already barely there. A slowed version built from the harmonic-layered mix holds up far better than one built from a clean-sine mix. If you make your slowed edits in ScrewAI, run the result through the same phone check before it goes out. Tempo changes the low end too, and screw tempo still needs a legal peak covers the peak side of it.

A phone check you can run on any bounce

This writes two files next to your bounce: .phone.wav (a rough phone-speaker filter you can just listen to) and .harm.wav (the parallel-harmonics move done in ffmpeg, so you can hear what it would give you before you touch the session). Then it prints the levels. It needs only ffmpeg.

#!/usr/bin/env bash
# phone_check.sh in.wav: writes in.phone.wav (rough phone speaker: 4th-order high-pass at 300 Hz)
# and in.harm.wav (parallel harmonics: copy driven 24 dB into a soft clipper, 120 Hz-1.5 kHz only, pulled down 12 dB, mixed back in).
set -euo pipefail
in="$1"; b="${in%.*}"
ffmpeg -v error -y -i "$in" -af "highpass=f=300:poles=2,highpass=f=300:poles=2" "$b.phone.wav"
ffmpeg -v error -y -i "$in" -filter_complex \
 "[0:a]asplit[dry][wet];[wet]volume=24dB,asoftclip=type=tanh,highpass=f=120:poles=2,highpass=f=120:poles=2,lowpass=f=1500:poles=2,volume=-12dB[h];[dry][h]amix=inputs=2:normalize=0" \
 -c:a pcm_f32le "$b.harm.wav"
ffmpeg -v error -y -i "$b.harm.wav" -af "highpass=f=300:poles=2,highpass=f=300:poles=2" "$b.harm.phone.wav"
for f in "$in" "$b.phone.wav" "$b.harm.wav" "$b.harm.phone.wav"; do
  ffmpeg -nostats -i "$f" -af astats=measure_overall=RMS_level+Peak_level:measure_perchannel=none -f null - 2>&1 \
   | awk -v f="$f" '/RMS level dB/{r=$NF} /Peak level dB/{p=$NF} END{printf "%-22s RMS %6.1f dB  peak %6.1f dB\n", f, r, p}'
done

On the synthetic 808 line it printed:

808_clean.wav          RMS  -16.2 dB  peak   -6.0 dB
808_clean.phone.wav    RMS  -59.4 dB  peak  -22.7 dB
808_clean.harm.wav     RMS  -15.8 dB  peak   -5.2 dB
808_clean.harm.phone.wav RMS  -39.0 dB  peak  -17.9 dB

About 20 dB more 808 on the phone, for 0.4 dB of full-range level and 0.8 dB of peak. (The ffmpeg filters and the Python model in the table disagree by a couple of dB on the clean file. That’s expected; both are rough speaker models. Compare versions through the same one.) The fuller Python version that produced the tables, with the laptop model and the harmonic breakdown, is phone808.py in the demo folder.

If you want to see it rather than run a script, drop the before and after bounces on CoProducer’s analyze page. It draws a spectral map of the file right in the browser, and you can see whether each 808 note lights up above the bottom rows or only down at the floor, where phones never reach.

Why can I hear my 808 on headphones but not on my phone?
Headphones sit right at your ear and can reproduce 40–60 Hz easily. A phone speaker can’t, and its output falls off hard somewhere around 200–500 Hz depending on the model. If the 808 is mostly fundamental, the phone has nothing left to play. Harmonics above 200–300 Hz are what carry it.
Should I just boost the 808 around 100 Hz?
It helps a laptop a little, but 100 Hz is still below what most phone speakers reproduce, and the boost eats headroom on every system that can play it. Adding harmonics higher up gives the phone something real to play without making the sub heavier.
Does saturating the 808 hurt my master?
Not in the test. A parallel layer blended at −12 dB added 0.7 dB of sample peak at the same full-range level. Driving the whole 808 hard lowered the peak by 5 dB because it squares the wave, which is why clipping 808s is a common loudness move in trap. Just watch the 150–500 Hz area for build-up.

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.