Wat gebeurt er als je een MP3 maakt?
Wanneer een WAV- of M4A-bestand wordt omgezet naar MP3, voert de encoder een reeks stappen achtereenvolgens uit. De invoer bestaat uit ruwe PCM-audio — ongecomprimeerde samples die luchtdruk over tijd weergeven. De uitvoer is een stroom gecomprimeerde frames, elk van een paar milliseconden audio.
De pipeline werkt als volgt:
- Windowing: de audio wordt opgesplitst in overlappende frames van 1.152 samples (ongeveer 26 ms bij 44,1 kHz)
- Frequentieanalyse: elk frame wordt omgezet van het tijddomein naar het frequentiedomein via de Modified Discrete Cosine Transform (MDCT)
- Psychoakoestische analyse: de encoder berekent welke frequenties in dit frame gemaskeerd (onhoorbaar) zijn
- Kwantisatie: gemaskeerde frequenties worden verwijderd of krijgen minder bits; hoorbare frequenties krijgen meer bits
- Huffman-codering: de gekwantiseerde data wordt verliesvrij gecomprimeerd via entropiecodering
- Bitstroom-assemblage: frameheader, zijdelingse informatie en gecodeerde audiodata worden samengebundeld in de uitvoer
Het resultaat: een 44,1 kHz, 16-bit stereo WAV van 1.411 kbps wordt een 320 kbps MP3 — bijna 80% kleiner — terwijl het vrijwel identiek klinkt.
Het psychoakoestisch model
Het psychoakoestisch model vormt de kern van MP3-compressie. Het is een wiskundig model van hoe het menselijk gehoor werkt, en het bepaalt wat de encoder veilig kan verwijderen. Het model maakt gebruik van drie soorten maskering:
Simultane (frequentie)maskering
Een hard geluid op één frequentie maakt nabijgelegen zachtere geluiden onhoorbaar. Een luid bekkencijmbal op 8 kHz maskeert bijvoorbeeld een zachte gitaarboventoon op 9 kHz. De encoder detecteert deze gemaskeerde frequenties en kent ze minder bits toe (of nul bits). Je zou ze toch niet horen.
Temporele maskering
Maskering werkt ook in de tijd. Een hard geluid maskeert zachtere geluiden die er net vóór voorkomen (pre-maskering, ongeveer 5 ms) en net erna (post-maskering, ongeveer 50–100 ms). De encoder gebruikt dit om data te verminderen tijdens overgangen tussen luide en stille passages.
Absolute gehoordrempel
Menselijke oren zijn niet even gevoelig voor alle frequenties. We horen 1–5 kHz het beste en zijn veel minder gevoelig onder 100 Hz en boven 16 kHz. De encoder verwijdert alle audio onder de absolute gehoordrempel — geluiden die zo zacht zijn dat geen mens ze kan horen, ongeacht andere geluiden.
Kernpunt: MP3 "gooit niet zomaar data weg." Het gebruikt een geavanceerd model van het menselijk gehoor om uitsluitend audio te identificeren en te verwijderen die je niet kunt waarnemen. Daarom klinkt een 320 kbps MP3 in blindtests niet te onderscheiden van het origineel.
Hoe bitrate samenhangt met kwaliteit
Bitrate is het aantal kilobits dat de encoder per seconde mag gebruiken. Meer bits betekenen minder compromissen:
| Bitrate | Wat wordt verwijderd | Hoorbaar resultaat |
|---|---|---|
| 320 kbps | Alleen werkelijk onhoorbare inhoud | Transparant — niet te onderscheiden van origineel |
| 256 kbps | Onhoorbare + grensgevallen | Transparant voor 99% van de luisteraars |
| 192 kbps | Enige gedeeltelijk hoorbare inhoud | Goede kwaliteit; artefacten zeldzaam op consumentenapparatuur |
| 128 kbps | Merkbare compromissen | Acceptabel voor casual luisteren; geoefende oren horen verlies |
| 64 kbps | Agressieve ingrepen over alle frequenties | Duidelijke artefacten; alleen geschikt voor spraak |
De relatie is niet lineair. De stap van 128 naar 192 kbps is een enorme kwaliteitssprong. De stap van 256 naar 320 kbps is nauwelijks merkbaar. Dit komt doordat het psychoakoestisch model de meest hoorbare inhoud als eerste prioriteit geeft — de laatste bits die bij hoge bitrates worden bespaard, zijn het minst opvallend.
Een korte geschiedenis van MP3
MP3 — officieel MPEG-1 Audio Layer III — werd ontwikkeld aan het Fraunhofer Instituut in Duitsland, voornamelijk door Karlheinz Brandenburg. De standaard werd in 1993 gepubliceerd als ISO 11172-3.
Het formaat kende enkele mijlpalen:
- 1993: ISO 11172-3 gepubliceerd. MP3 bestaat als standaard maar heeft nog geen goede encoders
- 1995: Fraunhofer brengt de eerste MP3-encoder uit. Bestanden delen begint op universitaire netwerken
- 1998: LAME-project begint als "LAME Ain't an MP3 Encoder" — een patch om de referentie-encoder te verbeteren
- 1999: Napster lanceert. MP3 wordt wereldwijd het dominante muziekformaat
- 2003: iTunes Store lanceert en verkoopt AAC-bestanden (de beoogde opvolger van MP3)
- 2017: Alle MP3-patenten vervallen. Het formaat is volledig vrij te gebruiken zonder licentie
Ondanks dat AAC en Opus technisch superieur zijn, blijft MP3 het meest ondersteunde audioformaat ter wereld. Elk apparaat, elke speler, elk besturingssysteem ondersteunt MP3.
Waarom LAME de beste MP3-encoder is
LAME (LAME Ain't an MP3 Encoder) is een open-source MP3-encoder die sinds 1998 continu wordt verfijnd. Het is de encoder die in FFmpeg wordt gebruikt als libmp3lame, en het is wat CleverUtils gebruikt voor elke MP3-conversie.
Wat LAME bijzonder maakt:
- 25+ jaar optimalisatie. Het psychoakoestisch model, de kwantisatie en de VBR-afstemming zijn verfijnd via duizenden luistertests en codeverbeteringen.
- VBR-kwaliteitsniveaus. LAME's VBR V0 t/m V9-presets kennen dynamisch bitrate toe per frame. V0 (hoogste, ~245 kbps gemiddeld) t/m V9 (laagste, ~65 kbps gemiddeld) dekken elk kwaliteitsdoel.
- Automatische joint stereo. LAME analyseert elk frame en schakelt automatisch tussen mid/side-stereo en volledige stereo-codering, afhankelijk van wat efficiënter is. Daarom levert de standaardmodus optimale resultaten.
- Gapless playback-info. LAME schrijft encoder-vertraging en opvullingsinformatie in de MP3, waardoor naadloze trackovergangen mogelijk zijn op ondersteunende spelers.
Onze backend: CleverUtils gebruikt FFmpeg met libmp3lame. Wanneer je VBR selecteert, gebruikt het commando -q:a (kwaliteitsniveau 0–9). Wanneer je CBR selecteert, wordt -b:a 320k gebruikt (constante bitrate). Beide doorlopen de volledige LAME-psychoakoestische pipeline.
Generatieverlies: waarom her-encoderen slecht is
Elke keer dat je audio naar een lossy formaat codeert, neemt de encoder beslissingen over wat hij weggooien. Als je een MP3 opnieuw naar MP3 codeert, verwijdert de tweede encoder extra data — inclusief data die de eerste encoder belangrijk genoeg vond om te bewaren.
Dit heet generatieverlies, en het is cumulatief:
- 1e codering: originele kwaliteit (onhoorbare inhoud verwijderd)
- 2e codering: lichte degradatie (grensgevallen verwijderd die in pass 1 bewaard waren)
- 5e codering: merkbare artefacten in complexe passages
- 10e codering: duidelijk hoorbaar trillend geluid, frequentieverlies, stereo-ineenstorting
De praktische regel: codeer altijd vanuit de originele verliesloze bron (WAV, FLAC of ALAC). Als je een andere bitrate nodig hebt, ga je terug naar het origineel en codeer je opnieuw — codeer nooit een bestaande MP3 opnieuw. Dit geldt ook voor M4A (AAC)-bronnen: converteer eenmalig naar MP3, converteer het resultaat niet nogmaals.
Veelgemaakte fout: Een 128 kbps MP3 converteren naar 320 kbps verbetert de kwaliteit niet. De ontbrekende data van de 128 kbps-codering is permanent verloren. Je krijgt alleen een groter bestand met dezelfde (of iets slechtere) kwaliteit door een tweede coderingsstap.