128kbps?? Njäää, så enkelt är det inte. Algoritmkodning är ett knepigt område. Se här:
Digital representation ( =lagring) av ljud går i princip att göra på två olika sätt, endera sk linjär representation eller kodning.
Linjär representation bygger på att man inte tricksar med det ljud man mäter utan att man mäter av det rätt upp och ner och lagrar resultatet.
Kodning bygger på att man mäter ljudet - kör det igenom flera steg som utför matematiska beräkningar och sedan lagrar resultatet.
Man har två primära problem att fightas med. Det ena kallas för "samplingsteoremet" och beskrevs år 1928 av Harry Nyquist (Nyquistteoremet).
Detta säger i princip att man måste mäta minst dubbelt så tätt som den information man vill lagra.
Dvs om man vill lagra max 20kHz ljud, så måste man mäta minst 40.000 ggr per sekund.
Att tex en CD använder 44.1 kHz beror på att dom första digitala ljudbandspelarna var ombyggda videobandspelare.
Det andra problemet är att man måste kunna återge alla ljudstyrkor. Från dom lägsta, brusnivån, till dom starkaste. Detta gör man i den digitala världen genom att dela upp ljudnivån i "trappsteg", kvantisering.
Skall man sedan lagra ljud "rätt upp och ner" så krävs det förutom dessa , för CD, 44100 mätningar / sekund, att man har tillräckligt många trappsteg. Tex 65536 trappsteg, 16 bitar digitalt, som räcker bra för ljudreproduktion.
Skall man sedan ha stereo, så blir det en helvetes massa data att lagra. Är kravet dessutom att man skall kunna lyssna på detta , streama eller motsv, så går det åt en enorm bandbredd för detta.
Av dessa anledningar så har man hittat på olika sätt att minska det som behövs lagras, och den bandbredd som krävs för att spela upp det, med olika matematiska metoder. Kodning.
------------------- kodning ---------------------------------------
Att kodning för att reducera datamängden fungerar för ljud beror på örat och hjärnan inte är perfekta.
Hörseln har så kallade "maskeringströsklar" som innebär att ett ljud av en viss tonhöjd och styrka kommer att maskera bort svagare ljud på samma tonhöjd.
Dessa maskeringströsklar är olika beroende på tonhöjd. För låga toner, bas/mellanregister, så ligger maskeringströskeln långt under maximala ljudnivån, för diskant så ligger maskeringströskeln nära maxnivån.
Tex så kan man måhända vid 200Hz höra ett ljud på 70dB samtidigt som ett ljud på 110dB, medans man vi 10kHz inte kan höra ett ljud på 100dB samtidigt som ett ljud på 110dB.
Rent digitalt så innebär detta att man inte behöver lika många bitar för att tillfredställa örat vid 10kHz som vid 200Hz.
Andra trick är tex det uppenbara att om det är tyst tex vid 10Khz. Då behöver vi inte lagra något ljud just där.
Flera trick är bla det att om allt ljud mellan kanske 50 och 500Hz är lika i både höger och vänster kanal , så räcker det att lagra bara en kanal samtidigt som man lagrar information om att "spela upp skiten i både höger och vänster kanal".
Hörselns "blockeras" dessutom av ett plötsligt starkt ljud och kan inte identifiera ett svagt ljud strax efteråt. Detta kan man också utnyttja.
------------------ OK, hur gör man -------------------------------
Man måste ha en plan för hur man kodar. Dela upp förfarandet i lämpliga delar och tillsammans med kodningen berätta hur det man har lagrat skall tolkas så att det går att spela upp.
Alla på jorden kan inte göra olika , därför måste man standardisera så att tex tillverkare kan tillverka utrustning som kan lagra och tolka, spela upp, det man har kodat.
En sådan stor kommite som standardiserar ljud och bild heter Moving Pictures Expert Group, MPEG. En av dom standarder dom har utgivit är "MPEG-II Layer 3" eller då: MP3.
----------------- Och detaljerna då -------------------------------------
Layer 3 kodning bygger i princip på sex steg.
1) Styckning
2) Skiktning
3) Mätvärdesanalys
4) Beräkning av maskeringströskel
5) Bitallokering och kodning
6) Förpackning
Så här:
1) Styckning
Styckningen går ut på att man samlar in ljudet från V + H kanal under 24 millisekunder. Varje sådant paket om 24ms behandlas sedan helt separat från alla andra paket.
Ett problem är om det händer något dramatiskt , PANG, under dessa 24ms. Då har kodaren möjligheten att dra i handbromsen och bygga ett speciellt paket på 4ms för att fånga detta "PANG" så bra som möjligt.
Vän av ordning upptäcker nu att jag tidigare sade att man måste mäta mer än 40.000 gånger per sekund för att fånga upp till 20.000Hz. Nu pratar jag 24ms?? Detta är en sak som är jobbig även för en teoretiker att greppa ibland eftersom man blandar två olika aspekter, tid, respektive frekvens.
Man mäter alltså, samplar, med minst 40.000Hz, sedan så gör man det under 24ms och låter en signalprocessor dela upp resultatet i skikt om 750Hz. Se nedan.....
2) Skiktning
Skiktningen går ut på att man hyvlar upp frekvensbandet från 20 - 20000 Hz i 32 lika tjocka skivor på 750Hz var. (Dessutom med 18 finare hyvlingar inuti varje skiva. Överkurs...)
Då får vi en trave av 2 x 32 skivor med 24ms ljud, basljud i nedersta skivan och högsta diskanten längst upp.
Skikt 1, 0-750Hz innehåller all basinformation och grundtoner hos både mans och kvinnoröster. Skikt 2 innehåller 750-1500Hz, alltså precis en oktav. Etc.
För den musikaliskt skolade så är det ganska uppenbart att dom högsta skivorna kommer att innehålla bara ett enda eller mindre än ett helt tonsteg vardera. Detta hjälper till när vi skall koda.
3) Mätvärdesanalys
Nu mäter man maximala ljudnivån i varje skiva och lagrar denna information.
4) Beräkning av maskeringströsklar
Det är nu tricken kommer. Med hjälp av en hörselmodell samt hur starka ljud som finns i närliggande skivor (frekvensband) så "ritar" man upp en kurva från 20-20000Hz som beskriver maskeringsljudnivån för varje skiva. På denna bild så lägger man in maximala ljudnivån för varje skiva.
Resultatet kommer att bli att man för olika skivor får visst många dB mellan maxnivå och maskeringströskel. I vissa skivor så kommer tillochmed maxnivån att ligga under maskeringströslen => Man kommer inte att höra något i den skivan => Inget behövs lagras !
5) Bitallokering och filtillverkning
Nu tar man skiva för skiva, tittar på hur många dB det är mellan max och maskering och kodar detta digitalt i så många bitar som behövs.
(man behöver 16bitar, CD kvalitet, för att klara 96dB).
Genom att så gott som alla skivor kommer att ha mycket mindre än 96dB mellan max och maskering så behöver vi alltså mindre än 16bitar för varje skiva. Ofta kanske bara 0-1 bit (!) för diskantskivor, 2-4 bitar för mellanskivorna och 6-10 bitar för dom lägsta skivorna.
Vi kan tricksa mer på engång. Man kollar om skillnaden mellan V-H skiva är liten. I så fall räcker det att lagra en gång och tala om att det skall spelas i båda kanaler. Kallas Joint stereo.
Är det låg diskant? Skit i alla diskantskivor. Spela bara bas + mellanskivor. Kallas för Dynamisk Diskantfiltrering.
Är det skillnad mellan V-H men inte så stor? OK. Då lagrar vi bara en summerad mono-skiva plus information om att vi skall spela den lite högre i ena kanalen för att lura örat att det är stereo. Detta kallas Skalfaktorpanorering.
Höga band som måste höras? OK, representera dom med en bit som talar om att en inbyggd synt(!) skall spela en ton (kom ihåg att övre skivorna bara en en helton eller mindre)
6) Förpackning
Lägg i hop alla resulterande bitar för alla skivor med information tillsammans med information om vilka skivor det är, hur högt dom skall spelas, om det skall tolkas som mono etc. Detta är en resulterande MP3 ljudfil för 24ms ljud.
------------------- Skitbra,men.......finns det inga problem --------------------
Jodå, en shitload med problem. Alla dessa trick GÅR att använda så att ett resulterande lyssnartest har svårt till omöjligt att höra en försämring från CD ljud. Men i verkligheten så lägger begränsningar på tillgänglig bitström bandbredd) samt genvägar och förenklingar i kodaren till en massa problem som gör att det låter mer eller mindre illa. Ofta så får man välja mellan bra diskant eller lite distorision. För häftig Joint Stereo kommer dessutom att få folk som lyssnar med hörlurar att bli sjösjuka.
Standarden specar alltså bara hur det packade filformatet skall se ut. Inte hur kodaren tänker när den sparar bitar och luras. Så man inte säga tex att "MP3 vid 192kbit" låter bra eller låter dåligt. Man måste först veta vilken kodare som har använts och hur den beter sig.
-------------------------- Exempel på maskeringseffekt -------------------
Om man lyssnar på tex en 1000Hz ton och samtidigt lägger till en ton på 1100Hz så kommer man att sluta höra denna om man sänker den 18dB. Men om man lyssnar på 1000Hz och lägger till en ton på 2000Hz (en oktav högre) så måste man sänka den hela 45dB för att man skall sluta höra den.
Så tex i "skiva 2" som innehåller 750 -1500Hz så måste hörselmodellen ta hänsyn till att denna skiva kan innehålla toner på både 750 och 1500Hz => Dvs att maskeringströskeln måste åtminstone läggas 45dB under maxnivå i den skivan.
Går vi upp i skivor till måhända skiva 10, så är den så snäv (Alla skivor är 750 Hz men där uppe så är det bara ett enda tonsteg, och det är så örat bryr sig) att även om det är "fullt blås" i skiva 9 och 11 så maskeras en ton i skiva 10 även om den ligger bara 10dB lägre.
-------------------------- "dB" "Bitar" ...Ehhhhhhh ------------------------
I princip: Med en enda bit ( "noll" eller "ett") så kan man ange om nåt är tyst eller om det låter. Med två bitar så kan man ange fyra lägen ( 00, 01, 10, 11) där "00" = tyst, "11" = fullt blås och där då "10" = hälften så högt som fullt blås.
I alla sammanhang där man elektriskt talar om hälften av en signal - så motsvarar det 6dB.
Skulle jag fortsätta detta med fler och fler bitar så ser man att för varje bit man lägger till - så kan man beskriva ytterligare 6dB.
Med exempelvis CD, med 16 bitar, så kan man beskriva 16x6 = 96 dB ljud.
Vinsten med kodningen är då uppenbar eftersom enligt maskeringseffekten beskriven ovan , så behövs ca 8 bitar för "1000Hz" ( 45 dB = ca 6 dB x 8 )och bara två bitar i "skiva 10".
-------------------------- Förorening av ljudkällan ------------------------
Det som händer vid all digital lagring av ljud är att man får ett tillskott av digitalt brus, kvantiseringsbrus / kvantiseringsdistorision. Detta har man även vid lagring med CD kvalitet men då ligger det så långt ner att det inte ställer till något.
När man kodar "MP3" så lever man helt och hållet på ovan beskrivna maskeringseffekt.
Spelar man tex in ett mönster av sinustoner (en per oktav) och tittar på resultatet efter en MP3 kodning i en spektrumanalysator så ser det.....förjävligt ut. Men vid tillräcklig bithastighet på en MP3 kodning och en bra kodare så hörs detta inte.
------------------------------- Bitsvält -------------------------------------
Vid låga bithastigheter på MP3 (måhända 128kbit och under för stereo) så kommer inte tillgängliga bitar att räcka till för att klara av att hantera alla skivor med tillräckligt antal bitar utan det kommer att saknas bitar.
Detta kallas för att kodaren arbetar under bitsvält "bit starvation".
Det är då man måste ta till alla "fula" trick beskrivna ovan, diskantdämpning, joint stereo etc.
Detta gör man utifrån att:
- Den som lyssnar gör det på en bilradio, hörselsnäckor, enkel stereo eller motsvarande
- Den som lyssnar - lyssnar på popmusik
- Den som lyssnar - lyssnar på normal nivå så att man har ganska mycket störningar från miljön runt omkring som maskerar skräpljud.
Under bitsvält så skiter det sig å det grövsta om man tex sätter sig med dyra bra hörlurar och lyssnar på tex ett grand piano.
Men eftersom målet med MP3, speciellt vid låga bithastigheter med bitsvält, är att tillfredställa "musikradiolyssnare i köket" så blir det så.
Och detta kan man inte skylla på kodningen, det är den låga bithastigheten som främst är boven.
------------------- Två paradoxer -----------------------------------
Kom ihåg att jag skrev att CD har 16 bitar = 96dB. Med MP3 kodning så kan man få man mycket större område än 96 dB (!). Därför att med varje mätvärde i en skiva, så lagrar man också en skalfaktor som talar om hur högt detta värde skall förstärkas (ungefär som olika spänningsområden på ett universalinstrument, där man med 1999 som max utslag kan mäta tex 1,999mV eller 1999V genom olika områden , skalfaktorer).
Under måttlig bitsvält, så får man "fräsig" diskant som vid snabb lyssning kan tolkas som bättre än tex ett CD orginal. Detta visar på att man skall inte snabblyssna på en MP3 källa och ge ett omdöme - utan man måste lyssna så länge att öronen hinner begripa om det är naturliga övertoner eller tröttande "fräs".
--------------------------------- END -------------------------------------
Kramp......
/Göran
I have nothing but confidence in you. And very little of that.
(Groucho Marx).
Åker numera Audi A6 -08 4.2FSI