Cs. Kádár Péter - XXI. századi Diszkónika, 466. A CD kódolása
A digitális hangrögzítés legnagyobb problémája, hogy miként lehet a hangot a legbiztonságosabban rögzíteni és lejátszani úgy, hogy a lehető legkevesebb adatot igényeljen az eljárás, és viszonylag egyszerű áramkörökkel lehessen feldolgozni ezeket az adatokat.
Ez az egyik oka annak, hogy mint azt a sorozat előző részeiben olvashattad, a Philips és a Sony mérnökei sokat harcoltak egymással. Végül sikerült olyan módszerekben megállapodniuk, amelyek hatékonynak bizonyultak, és nagyon széles választékot tettek lehetővé mind a hanghordozók, mind a CD-játszók körében. Ugyanakkor a CD kódolási rendszere nagyon bonyolult. Minden részletének megértéséhez ugyan nem szükséges felsőfokú matematikai ismeret, de nem árt, ha van. Akkor hát vágjunk bele, hadd csodálkozz, mi mindenre gondoltak az alkotók!
A CD-n az összes adatot egymás után, sorosan, egy spirálba rögzítik, nullára nem visszatérő (NRZI, no return to zero impulse) módon, ami azt jelenti, hogy csak akkor logikai 1 a jel értéke, ha felszín (land, l) és a gödör (pit, p) között átmenet van, tehát vagy a felszín vált át gödörbe, vagy a gödör vált felszínbe. 1 pit hossza 0,3 µm vagy annak egész számú többszöröse.

Már most feltűnhetett, hogy bizonyára van valami időmérő (óra), ami számolja, hogy milyen hosszú ideig van felszín vagy gödör. Erre majd még visszatérek egyszer, nyugi. Most csak annyit, hogy lejátszáskor a legrövidebb gödör vagy felszín 720 kHz-es frekvenciájú jelet állít elő a fotodetektorban, a leghosszabb, 9 egység hosszúságúból pedig 196 kHz-eset. Ezek nagyfrekvenciás szinuszos jelek, ami azt jelenti, hogy a CD lejátszásakor nem négyszögjeleket kell feldolgozni.
Most számoljuk ki, hogy mekkora hang-adatmennyiségnek kell felférnie egy 120 mm átmérőjű CD-re, ha kb. 74 perc a műsoridő! Emlékeztetőül:
8 bit = 1 bájt; 1 024 bájt = 1 kilobájt (1 kB), 1 024 kB = 1 megabájt (1 MB).
74 perc = 74*60 = 4 440 s.
A mintavételi frekvencia 44,1 kHz = 44 100 Hz.
Sztereó a lemez, tehát 2*44 100-zal kell számolni = 88 200 Hz.
16 bites a rendszer, ami másodpercenként 88 200*16 = 1 411 200 bitet jelent.
A CD digitális sebessége, pongyolán fogalmazva, bitsebessége 1 441 200 bit/s.
74 perc alatt 4 440*1 441 200 = 6 265 728 000 bitnyi hanginformációt kell rögzíteni.
6 265 728 000 bit = 6 265 728 000:8 = 783 216 000 bájt.
783 216 000:1 024 ≈ 764 859 kB.
764 859:1 024 ≈ 747 MB, tehát közel 750 MB. Ezt vélhetően eddig is tudtad, mert ez csupán egy szorzás-osztás gyakorlat volt. Viszont ismét hangsúlyozom, hogy a CD-n ennél sokkal több adat van, ez csak a nyers, hibajavító eljárások, kiegészítések és csatornakódolás nélküli hasznos hang. Az alábbi ábra azt mutatja (pontosabban, most csak az az érdekes), hogy a CD adatszerkezetében a hangadatok mennyisége (rózsaszínnel jelölve) a teljes adatmennyiségnek kevesebb, mint a fele.

A CD adatszerkezetének alapja az adatblokk. Egy adatblokk a jobb és a bal hangcsatorna 6-6 mintavételi értékéből képzett 2*6 = 12 db 16 bites adatszót tartalmaz. Mivel a digitális technikában szeretnek 8 bites, tehát egy bájtos egységekben gondolkodni, ezt a 12 db 16 bites kódszót átalakítják 24 db 8 bites kódszóvá, és ezeket szimbólumoknak nevezik. Ez összesen 24*8 = 192 bit. Ezekhez a szimbólumokhoz hozzáadnak még 4 db 8 bites paritásellenőrző kódszót, amit C1 (correction 1) bájtoknak neveznek. Ha még emlékszel rá, a paritásbit azt jelenti, hogy az eredeti kód bitjeihez úgy adnak 0-t vagy 1-et, hogy a nullák és egyesek száma páros legyen. 4*8 = 32, tehát ennyi paritásjelző bit van. Eddig összesen 192+32 = 224 bitet számolhattál ki.
Most jön az, amitől lepetézel, hogy mi ez a baromság? A 28 szimbólumot tartalmazó jel újabb kódolóba kerül, ami további 4 db 8 bites paritáskódszóval, C2 jelűvel egészíti ki az eddigieket. Ha ezt egy mátrixba rendezzük, ezt látjuk:

Természetesen ennek a mátrixnak az elemeit összekeverik, szétszórják, hogy ne egymás után kerüljenek a lemezre, vagyis a kék, piros, zöld bájtkockák össze-vissza vannak. Ez a már többször külföldiül emlegetett interleaving. A CD lejátszása során a bájtokat visszahelyezik az eredeti sorrendbe. A szétszórás a hosszú hibacsomókat sok kisebb hibává alakítja át, amelyek könnyebben javíthatók. A CD-játszóban két hibajavító dekóder, C1 és C2 jelű van. A visszarendezés a C1 dekóder után, de a C2 előtt történik meg. Ha egy hiba túl hosszú ahhoz, hogy a C1 dekóder kijavítsa, a C1 átadja azt a C2 dekódernek, a rossz vagy hiányzó adatokat azonosító jelzővel. A C1 és C2 dekóderek közötti visszarendezési folyamat sokkal könnyebbé teszi a hiba kijavítását a C2 számára. A C2 dekóder által kijavított hibák tehát súlyosabbak, mint a C1 dekóder által kijavított hibák. A hibákat aszerint osztályozzák, hogy hány rossz vagy hiányzó szimbólum, adatcsomag létezik, és ezek melyik dekódernél jelennek meg. Így van egy kétjegyű számunk, amely megmondja a hiba súlyosságát. Például egy E21 hiba azt jelenti, hogy két rossz szimbólumot javított ki a C1 dekóder. Az első szám a korrigált rossz szimbólumok számát, a második szám a dekódert jelzi. Az E11 hiba (egy rossz szimbólum a C1 dekódernél) nagyon könnyen javítható; Az E11 hibák nagyon gyakoriak, a javításuk folyamatos. Ezzel szemben az E32 hiba (három rossz szimbólum a C2 dekóder előtt) javíthatatlan; az adatvesztés olyan súlyos, hogy a rendszer nem tudja helyreállítani az eredeti jelet. A korai CD-játszók ilyen súlyos hibánál némították a kimenetet. Aztán a CD-játszók okosabbak lettek, és a hiba előtti meg a hiba utáni hibátlan bájtokból kitalálták, interpolálták a hibás jelcsomag valószínű értékét. Ez az eljárás 3 874 bitnyi egymás után következő hibát képes kijavítani, ami a lemezen kb. 2,5 mm-es szakaszt jelent, és 13 282 bitnyi hibát tud helyettesíteni, vagyis 8,7 mm-es sávrészt. Jó esetben a helyettesítés 15 000 hibás bit esetén is sikerülhet. A CD története az elmúlt évtizedek során igazolta, hogy ezek a számításokon alapuló értékek helyesek, de vajon hogyan számolták ki ezeket? Ha ez is érdekel, tanulmányozd a kép alatt linkről letölthető pdf-et; amit a gugli és deepl is nagyon jól fordít. Ja, és ezt az eljárást hívják CIRC-nek (Cross-interleaved Reed–Solomon code, „keresztbe font" Reed-Solomon kód).

Jóval alaposabb a kép alatti linkről letölthető, német nyelvű tanulmány.

https://www.math.uni-duesseldorf.de/~klopsch/mathematics/Manuskripte/cd_rscode.pdf
Akkor hát lássuk, hol tart a keretrendszerünk!

A CD fejlesztésének már korai szakaszában megállapították, hogy a digitális PCM jel – lásd a sorozat 27. részét – nem illeszkedik jól a CD-hez, túl sok bizonytalanságot, dekódolási problémát okoz. Arra jöttek rá, hogy érdemes két korlátot felállítani. Az egyik szerint két 1-es közé legalább két 0-s értéknek kell kerülnie.

Legfeljebb azonban 10 darab 0-s érték következhet egymás után.

E két megkötés figyelembevételével alkották meg a csatornakódot, azt az eljárást, ami leginkább figyelembe veszi a CD sajátosságait. A 8 bites PCM jel ugyanis nem tette lehetővé a korlátok megvalósítását, nem elég hosszú hozzá, és a hibajavításra is alkalmatlan volt. A CD csatornakódja a 8 bites PCM jelből 14 bites digitális jelet varázsol; ez az EFM (Eight to Fourteen Modulation) csatornakódolás. Mivel sokféle 14 bites jelkombináció lehetséges, kiválasztották a CD-t legjobban szeretőket. Volt egy másik szempont is, az, hogy a lejátszó elektronika integrált áramköreiben minél kevesebb kapuáramkört kelljen létrehozni. Ez ismét arra bizonyíték, hogy a CD kódrendszerének fejlesztése során rendszerben gondolkodtak.

A kísérletek során kiderült, hogy előfordulhat olyan EFM sorozat, amelynek eredményeként a felszín és a gödör hossza között nagy a különbség. E különbség miatt olyan hullámszerű jel keletkezik a lejátszás során, amelyből a CD-játszók hallható, nagyobb ampitúdójú zajt állítanak elő. Pontosabban, ilyen zaj mindig van, de nem mindegy, hogy mekkora. Hogy a felszín és a gödör közötti hosszúsági különbségek minél kisebbek legyenek, minden 14 bites jelhez hozzáadnak még három, úgynevezett kitöltő bitet. Ezeknek tehát zajcsökkentő szerepük van.
Megint hivatkozom arra, hogy a CD fejlesztése során rendszerben gondolkodtak. Olyan hordozót kellett kitalálni, amelyre az eredeti hanginformációk lehető legkisebb rongálásával biztonságosan rögzíthetők. Ez a hordozó legyen olcsón és könnyen sokszorosítható. Lejátszáskor az analóg hanggá alakítás és a kiegészítő információk visszafejtésének módja legyen egyértelmű, és a lehető legkevésbé bonyolult, miközben a lehető legkevesebb torzítási termék jelenik meg. Ezeknek a szempontoknak a figyelembevételével a CD-DA a hangtechnikai mérnöki tevékenység egyik remekműve lett.
A CD-n alcsatornákat (subchannel, subcode) is rögzítenek. Minden alcsatorna digitális sebessége 7,35 kb/s. Az ilyen a bájtok P, Q, R, S, T, U, V, W jelöléseket kaptak, de a CD-DA ezekből csak a Q-t és a W-t használja. Az alcsatorna bájtokat is EFM-ben kódolják, és kiegészítik 3 kitöltő bittel, így ezek 17 bitesek. Az alcsatorna bitek nem közvetlenül tartoznak egy-egy kerethez, hanem 98 keret osztozik rajtuk, mert ezeket a kereteknél nagyobb egységekhez, a szektorokhoz rendelik hozzá. Tehát 1 szektor = 98 keret. Minden alcsatornának megvan a maga feladata.
A hang-CD-n, vagyis a CD-DA-n mind a P, mind a Q csatornák az időzítésre szolgálnak. Segítik a CD-játszót abban, hogy nyomon kövesse az aktuális helyet a lemezen, és megadja az időinformációkat a CD-játszó időkijelzéséhez (teljes idő, a nóta időtartama, eltelt idő, hátralévő idő). A P csatorna egy egyszerű "zene szüneteltetése" jelző, amely olcsó keresőrendszerekhez használható. Egy új nóta kezdetét jelzi legalább két egymást követő másodpercben. A Q alcsatornát a kifinomultabb CD-játszók vezérlésére használják. Három különböző móddal rendelkezik, de mindegyiknek közös a felépítése. Lássuk hát ezeket is, ha már belementünk az erdőbe! Szólj, ha unod, mert én már nagyon, de érdemes túlesni rajta.

Az alcsatorna első két bitje a szinkronizálás része.
A következő négy bit a vezérlésre szolgál, mindegyik egy másik funkció jelzője. A négycsatornás CD digitális hangvezérlő azt jelzi, hogy a műsorszám kvadró. Mivel kvadró CD soha nem jelent meg, a későbbi szabványokból ezt a lehetőséget kihagyták. Az adatjelző azt jelzi, hogy ez a sáv adatokat (nem hangot) tartalmaz. Használható CD-játszók némítására is. A digitális másolást tiltó arról tájékoztat, hogy kedvencünket, az SCMS másolásgátlót (lásd a sorozat 438. részét) rácuppantották-e a gonoszok a lemezre. A korai CD-k egy részét a magasabb hangok szintjének növelésével, előkiemeléssel rögzítették a jobb jel-zaj viszony érdekében. A visszaalakító utóelnyomást kapcsolja be – ha van ilyen áramkör a CD-játszóban – ez a kód tehát az előkiemelés vezérlő.
Újabb négy bit a mód bit, ami a Q alcsatorna üzemmódját jelzi, s amelynek értéke 1 és 3 között változhat, meghatározva a következő bitek szerkezetét és tartalmát.
A Q alcsatorna adatbitjei a nevüknek megfelelően az alcsatorna tényleges adatait tartalmazzák. Szerkezetüket és tartalmukat a mód bitek határozták meg.
A Q1 módban két eset lehetséges. Ha a Q alcsatorna a lemez bevezető területén van, akkor ebben van a tartalomjegyzék. Ha a hasznos hang területén van, akkor időzítési információkat tartalmaz. Q2 módban az adatbitek a lemez úgynevezett MCN (Media Catalog Number) katalógusszámát tartalmazza az alcsatorna. Az MCN a CD-kiadvány egyedileg megállapított, nemzetközi jelzése. Elvileg a CD borítóján is szerepel, vonalkód formájában. A Q3 mód adatbitjei az ISRC értékeket tartalmazzák. Az ISCR is nemzetközileg szabványosított adatrögzítési kód (International Standard Recording Code). Az ISRC kód tájékoztat a származási országról, a kiadás évéről, a jogok tulajdonosairól, a sorozatszámról, valamint a nóta sorszámáról az adott lemezen. Az ISRC egy adott felvételt azonosít, nem magát a művet (kompozíciót és szöveges tartalmat). Ezért ugyanazon mű különböző felvételeinek, szerkesztéseinek és remixeinek saját ISRC kódja van, vagy legalábbis lennie kéne. Az utolsó 16 bit a ciklikus redundancia ellenőrző kód (CRCC). A CRCC egyszerűbb hibajelző, mint a CIRC.
A keretek elejét a szinkronizáló alcsatorna jelöli meg. Ebben az alcsatornában 2*12 szinkronizáló bit van, az egyikben csupa 0, a másikban csupa 1. Ezt a 24 bitet egészíti ki 3 kitöltő bit.
Mint említettem, egy szektorban 98 keret van. Mivel egy keret 2*12 csatornabájtot tartalmaz, így egy szektor 98*12*2 = 2 352 adatbájtból áll.
A CD-DA lemezen az adatokat szekciókba, tartományokba szervezve tárolják. A lead-in, vagyis bevezető tartomány a lemez tartalomjegyzéke, az egyes adatsávok, külföldiül trackek kezdő bejegyzéseivel. Ez van legbelül. A tartalomjegyzék külföldiül TOC (Table of Contents). Az adattartomány a lemez összes adatsávját tartalmazza, szektorokban. A fejléc az egyes szektorok adatait tárolja. Az adatsávokban van a nóták hanganyaga. A lead-out, vagyis lezáró tartomány a CD-játszó számára jelzi az adattartomány végét. Ez van a lemez szélénél.

Minden CD-DA lemez adattartománya legfeljebb 99 különböző hosszúságú adatsávot tartalmazhat, de legalább egy sávnak minden lemezen lennie kell, ami pl. egy nóta. A legrövidebb adatsáv időtartama 4 másodperc lehet. Bármelyik adatsáv kezdetéhez tetszőlegesen választható módon lehet hozzáférni.
Minden adatsávban lehetnek indexpontok, ezek segítségével a lejátszandó nóta meghatározott helyére lehet ugrani. Ez különösen a rádióstúdiókban és a diszkókban lett volna fontos, mert például a nóták általában hangszeres, bevezető részét, az intrót, le lehetett volna vágni, és nem kellett volna a pozícionálással pöcsölni. A kiadók viszont a nótán belüli indexpontok elhelyezésével nem akartak vacakolni, így nagyon szórványosan (soha nem) találkozhatsz nótán belüli indexpontos CD-vel. De a teljesség kedvéért ideírom, hogy kétféle indexpont van. Az IP0 az adatsáv, tehát a nóta kezdetét jelöli, az IP1 pedig a sávon belüli helyet. Az IP0 és IP1 közötti részt Track Pregap-nek, ösvénynek nevezik. Minden adatsáv előtt van egy 2-3 másodperc hosszúságú ösvény, ami általában nem tartalmaz hangot. Azonban az ösvény kiterjesztése arra is jó, hogy elrejtsünk benne információkat. Az elrejtés lehetőségét később kihasználták arra, hogy teljes nótákat „titkosítsanak” a CD-n. Például az alábbi mixet.
Ha már más forrásokból is tanulmányoztad a CD kódolását, tapasztalhattad, hogy a fogalmak megnevezése gyakran keveredik. Ennek az az egyik oka, hogy az eredeti Vörös Könyv, illetve a vonatkozó szabványok ingyen nem nézhetők meg a neten. A másik, hogy több szakma is érintett, s pl. a videótechnika részben más fogalmakat használ, mint a hangtechnika, a számítástechnikáról vagy a kémiáról nem is szólva. Én igyekeztem legalább egy íráson belül következetes maradni.