Bár elvileg létezik magyar megfelelője, a legtöbben mégsem zajmodulációnak, hanem angol nevén dither-nek ismerik, bár ez sem igazán helyes elnevezés. A dither maga a zaj, amit a zajmodulációnak nevezett eljáráshoz használunk, aminek angol elnevezése dithering, vagy redithering. Valójában azonban ez sem állja meg teljesen a helyét, ugyanis a redithering egyben újrakvantálást is jelent, ami pedig önmagában nem tartalmaz hozzáadott zajt, tehát nem nevezhetjük zajmodulációnak. Bárhogy is van, ez az egyik legmegosztóbb eszköz a hangmérnökök körében. Sokan egyáltalában nem használják, míg mások el sem tudnak nélküle képzelni egy jó hangzású mixet vagy masztert.
A dithert elsősorban a digitális világban használjuk, mert a mintavételezés technológiájából adódó adatveszteséget képes csökkenteni, vagy inkább kompenzálni. Bár a digitális audió felbontása visszaalakítás után megfelelő bitszám felett valójában nem létezik, a dithert tekinthetjük úgy is, mint felbontás javító eszközt. Talán szerencsésebb fogalmazás az információmegtartó eszköz. Tekintsük a fenti ábrát, ahol ugyanazt a képet láthatjuk két különböző módon elvégzett bitmélység csökkentés után. Az eredeti színes képből csupán 1 bitet, vagyis 2 színt használtunk (fekete és zöld). A baloldalon egyszerű csonkolással csökkentettük a színek számát, a jobboldalon viszont dithert használtunk. Vajon melyik oldalon maradt meg több részlet, vagyis több információ?
Ahhoz, hogy megértsük a dither működését, és hogy miért érdemes használni, először tekintsünk vissza arra, hogy mit tanulhattunk a digitális audióról szóló eddigi részekben! A digitális audió számokban tárolt információt jelent, pontosabban fogalmazva a hang hullámformáját írjuk le időpontokhoz kötött amplitúdó értékekkel. Ha elvonatkoztatunk attól, hogy a fizikai világban a részecskéknek is van mérete (vagyis minden esetben beszélhetünk elméleti felbontásról), tekinthetjük úgy, hogy az analóg audiónak nincsen felbontása, vagyis időben folyamatosan változik. Ezzel ellentétben a digitálisan tárolt audió diszkrét értékekkel dolgozik, ami azt jelenti, hogy a rendelkezésre álló adatok csak bizonyos időpontokban írják le a hullámforma alakját. Szerencsére ha elég sűrűn veszünk mintát az analóg jelből, akkor megfelelő szűréssel szinte veszteség nélkül vagyunk képesek visszaállítani a folyamatos jelet.
Azonban van itt egy olyan probléma, amit nem tudunk kikerülni, ez pedig a kerekítés. A rendelkezésre álló véges számú számértékek miatt az adott pillanatban érvényes amplitúdóértéket egy elméleti rácshoz kell igazítani. Itt tehát normál esetben mindenképpen veszteséget szenvedünk el, ez pedig a kerekítési, vagy idegen szóval kvantálási hiba. Minél pontosabban tudjuk ábrázolni az adott amplitúdó értékét, annál tisztább lesz a digitálisból visszaalakított hang, vagyis a lehető legtöbb bitet kell használnunk (ami sajnos jelentősen növeli a tárolási méretet, ezáltal a feldolgozáshoz szükséges időtartamot, vagyis lecsökkenti a feldolgozás sebességét). Mint már tudjuk, a kvantálási hibák alacsony jelszintű zaj formájában jelentkeznek, vagyis addig nem képeznek komoly problémát, amíg a jelszint viszonylag magas. Bár a kvantálási zaj a jelszinttel együtt változik, ha a jelszint egy bizonyos érték alá csökken, a zaj már jelentős szintet vesz fel. Minél kisebb az ábrázoláshoz használt bitmélység, annál magasabb lesz a zajszint. A probléma viszont nem ez, hanem az, hogy a mintavett hangot feldolgozzuk. Ilyenkor összeadunk, kivonunk, osztunk és szorzunk, ami minden esetben újabb kerekítési hibákat, vagyis további torzítást visz az anyagba. Mivel a jelünk általában több feldolgozóegységen is áthalad, akár többször is (pl. a zengetőben másodpercenként akár több tízezerszer is), így a hibák összeadódnak. Ez pedig már jelentős torzítást jelent.
A kvantálási zaj tehát mindig jelen van, és a hasznos jel alacsony jelszintű (halk) részei belevesznek. Ilyen lehet pl. a hangok lecsengése, amit leginkább a zengetéskor hallhatunk, ezért a túl alacsony bitmélység esetében nem hallunk olyan méretű vagy minőségű teret, mint magasabb bitmélység esetén. Ha 32 bites lebegőpontos audióról beszélünk, akkor a zajszint olyan alacsony (-758 dBFS), hogy nem halljuk, de sajnos ilyen 32 bites lebegőpontos konverter nem létezik, ezért a jelet mindenképpen redukálni kell ahhoz, hogy hallhassuk is. Hiába használunk a DAW-ban 32 bites lebegőpontos ábrázolást az alacsony zajszinthez, ha a digitális eszközök AES/EBU szabvánnyal kommunikálnak, ami pedig 24 bit fixpontos adatátvitelt tesz lehetővé, nem mellesleg a DA átalakítók is csak fixpontos működésre képesek (és a legtöbb még a 24 bitnek megfelelő analóg zajszintet sem képes előállítani). Vagyis a jelet a DAW-ból mindenképpen 24 bitre vágva kell kiküldeni ahhoz, hogy halljuk is. Bár a 24 bites fixpontos ábrázolás zajszintje (-144 dBFS) olyan alacsony, hogy normál ember nem hallja a létrejövő hibákat, a hibák okozta minőségcsökkenést viszont nagyon is tapasztalhatjuk! Viszont ha 16 bitre, például CD-re dolgozunk, a helyzet sokkal "rosszabbá" válik, itt ugyanis egyből elveszítünk 8 bitet, ami már jelentős, 48dB-es zajszint emelkedést jelent. A bitmélység csökkentése tehát további beavatkozás nélkül élettelen, beszűkült, túlzottan mesterséges, ropogó hangzás érzetét kelti.
Hogyan csökkentjük a bitmélységet?
Gyakorlatilag nem teszünk mást, mint a felesleges biteket "elfelejtjük", vagyis levágjuk őket. Bár ezt a műveletet mindenképpen meg kell tenni -hiszen másként nem lesz 24 bitből 16-, egyáltalán nem mindegy, hogy milyen módon történik meg. Az egyszerűség kedvéért most csak a fixpontos ábrázolást vegyük alapul. (Tekintsük úgy a 32 bites lebegőpontos hangunkat, hogy jelszintje 0 dBFS alatt marad, és csak egész számokat tartalmaz, vagyis gyakorlatilag egy 24 biten ábrázolt audiónak felel meg.)
Hogyan vágunk és mit?
Mivel a digitális audió legmagasabb amplitúdó értéke 0 dBFS (és fixpontos ábrázolás esetén minden más ez alatt van), így egyértelmű, hogy a maximális érték a bitmélység csökkentés esetén azonos kell hogy maradjon, mert ha a hangos részeket (a magas helyiértékű biteket, vagyis MSB) vágnánk, akkor azzal gyakorlatilag túlvezérlést állítanánk elő, ami pont ugyanolyan, mint amit az előző rész végén láthattunk. Vagyis vágáskor nem ezeket, hanem a kevésbé fontosnak nevezett LSB bitek felé eső biteket távolítjuk el. Ez vajon mit eredményez?
Először is, itt helyezkednek el a kis amplitúdójú halk részek, amiket egyrészt már alig hallunk, másrészt egy bizonyos érték alatt már semmiképpen sem tudunk megfelelően ábrázolni. Ez alatt azt értem, hogy például az 1 biten ábrázolható jelszint alatt már nem lesznek további részletek (erről egy előző részben már volt szó, így most nem térünk ki rá újból). Vagyis az LSB felé eső bitek törlése egyrészről olyan hatást vált ki, mintha egy bizonyos jelszint alatt mindent némítanánk.
Itt szeretném felhívni a figyelmet, hogy a kis helyiértékű biteken valójában a kis amplitúdó változásokat tároljuk, vagyis ezek nem csak a halk részeket jelentik, de itt helyezkednek el a nagy amplitúdójú részek finom részletei is. A kis helyiértékű bitek 8 bit esetén például 0-255 decimális értéket jeleznek, és ha ezeket vágjuk, akkor azoknak a számoknak, amiknek 1 és 255 közé esik a vége, elvesztik ezeket az adatokat. Például a szinusz hullám folyamatos görbéje "lépcsőzetessé" alakul át (ami torzításhoz, vagyis felharmonikusok megjelenéséhez vezet). Ez látható a mellékelt képen is, ahol a zöld sávon 24 bites szinuszhullám, a barna sávon ugyanaz a szinusz 7 bitre vágva látható. Ha ránagyítunk a képre, jól látható a "szögletesedés". (Bár ez ugye az analóg oldalon nagy valószínűséggel nem pont ugyanilyen képet mutatna.)
A bitszám csökkentésével tehát mindenképpen információt veszítünk. Mivel ezt a vágást szinte minden esetben meg kell tennünk amikor valamit változtatunk a rögzített hangon, akár a pluginekben, akár a DAW keverőjében, akár az onnan kilépő digitális vagy analóggá alakított jelek létrehozásakor, így egyáltalában nem mindegy, hogy ez a vágás hogyan megy végbe.
Tipp:
Hogy a következő próbákban korrekt eredményt kapjunk, nagyon fontos, hogy a szoba korrekció kivételével semmilyen monitor plugint ne használjunk!
Egyszerű csonkolás
A bitszám csökkentésre a legegyszerűbb megoldás, ha a felesleges biteket vágjuk, vagy szép magyar szóval csonkolunk (angolul truncate). Ebben az esetben a kívánt bitmélység alatti információ teljesen elveszik. Ezt láthattuk például az előző ábrán is. Hogy megtapasztaljuk a hangzását, hozzunk létre egy új projektet, amiben 0 dB panoráma korrekciót állítunk be. Egy új sávra helyezzünk el egy hullámforma generátort, amivel 100 Hz-es, 0 dBFS jelszintű szinuszhullámot állítunk elő. A következő insert pontra helyezzünk el egy bitszám csökkentő plugint (például a Reaper DAW-ban a JS Bit Reduction/dither), amin a dither-t kapcsoljuk ki! Ha nem csak hallani, de látni is szeretnénk az eredményeket, a maszter buszra helyezzünk el egy oszcilloszkópot (pl. az ingyenes MOscilloscope), illetve egy spektrumanalizátort (pl. az ingyenes MAnalyzer), és mindkettőn kapcsoljuk ki a normalizálást. Ha mindent jól csináltunk, akkor az első ábrának megfelelő képet kell hogy lássuk. A szinuszhullám tiszta, a frekvencia eloszlás a vártnak megfelelő, a kvantálási hibákból adódó zaj kismértékű.
Most kezdjük el csökkenteni a fixpontos kimenő bitszámot 32-től lefelé, vagyis kezdjük csonkolni a digitális adatainkat. A dither-t mindenképpen kapcsoljuk ki, máskülönben nem egyszerű csonkolás történik! Ahogy azt már megszokhattuk, a bitszám csökkentéssel egyre nő a kvantálási zaj, ezzel együtt egyre torzul a szinuszunk is, amitől persze megjelennek a felharmonikusok. 8 bittől lefelé már az oszcilloszkópon is látható a szinuszhullám "kockásodása". 6 bitnél már hallhatóak a felharmonikusok, majd 1 bitnél már csak egy négyszöghullám marad, aminek hangja már egyáltalában nem emlékeztet egy tiszta frekvenciát adó tiszta szinuszhullámra (lásd az ábrán). Bár itt most elég drasztikusan csökkentettük a bitszámot, de próbáljuk meg elképzelni, hogy -bár sokkal szolidabban- de ugyanez történik akkor is, amikor mondjuk 32-ről csökkentünk 24-re, vagy 16-ra.
Nézzünk most egy kicsit gyakorlatiasabb példát, ahol nem szinuszhullámot, hanem zenét használunk. Ehhez hozzunk létre egy új projektet, amiben az első sávra helyezzünk el egy tetszőleges 16 bites zeneszámot, célszerűen olyat, aminek azért van némi dinamikája. A maszter busz első insert pontjára helyezzük el a bitmélység csökkentő plugint, és állítsuk be mondjuk 4 bitre (a dithert kapcsoljuk ki, különben nem valódi csonkolás fog történni, és akkor az egész kísérletnek semmi értelme nincsen!). Indítsuk el a lejátszást!
Máris hallhatjuk, hogy a zene helyett egy recsegő, pattogó, meg-megszakadó torz hang szól a hangszórókból, hiszen 4 bit esetében már nincsen elég részletességet adó felbontás a halk részek megfelelő ábrázoláshoz. Vagyis a jelszint finom változásait a digitális adattárolás itt már nem képes követni, és a halk részek jelszintje nullává válik. Ha úgy találjuk, hogy nem elég meggyőző az eredmény, akkor csökkentsük a sáv jelszintjét a fader-el. Minél alacsonyabb a maszter buszra érkező jelszint, annál inkább érződik a túl kevés bitből eredő hátrány. (A halkítással gyakorlatilag azt szimulálhatjuk, mint amikor a hang a lecsengési fázisban van, de így nem kell utólag felhangosítani ahhoz, hogy halljuk is.) Ezt láthatjuk a fenti ábrán, ahol a zöld sávban az eredeti 16 bites CD maszter, a vörös sávban a 16 dB-el csökkentett jelszintű, majd 4 bitre csonkolt audió látható. Ebben a példában tehát azt tapasztalhattuk meg, hogy mi történik a hangunk halk részeivel digitalizálás (és a visszajátszás) közben. Ez persze egy nagyon felerősített példa volt, hiszen 4 bit az kb. 24 dB-nek felel meg, ami a 16 bites audió 96 dB-es dinamikatartományának eléggé az alján van. Vagyis most azt hallottuk felerősítve, amit akkor hallanánk, amikor (0 dBFS-hez képest) -72 dB-el csökken a jelszint. Ezt pedig gyakorlatilag már nem halljuk. Könnyen ki is próbálhatjuk hogy miről van szó, ha kikapcsoljuk a bitszám csökkentőt, és a zene sávjának faderét -72 dB-re állítjuk be. Ha nem hallunk semmit, ne csodálkozzunk, ez már gyakorlatilag a szobánk zajküszöbe alatt helyezkedik el. Viszont a kivezérlésmérőkön láthatjuk, hogy nem mínusz végtelent jelez, vagyis van kimenő jel.
Látható tehát, hogy az alacsony bitszám elsősorban a halk részeket teszi tönkre. Ez pedig még 32 bit esetén is mindennapi eset, hiszen minden hangnak van lecsengése, és előbb utóbb megszűnik szólni, vagyis az amplitúdója eléri a nulla kitérést. Eközben átesik azokon a szakaszokon, ahol a rendelkezésre álló bitek már nem képesek a jelszint változást követni, az eredmény pedig minden esetben pontosan ugyanaz, mint a példában. Pontosan ugyanezt halljuk -vagy nem halljuk, hiszen nem szól- pl. a zengetés leghalkabb lecsengő részeiben is. És bármennyire is nagyon halk hangokról beszélünk, ettől az eltéréstől lesz az eredmény természetellenes.
A próbák során láthattuk és hallhattuk, hogy a csonkolás önmagában nem jó megoldás a bitszám csökkentésére. Jó lenne tehát, ha valahogy meg tudnánk oldani, hogy a levágott részeken lévő információ ne vesszen el teljes egészében. Például valami olyasmit kéne csinálni, hogy az alsóbb biteken lévő információt "felmásoljuk" a megmaradt bitekbe. Na, a dither pontosan ezt csinálja!
Dither elmélete
„…A dither egyik legkorábbi alkalmazása a második világháborúban történt. A bombázó repülőgépeken mechanikus számítógépek végezték a navigációs és bombaröppálya-számításokat. Érdekes módon ezek a számítógépek (fogaskerekek százaival teli dobozok) pontosabban számoltak repülés közben..., mint álló helyzetben a földön. A mérnökök felismerték, hogy a repülés közben jelentkező rázkódás csökkentette a mozgó alkatrészek beragadásából származó hibákat. Rövid rándulások helyett folyamatosabban mozogtak. A számítógépekbe így kisméretű, vibrációt okozó motorokat építettek, a vibrációt pedig a középangol nyelvű „didderen” („remegni”) igével jelölték. Napjainkban a mechanikus mérőeszközök megkocogtatása is dither alkalmazását jelenti; a modern szótárak a dithert úgy definiálják, mint nagyon ideges, zavarodott vagy felzaklatott állapot. A kis mennyiségben alkalmazott dither a digitalizáló rendszereket a szó pozitív értelmében vett analóghoz közelíti. ” – Ken Pohlmann, Principles of Digital Audio. Forrás: Wikipedia
A dithert elsősorban a digitális világban használjuk, mert a mintavételezés technológiájából adódó adatveszteséget képes csökkenteni, vagy inkább kompenzálni. Bár a digitális audió felbontása visszaalakítás után megfelelő bitszám felett valójában nem létezik, a dithert tekinthetjük úgy is, mint felbontás javító eszközt. Talán szerencsésebb fogalmazás az információmegtartó eszköz. Tekintsük a fenti ábrát, ahol ugyanazt a képet láthatjuk két különböző módon elvégzett bitmélység csökkentés után. Az eredeti színes képből csupán 1 bitet, vagyis 2 színt használtunk (fekete és zöld). A baloldalon egyszerű csonkolással csökkentettük a színek számát, a jobboldalon viszont dithert használtunk. Vajon melyik oldalon maradt meg több részlet, vagyis több információ?
Ahhoz, hogy megértsük a dither működését, és hogy miért érdemes használni, először tekintsünk vissza arra, hogy mit tanulhattunk a digitális audióról szóló eddigi részekben! A digitális audió számokban tárolt információt jelent, pontosabban fogalmazva a hang hullámformáját írjuk le időpontokhoz kötött amplitúdó értékekkel. Ha elvonatkoztatunk attól, hogy a fizikai világban a részecskéknek is van mérete (vagyis minden esetben beszélhetünk elméleti felbontásról), tekinthetjük úgy, hogy az analóg audiónak nincsen felbontása, vagyis időben folyamatosan változik. Ezzel ellentétben a digitálisan tárolt audió diszkrét értékekkel dolgozik, ami azt jelenti, hogy a rendelkezésre álló adatok csak bizonyos időpontokban írják le a hullámforma alakját. Szerencsére ha elég sűrűn veszünk mintát az analóg jelből, akkor megfelelő szűréssel szinte veszteség nélkül vagyunk képesek visszaállítani a folyamatos jelet.
Azonban van itt egy olyan probléma, amit nem tudunk kikerülni, ez pedig a kerekítés. A rendelkezésre álló véges számú számértékek miatt az adott pillanatban érvényes amplitúdóértéket egy elméleti rácshoz kell igazítani. Itt tehát normál esetben mindenképpen veszteséget szenvedünk el, ez pedig a kerekítési, vagy idegen szóval kvantálási hiba. Minél pontosabban tudjuk ábrázolni az adott amplitúdó értékét, annál tisztább lesz a digitálisból visszaalakított hang, vagyis a lehető legtöbb bitet kell használnunk (ami sajnos jelentősen növeli a tárolási méretet, ezáltal a feldolgozáshoz szükséges időtartamot, vagyis lecsökkenti a feldolgozás sebességét). Mint már tudjuk, a kvantálási hibák alacsony jelszintű zaj formájában jelentkeznek, vagyis addig nem képeznek komoly problémát, amíg a jelszint viszonylag magas. Bár a kvantálási zaj a jelszinttel együtt változik, ha a jelszint egy bizonyos érték alá csökken, a zaj már jelentős szintet vesz fel. Minél kisebb az ábrázoláshoz használt bitmélység, annál magasabb lesz a zajszint. A probléma viszont nem ez, hanem az, hogy a mintavett hangot feldolgozzuk. Ilyenkor összeadunk, kivonunk, osztunk és szorzunk, ami minden esetben újabb kerekítési hibákat, vagyis további torzítást visz az anyagba. Mivel a jelünk általában több feldolgozóegységen is áthalad, akár többször is (pl. a zengetőben másodpercenként akár több tízezerszer is), így a hibák összeadódnak. Ez pedig már jelentős torzítást jelent.
A kvantálási zaj tehát mindig jelen van, és a hasznos jel alacsony jelszintű (halk) részei belevesznek. Ilyen lehet pl. a hangok lecsengése, amit leginkább a zengetéskor hallhatunk, ezért a túl alacsony bitmélység esetében nem hallunk olyan méretű vagy minőségű teret, mint magasabb bitmélység esetén. Ha 32 bites lebegőpontos audióról beszélünk, akkor a zajszint olyan alacsony (-758 dBFS), hogy nem halljuk, de sajnos ilyen 32 bites lebegőpontos konverter nem létezik, ezért a jelet mindenképpen redukálni kell ahhoz, hogy hallhassuk is. Hiába használunk a DAW-ban 32 bites lebegőpontos ábrázolást az alacsony zajszinthez, ha a digitális eszközök AES/EBU szabvánnyal kommunikálnak, ami pedig 24 bit fixpontos adatátvitelt tesz lehetővé, nem mellesleg a DA átalakítók is csak fixpontos működésre képesek (és a legtöbb még a 24 bitnek megfelelő analóg zajszintet sem képes előállítani). Vagyis a jelet a DAW-ból mindenképpen 24 bitre vágva kell kiküldeni ahhoz, hogy halljuk is. Bár a 24 bites fixpontos ábrázolás zajszintje (-144 dBFS) olyan alacsony, hogy normál ember nem hallja a létrejövő hibákat, a hibák okozta minőségcsökkenést viszont nagyon is tapasztalhatjuk! Viszont ha 16 bitre, például CD-re dolgozunk, a helyzet sokkal "rosszabbá" válik, itt ugyanis egyből elveszítünk 8 bitet, ami már jelentős, 48dB-es zajszint emelkedést jelent. A bitmélység csökkentése tehát további beavatkozás nélkül élettelen, beszűkült, túlzottan mesterséges, ropogó hangzás érzetét kelti.
Hogyan csökkentjük a bitmélységet?
Gyakorlatilag nem teszünk mást, mint a felesleges biteket "elfelejtjük", vagyis levágjuk őket. Bár ezt a műveletet mindenképpen meg kell tenni -hiszen másként nem lesz 24 bitből 16-, egyáltalán nem mindegy, hogy milyen módon történik meg. Az egyszerűség kedvéért most csak a fixpontos ábrázolást vegyük alapul. (Tekintsük úgy a 32 bites lebegőpontos hangunkat, hogy jelszintje 0 dBFS alatt marad, és csak egész számokat tartalmaz, vagyis gyakorlatilag egy 24 biten ábrázolt audiónak felel meg.)
Hogyan vágunk és mit?
Mivel a digitális audió legmagasabb amplitúdó értéke 0 dBFS (és fixpontos ábrázolás esetén minden más ez alatt van), így egyértelmű, hogy a maximális érték a bitmélység csökkentés esetén azonos kell hogy maradjon, mert ha a hangos részeket (a magas helyiértékű biteket, vagyis MSB) vágnánk, akkor azzal gyakorlatilag túlvezérlést állítanánk elő, ami pont ugyanolyan, mint amit az előző rész végén láthattunk. Vagyis vágáskor nem ezeket, hanem a kevésbé fontosnak nevezett LSB bitek felé eső biteket távolítjuk el. Ez vajon mit eredményez?
Először is, itt helyezkednek el a kis amplitúdójú halk részek, amiket egyrészt már alig hallunk, másrészt egy bizonyos érték alatt már semmiképpen sem tudunk megfelelően ábrázolni. Ez alatt azt értem, hogy például az 1 biten ábrázolható jelszint alatt már nem lesznek további részletek (erről egy előző részben már volt szó, így most nem térünk ki rá újból). Vagyis az LSB felé eső bitek törlése egyrészről olyan hatást vált ki, mintha egy bizonyos jelszint alatt mindent némítanánk.
Itt szeretném felhívni a figyelmet, hogy a kis helyiértékű biteken valójában a kis amplitúdó változásokat tároljuk, vagyis ezek nem csak a halk részeket jelentik, de itt helyezkednek el a nagy amplitúdójú részek finom részletei is. A kis helyiértékű bitek 8 bit esetén például 0-255 decimális értéket jeleznek, és ha ezeket vágjuk, akkor azoknak a számoknak, amiknek 1 és 255 közé esik a vége, elvesztik ezeket az adatokat. Például a szinusz hullám folyamatos görbéje "lépcsőzetessé" alakul át (ami torzításhoz, vagyis felharmonikusok megjelenéséhez vezet). Ez látható a mellékelt képen is, ahol a zöld sávon 24 bites szinuszhullám, a barna sávon ugyanaz a szinusz 7 bitre vágva látható. Ha ránagyítunk a képre, jól látható a "szögletesedés". (Bár ez ugye az analóg oldalon nagy valószínűséggel nem pont ugyanilyen képet mutatna.)
A bitszám csökkentésével tehát mindenképpen információt veszítünk. Mivel ezt a vágást szinte minden esetben meg kell tennünk amikor valamit változtatunk a rögzített hangon, akár a pluginekben, akár a DAW keverőjében, akár az onnan kilépő digitális vagy analóggá alakított jelek létrehozásakor, így egyáltalában nem mindegy, hogy ez a vágás hogyan megy végbe.
Tipp:
Hogy a következő próbákban korrekt eredményt kapjunk, nagyon fontos, hogy a szoba korrekció kivételével semmilyen monitor plugint ne használjunk!
Egyszerű csonkolás
A bitszám csökkentésre a legegyszerűbb megoldás, ha a felesleges biteket vágjuk, vagy szép magyar szóval csonkolunk (angolul truncate). Ebben az esetben a kívánt bitmélység alatti információ teljesen elveszik. Ezt láthattuk például az előző ábrán is. Hogy megtapasztaljuk a hangzását, hozzunk létre egy új projektet, amiben 0 dB panoráma korrekciót állítunk be. Egy új sávra helyezzünk el egy hullámforma generátort, amivel 100 Hz-es, 0 dBFS jelszintű szinuszhullámot állítunk elő. A következő insert pontra helyezzünk el egy bitszám csökkentő plugint (például a Reaper DAW-ban a JS Bit Reduction/dither), amin a dither-t kapcsoljuk ki! Ha nem csak hallani, de látni is szeretnénk az eredményeket, a maszter buszra helyezzünk el egy oszcilloszkópot (pl. az ingyenes MOscilloscope), illetve egy spektrumanalizátort (pl. az ingyenes MAnalyzer), és mindkettőn kapcsoljuk ki a normalizálást. Ha mindent jól csináltunk, akkor az első ábrának megfelelő képet kell hogy lássuk. A szinuszhullám tiszta, a frekvencia eloszlás a vártnak megfelelő, a kvantálási hibákból adódó zaj kismértékű.
Most kezdjük el csökkenteni a fixpontos kimenő bitszámot 32-től lefelé, vagyis kezdjük csonkolni a digitális adatainkat. A dither-t mindenképpen kapcsoljuk ki, máskülönben nem egyszerű csonkolás történik! Ahogy azt már megszokhattuk, a bitszám csökkentéssel egyre nő a kvantálási zaj, ezzel együtt egyre torzul a szinuszunk is, amitől persze megjelennek a felharmonikusok. 8 bittől lefelé már az oszcilloszkópon is látható a szinuszhullám "kockásodása". 6 bitnél már hallhatóak a felharmonikusok, majd 1 bitnél már csak egy négyszöghullám marad, aminek hangja már egyáltalában nem emlékeztet egy tiszta frekvenciát adó tiszta szinuszhullámra (lásd az ábrán). Bár itt most elég drasztikusan csökkentettük a bitszámot, de próbáljuk meg elképzelni, hogy -bár sokkal szolidabban- de ugyanez történik akkor is, amikor mondjuk 32-ről csökkentünk 24-re, vagy 16-ra.
Nézzünk most egy kicsit gyakorlatiasabb példát, ahol nem szinuszhullámot, hanem zenét használunk. Ehhez hozzunk létre egy új projektet, amiben az első sávra helyezzünk el egy tetszőleges 16 bites zeneszámot, célszerűen olyat, aminek azért van némi dinamikája. A maszter busz első insert pontjára helyezzük el a bitmélység csökkentő plugint, és állítsuk be mondjuk 4 bitre (a dithert kapcsoljuk ki, különben nem valódi csonkolás fog történni, és akkor az egész kísérletnek semmi értelme nincsen!). Indítsuk el a lejátszást!
Máris hallhatjuk, hogy a zene helyett egy recsegő, pattogó, meg-megszakadó torz hang szól a hangszórókból, hiszen 4 bit esetében már nincsen elég részletességet adó felbontás a halk részek megfelelő ábrázoláshoz. Vagyis a jelszint finom változásait a digitális adattárolás itt már nem képes követni, és a halk részek jelszintje nullává válik. Ha úgy találjuk, hogy nem elég meggyőző az eredmény, akkor csökkentsük a sáv jelszintjét a fader-el. Minél alacsonyabb a maszter buszra érkező jelszint, annál inkább érződik a túl kevés bitből eredő hátrány. (A halkítással gyakorlatilag azt szimulálhatjuk, mint amikor a hang a lecsengési fázisban van, de így nem kell utólag felhangosítani ahhoz, hogy halljuk is.) Ezt láthatjuk a fenti ábrán, ahol a zöld sávban az eredeti 16 bites CD maszter, a vörös sávban a 16 dB-el csökkentett jelszintű, majd 4 bitre csonkolt audió látható. Ebben a példában tehát azt tapasztalhattuk meg, hogy mi történik a hangunk halk részeivel digitalizálás (és a visszajátszás) közben. Ez persze egy nagyon felerősített példa volt, hiszen 4 bit az kb. 24 dB-nek felel meg, ami a 16 bites audió 96 dB-es dinamikatartományának eléggé az alján van. Vagyis most azt hallottuk felerősítve, amit akkor hallanánk, amikor (0 dBFS-hez képest) -72 dB-el csökken a jelszint. Ezt pedig gyakorlatilag már nem halljuk. Könnyen ki is próbálhatjuk hogy miről van szó, ha kikapcsoljuk a bitszám csökkentőt, és a zene sávjának faderét -72 dB-re állítjuk be. Ha nem hallunk semmit, ne csodálkozzunk, ez már gyakorlatilag a szobánk zajküszöbe alatt helyezkedik el. Viszont a kivezérlésmérőkön láthatjuk, hogy nem mínusz végtelent jelez, vagyis van kimenő jel.
Látható tehát, hogy az alacsony bitszám elsősorban a halk részeket teszi tönkre. Ez pedig még 32 bit esetén is mindennapi eset, hiszen minden hangnak van lecsengése, és előbb utóbb megszűnik szólni, vagyis az amplitúdója eléri a nulla kitérést. Eközben átesik azokon a szakaszokon, ahol a rendelkezésre álló bitek már nem képesek a jelszint változást követni, az eredmény pedig minden esetben pontosan ugyanaz, mint a példában. Pontosan ugyanezt halljuk -vagy nem halljuk, hiszen nem szól- pl. a zengetés leghalkabb lecsengő részeiben is. És bármennyire is nagyon halk hangokról beszélünk, ettől az eltéréstől lesz az eredmény természetellenes.
A próbák során láthattuk és hallhattuk, hogy a csonkolás önmagában nem jó megoldás a bitszám csökkentésére. Jó lenne tehát, ha valahogy meg tudnánk oldani, hogy a levágott részeken lévő információ ne vesszen el teljes egészében. Például valami olyasmit kéne csinálni, hogy az alsóbb biteken lévő információt "felmásoljuk" a megmaradt bitekbe. Na, a dither pontosan ezt csinálja!
Dither elmélete
Norden Bombsight, az egyik első, bombaröppályát megadó mechanikus számítógép |
Mint láthattuk, a dithert még az analóg világban fedezték fel, de inkább a digitális világban használjuk. (Elég érdekes, hogy vajon miért működik analóg oldalon is, amikor elvileg nem kéne neki. Talán mégis egy digitális szimulációban élünk? Erre a tudomány jelenleg nem tud minden kétséget kizáró választ adni!) A probléma lényege a digitális jellegből adódik, vagyis mint ahogy az imént is tapasztaltuk, két ábrázolható érték között nem tudunk további értékeket felvenni. Az más kérdés, hogy ez a két érték mi is valójában, és hogy tudnánk-e egyáltalán érzékelni a kettő közötti harmadik, vagy sokadik értéket. Maradjunk most az elméletnél, vagyis annál a problémánál, hogy az adott bitszámon digitálisan ábrázolható számok halmaza nem végtelen, pedig mi szeretnénk ha az lenne.
Tehát a megoldás egy olyan eszköz, ami a kerekítési hibákat megszünteti. Ezt izomból nem lehet megoldani, hiszen a végtelen nagy felbontáshoz végtelen sok bitre lenne szükség, ami pedig végtelen sok ideig töltődne be, vagy töltődne le (hogy a modern kor zenehallgatási szokásait vegyük alapul).
Paul Frindle az SSL-nél dolgozott, majd később a Sonynál készített algoritmusokat a híres digitális Oxford pulthoz. Későbbi munkái pl. a DSM prizmatikus kompresszorok. |
Paul Frindle: A kvantálás matematikája hamis pontosságot visz a mintákba. Ez a hamisítás valójában zaj, de mivel összefügg a jellel (korrelár azzal, vagyis nem véletlen), ezért mi torzításnak halljuk. A dither összekeni ezeket a hamis pontosságokat azzal, hogy a halk részeket engedi beleveszni a "sistergő"zajba, ami nekünk embereknek sokkal természetesebbnek hat.
A dithering tehát ugyanúgy zajt ad a jelhez mint a csonkolás (vagyis az újrakvantálás), de ez a zaj nem függ a jeltől (nem korrelár a jellel), hanem véletlenszerű, ezért emberek számára sokkal kevésbé zavaró. A jelenség az emberi agy működéséből adódik, ami a hallást tekintve nagyon hasonlít a Fourier transzformációra, vagyis egyéni frekvenciákra bontja a hangot. Ebből következik, hogy sokkal érzékenyebb egy-egy frekvenciára (jobban fel tudjuk ismerni), mint egy folyamatosan jelenlévő, minden frekvencián véletlenszerűen jelentkező amplitúdóra, vagyis zajra. Ha egy zajt hallunk, nehezen tudjuk megmondani, hogy mikor milyen frekvenciákat hallunk éppen, azonban egy tiszta hang esetén könnyű szerrel felismerjük, hogy az melyik zenei hang, vagy legalábbis egyszerűen vissza tudjuk adni, pl. énekléssel. A zajjal ezt egyáltalában nem tudjuk megtenni.
Tehát a jelhez adott véletlenszerű zaj által (maszkolt, és így) kialakuló hangban sokkal kevésbé tudjuk felismerni a zavaró frekvenciákat, vagyis sokkal kevésbé zavaró számunkra ilyet hallgatni, mint a kvantálási hibákból kialakuló frekvenciákat. Ezért a zajjal kevert, digitálisból visszajátszott hangot sokkal részletesebbnek halljuk, ami abban nyilvánul meg, hogy a zajban halljuk az eredeti zenét is. Vagyis olyan, mintha több bit állna rendelkezésünkre annál, mint amennyit valójában felhasználunk. Próbáljuk ki ezt most mi is, vagyis készítsük el életünk első saját gyártású ditherét!
Zajmoduláció a gyakorlatban
Hozzunk létre egy új projektet, ahol a panorámakorrekció értékét állítsuk 0-ra. Egy új sávra helyezzünk el egy hullámforma generátort, amivel 100 Hz-es, 0 dBFS jelszintű szinuszhullámot állítunk elő. A maszter buszra helyezzünk el egy bitszám csökkentő plugint (például JS Bit Reduction/dither), amin 4 bitre csökkentést állítunk be. A dither-t mindenképpen kapcsoljuk ki! Ha nem csak hallani, de látni is szeretnénk az eredményeket, helyezzünk el egy oszcilloszkópot (pl. az ingyenes MOscilloscope), illetve egy spektrumanalizátort is (pl. az ingyenes MAnalyzer), és mindkettőn kapcsoljuk ki a normalizálást. (Az MAnalyzer beállításait megtalálhatjuk kicsit lejjebb.) Ha mindent jól csináltunk, akkor az első ábrának megfelelő képet kell hogy lássuk.
A dither nem más, mint zajmoduláció. Mint azt a modulációs effektekről szóló részből már megtudtuk, a moduláció azt jelenti, hogy egy jel értékét egy másik jel függvényében változtatjuk. Ezt tekinthetjük úgy is, mintha az egyik jelet (az információt) rámásolnánk a másik jelre (a vivőre). Ez tulajdonképpen egy keverésnek felel meg, pont ugyanúgy, mint a DAW keverője. Ezért aztán ezt is fogjuk használni a zajmoduláció elkészítéséhez. Hozzunk létre egy újabb sávot, és helyezzünk el rajta egy fehérzaj generátort, aminek jelszintjét mínusz végtelenre állítjuk be.
Ha halljuk a torzított szinuszt, és látjuk is közben a hullámformáját és a spektrumát, akkor kezdjük el lassan emelni a fehérzaj jelszintjét. -75dB-nél érdekes "mozgolódásra" lehetünk figyelmesek a spektrumanalizátoron, ami kb -65 dB értéknél "kiegyenesíti" a zaj telített részeit. Itt már egy kicsit hallhatjuk is zaj sistergését. Ne álljunk meg itt, hangosítsuk tovább a fehérzajt. Érdekes módon, -40 dB-től felfelé csökkenni kezd a torzítás miatt létrejövő felharmonikusok jelszintje, amik -30 dB-nél már a spektrumanalizátoron is látható módon veszítenek erősségükből. Minél magasabbra emeljük a zaj jelszintjét, annál jobban csökkennek a felharmonikusok tüskéi! Hát ez hogy lehet? Hát ez kérem maga a dither! Figyeljük meg, hogy mindeközben az oszcilloszkópon látható hullámforma kezd egyre inkább "görbülni", vagyis kezdenek eltűnni a sarkok, és kezd egyre inkább egy szinuszhullámra hasonlítani. Hát ezért tűnnek el a hullámforma sarkai miatt kialakuló felharmonikusok.
Ha tovább emeljük a zaj szintjét, egy érték felett már nagyon erősen hallható, sőt, már maga a zaj is torzulni kezd. Tehát a zajmoduláció nem mindenható, nem működik a végtelenségig. A mi feladatunk megtalálni azt a szintet, ahol már megfelelően tudja javítani a levágott bitek által okozott információveszteséget, de még nem hallható zavaróan. A megfelelő szint megtalálása ebben a próbában nagyon egyszerű. Ahogy csökkentjük-növeljük a zaj szintjét, hallani fogjuk, hogy halkulnak a felharmonikus frekvenciák és hogy erősödik a sistergés. Meg fogjuk találni azt az állapotot, amikor mindkettő a lehető leghalkabb. Ez a jelen példánál szerintem nagyjából -26 dB zaj jelszintnél tapasztalható.
Vörös sávban a 4 bitre csonkolt zene, sárga sávban ugyanez -24 dB zajjal modulálva |
Tipp:
Minél kisebb a használt bitszám, annál nagyobb kell hogy legyen a használt zajszint. Vagyis amíg 4 bitnél -24 dBFS kell, addig 16 bitnél már csak -96 dBFS.
Vizuális zajmodulációs példa
A zajmoduláció nem csak digitális audió, hanem videó, vagyis kép esetén is működik. Nézzük most meg így is, hátha van aki ezen keresztül jobban megérti mi is történik. Tekintsük a következő ábrát, ahol a baloldali oszlop jelképezheti a "végtelen" felbontású analóg jelnek egy részét, a középső fekete-fehér rész pedig az ebből képezhető digitális adatot. Vagyis a példa szerinti rész két analóg végértéke között csak két digitális lehetőség lesz: vagy van adat (fehér), vagy nincs (fekete). Ezt a hibát a dithering segítségével tudjuk megoldani, vagy helyesebb úgy mondani, hogy árnyalni tudjuk. A jobboldali dither-es oszlopban szintén 1 biten ábrázoltuk a példa szerinti rész maximum és minimum értékekeit, de a hozzáadott zajnak köszönhetően így sokkal több árnyalat, vagyis részlet marad meg az eredetiből, mint nélküle.
Nézzük most mindezt akkor, ha digitális audiót szeretnénk konvertálni, mondjuk 8 bitről 1 bitre. A baloldali oszlopban látható az eredeti 8 bites adat, ahol minden 2 pixelsor eltérő szürke árnyalatot tartalmaz, ez 256 eltérő szürkét jelent a teljesen feketétől a teljesen fehérig. A második oszlopban azt láthatjuk, hogy mi marad meg ebből a 8 bites adatból, ha 1-re csökkentjük a rendelkezésre álló bitek számát, vagyis 7 bitet levágunk. Ami marad, az nem csoda, hiszen 1 biten vagy van adat (fehér), vagy nincs (fekete). Az oszlop közepén (a fekete és fehér határán) látható "bizonytalanság" a konvertáló algoritmusban jelentkező kvantálási zaj. A jobboldali oszlopban a dither-el készült, de szintén 1 bites információt láthatjuk. Vajon azonos bitszám (esetünkben 1 bit) mellett melyik hasonlít jobban az eredetire? Az egyszerűen csonkolt adathalmaz, vagy a ditherrel készített? Ez persze csak költői kérdés, hiszen a harmadik oszlopban jól látható maradt, ahogy a fekete átúszik a fehérbe, míg a középső oszlopban ennek nyomát sem találjuk. (Ha messzebbről nézzük a képet, még kisebb a különbség az eredeti 8 bites és a ditherelt 1 bites között.)
Röviden összefoglalva tehát elmondható, hogy a bitmélység csökkentésekor elveszett adatok egy részét hozzáadott zajmoduláció alkalmazásával a csökkentett bitmélységű ábrázoláskor is megtarthatjuk, ezáltal a digitális jel a valós bitszámnál nagyobb felbontás érzetét kelti. Ha pl. egy 24 bites mixből 16 bites CD masztert készítünk, akkor 8 bitet, vagyis az információk egy harmadát mindenképpen le kell vágnunk. Dither használatával az ebben a 8 bitben lévő információ egy része 16 biten is megtalálható marad.
Különböző dither típusok
Mivel a zajmoduláció közben a hozzáadott zaj jellege másolódik rá a jelre, a mérnökök és tudósok hamar rájöttek, hogy egyáltalában nem mindegy, hogy milyen zajt használunk. Nagyon fontos hogy megértsük, hogy a dither az előállított zajt jelenti, nem pedig az eljárást, aminek a neve zajmoduláció (ha valaki jobban szeretné angolul használni, akkor dithering, vagy redithering). A különböző dither-ek tehát különböző eljárásokkal létrehozott különböző zajokat jelentenek.
Fehérzaj hullámformája |
Tipp:
Sajnos úgy néz ki, hogy mai tudásunkkal egy speciálisan erre a célra épített, fotonokkal működő véletlenszám-generátornak 55 millió fotont kell felhasználnia ahhoz, hogy 1024 valóban véletlen számot tudjon előállítani. A gép mérete eléri a 130 métert.
Persze a mai CPU-k is tartalmaznak beépített véletlenszám generátort, de mivel egy CPU-t úgy terveztek meg, hogy azonos műveleteket ismételjen, vagyis szabályok szerint működjön, normál esetben nem képes véletlenszerű működésre (máskülönben mindig más eredményre jutna, ami valljuk be elég használhatatlan számológépet eredményezne). Akkor mégis hogyan képes véletlen számokat előállítani? Ehhez alap szinten többféle rendelkezésre álló adatot használ, a cpu tervezőjétől függően. Általában a dátumot és a pontos időt, valamint a megszakítás pillanatát, és a regiszterek értékét használja fel, ami így önmagában -elméletileg- nagyon messze áll egy valóban véletlen számtól. Hogy miért? Mert ha ismerjük a fenti adatokat, akkor minden esetben ugyanazt a számot kapjuk, vagyis az nem véletlen, bár első ránézésre annak tűnnek, ezért is nevezik őket pszeudóvéletlenszámoknak (angol rövidítés: PRN). Emellett előbb utóbb (de inkább előbb) ismétlődni kezdenek az előállított számok, és sajnos azonos sorrendben. Ha csak 44,1 kHz-es mintavételezést veszünk alapul, akkor másodpercenként minimum 44100 számot kell kitalálni, sztereó esetben pedig 88200-at. Vagyis ha nem alkalmazunk különleges, kifejezetten erre készült algoritmust, elég hamar elfogynak a véletlen számok, ami ismétlődő jelet eredményez, az pedig már nem zaj, ezért nem is fog kialakulni a megfelelő zajmoduláció.
Tipp:
Sokan úgy gondolják, hogy az analóg zajgenerátorok jelenthetik a megoldást, azonban jó ha tudjuk, hogy valójában a dobókocka használata közben megjelenő számok sem véletlenszerűek, egyszerűen csak arról van szó, hogy jelenleg nem vagyunk képesek minden fizikai változót figyelembe véve kiszámítani, hogy mikor melyik oldala lesz felül. Ismét egy elgondolkodtató kérdés azzal kapcsolatban, hogy vajon szimulációban élünk-e.
A zaj tulajdonképpen egy ugyanolyan digitális hang, mint bármelyik másik, vagyis minden egyes mintavételi időpontban van egy mintaértéke. Minél nagyobb a különbség a legnagyobb és a legkisebb mintaérték között, annál nagyobb a dinamikatartomány, vagyis annál nagyobb felbontású a zaj. A zaj ugye nem más, mint egymást követő véletlen mintaértékek. Minél nagyobb tartományban helyezkednek el a mintaértékek, annál nagyobb a zaj felbontása. Viszont végtelenül nagy és végtelenül kicsi értékeket nem tud a minta felvenni, így korlátozva van a lehetséges számok halmaza (vagyis meg van határozva, hogy mely számokat választhatjuk). Ugyanakkor a felbontás növekedésével egyre nehezebb is előállítani a véletlenszámokat, mert egyre több a lehetséges érték, így sokkal több időbe telik meggyőződni róla, hogy valóban nincsen mintaszerű ismétlés.
Ahhoz, hogy lássuk és halljuk a következőkben ismertetésre kerülő ditherek frekvenciaeloszlását, hozzunk létre egy új projektet, amiben 0 dB panorámakorrekciót állítunk be. Hozzunk létre egy sztereó sávot, amire helyezzünk el egy dither plugint. Én most az ingyenes Airwindows DitherBox-ot fogom használni, mert ebben többféle dithert is kipróbálhatunk, ráadásul a bitmélység csökkentést is elvégzi, méghozzá 16 vagy 24 bitre. Ezt a választott dither utáni szám jelzi. Értelemszerűen ha 16-ot látunk, akkor a kimenet 16 bites lesz, ha 24-et, akkor 24 bites. A plugin megnyitása után válasszuk a FLAT 16 beállítást. Ezzel egy RPDF dithert állítunk elő (lásd később), majd 16-ra csökkentjük a kimenő bitmélységet. Hallani normál esetben még semmit sem fogunk, mert a zaj nagyjából -90,4 dBFS RMS szinten van. (Ha nincs megfelelő VU meterünk, akkor használhatjuk a DAW kivezérlésmérőjét is, ami -90,4 dBFS csúcsértéket mér.)
MAnalyzer beállítások. Nagyításhoz katt a képre! |
Mit kell tennünk ahhoz, hogy halljuk is a zajt, ne csak lássuk? Ez nagyon egyszerű, emelnünk kell a jelszinten. Ezt bármilyen gain pluginnel megtehetnénk, de mivel itt a Microchips oldalon törekszünk a precizitásra, így egy elég különleges eszközt fogunk erre a célra használni. Jó ha tudjuk, hogy (szinte)minden beavatkozás amit a digitális audión elvégzünk, ront a minőségen, hiszen kerekítési hibákat okoz. Vagyis a legtöbb esetben még egy lebegőpontos számítással végzett hangosítás esetén is károsodik az információ. Ezt a legegyszerűbben úgy tudjuk elkerülni, ha nem lebegőpontos szorzást végzünk, hanem magukat a biteket tologatjuk el. Ilyenkor az egyes mintaértékek egymáshoz képest nem változnak, ezért nem keletkezik semmilyen torzítás. A módszer egyetlen hátránya, hogy csak bitenként, azaz 6 decibelenként tudunk hangosítani vagy halkítani. Ezt szakkifejezéssel bitváltásnak nevezhetjük. Szerencsére az Airwindows jóvoltából ingyenes plugin formájában is elérhető egy ilyen megoldás BitShiftGain néven. Ennek különlegessége, hogy a mantisszához egyáltalában nem nyúl, csak a kitevő értékét változtatja meg. Töltsük le a plugint és telepítsük (természetesen erre az időre mentsük a projektet és zárjuk be a DAW-ot).
A bitshiftgain plugint célszerű a dither és a spektrumanalizátor közé elhelyezni. Alapértelmezésben 0 bitre van beállítva, vagyis nem emel és nem is csökkent semmit. Ahhoz, hogy hangosítsunk, emelni kell, tehát állítsuk be a csúszkát 12 bitre. Ezzel 72 dB-el (12x6=72) emeltük a jelszintet úgy, hogy biztosak lehetünk benne, hogy semmiféle torzítást nem vittünk be. Most már tehát nem csak láthatjuk, de nagyon jól hallhatjuk is a különböző dither zajokat. (Ezt persze csak a próba erejéig kell így csinálni, normál esetben nem!)
Tipp:
Sajnos a Ditherbox egyes ditherei a cikk írásakor hibásan működnek. Bár ezt jeleztem a programozónak, nem tudni, hogy mikor lesznek javítva. Szerencsére a Ditherbox ditherei külön-külön is letölthetőek, és ezek a pluginek megfelelően működnek. Ahol ilyen probléma lehetséges, jelezni fogom.
A különböző ditherek azt jelentik, hogy a modulációhoz használt zajt milyen algoritmussal állítjuk elő. Itt nem csak a véletlenszámok generálásáról van szó, hiszen az minden ditherben elengedhetetlen, hanem arról, hogy a számok értéke milyen módon oszlik el a rendelkezésre álló értékek között. Mondhatjuk úgy is, hogy a kérdés az, hogy mikor mit kezdünk a létrehozott véletlen számokkal.
Egyenletes eloszlású sűrűségfüggvényű Dither (RPDF)
Ha a véletlenszám generáláskor rendelkezésre álló számok közül mindegyik azonos valószínűséggel lesz jelen a zajban, akkor egy egyszerű, egyenletes eloszlású zajt kapunk. (Angolból fordítva négyszög sűrűségeloszlású, innen a Rectangle Probability Density Function elnevezés) Ezt hívhatjuk akár fehérzajnak is, hiszen annak is ugyanez a meghatározása, vagyis a teljes spektrum azonos energiával van jelen. Ha ezeket a véletlenszámokat használjuk a dither zaj előállításához, megfelelő hatás alakul ki, vagyis a hang recsegés és pattogás nélkül úszik át a csendbe, jobban mondva a hozzáadott zajba.
Ezt az úgynevezett Flat dithert a DitherBox-ban a Flat beállításokon (16 és 24 bit) érhetjük el. Használjuk most a Flat 16 dithert. Amint bekapcsoljuk, hallhatjuk is a hangját, ami egy "hangos", sűrű, vastag fehérzaj. Mivel minden frekvencián azonos energiát visz a jelbe, ezért nem változtatja meg az eredeti hang frekvenciamenetét, így első ránézésre tökéletesnek tűnhet a zajmodulációhoz.
Sajnos azonban, mivel csak egyetlen zajforrást használunk, a zaj szintje a bejövő hangtól függően változik, vagyis fluktuál. Ezt egyszerűen hallhatjuk is, ha egy halk részeket is tartalmazó zenén teszteljük. Ehhez nem kell mást tenni, mint a kiválasztott kész mixet behúzni a tesztelésre használt sávra, és elindítani a lejátszást. A halk, vagy csendes részeken nem csak hogy hangosabban halljuk a zajt, hanem annak jellege (hangzása) is megváltozik. Ez pedig elég erősen magára vonja a figyelmünket, ami eltereli azt a fontosabb részekről, vagyis a zenéről. Mivel ezt a legegyszerűbb programozni, a gyengébb dither megoldásokban nagy valószínűséggel ezt a fajta megoldást találjuk.
Tipp:
Természetesen most csak azért ilyen hangos a dither zaj, mert 12 bittel, vagyis 72 dB-el felhangosítottuk! Ha kíváncsiak vagyunk rá, hogy mennyit lehet ebből normál esetben hallani, egyszerűen kapcsoljuk ki a bitshiftgaint. Ugye, így már nem is annyira zavaró. Mielőtt folytatnánk, kapcsoljuk vissza a bitshiftgaint!
Háromszög eloszlású sűrűségfüggvényű Dither (TPDF)
Vajon hogyan lehet az RPDF dither hátrányát, vagyis a fluktuáló zajszintet kiküszöbölni? Utólag már egyszerű a válasz: nem egy, hanem két zajforrással kell dolgozni, majd ezek éppen aktuális értékét összeadni. Ebből persze ugyanúgy egyetlen mintányi zaj keletkezik, de ennek értéke nem egyenletes (vagyis négyszög), hanem háromszög eloszlású lesz. A név is pontosan ezt jelenti: háromszög valószínűségsűrűségű függvény (Triangular Probability Density Function). Ez azt jelenti, hogy a lehetséges értékek sorozatának közepén elhelyezkedő számok nagyobb valószínűséggel kerülnek kiválasztásra, mint amik a sorozat két vége felé esnek.
Ezt a dithert 16 bites vágással a TPDF 16 módban érhetjük el. Amint bekapcsoljuk, hallhatjuk is a hangját, ami ugyanolyan, mint a Flat dither, vagyis önmagában ez sem változtatja meg a frekvenciaeloszlást, tehát teljesen lineáris. Az egyetlen különbség közöttük, hogy ez nem okoz zajszint fluktuációt. Ez tehát a matematikailag tökéletes dither, mivel az átlagolás miatt nem alakul ki összefüggés a hullámforma és a zajszint között. Ezzel tehát megvalósítható a dither minden alapelve, vagyis hogy a zaj legyen folyamatos, ne változzon, és a hangok között zajnak lehessen hallani, ne másnak. Ezt egyszerűen kipróbálhatjuk az előbb használt hangfájlon is. A halk részek szépen kiúsznak a zajba, ami viszont minden körülmények között ugyanolyan marad, mind jelszintben, mind jellegében.
Egyes dither megoldásokban beállítható a zaj bitmélysége, ilyen például a Reaper DAW-ban található ingyenes JS Bit Reduction/Dither w/Noise Shaping plugin is. Amennyiben a dither be van kapcsolva, a Dither Bit Width csúszkával tudjuk beállítani a dither bitmélységét. Ez az algoritmusban egy szorzó állandó. Alapértelmezés szerint 2-re van állítva, ami azt jelenti, hogy a zaj dinamikatartománya kb 3 dB. 1,5 értéken nagyjából 6,5 dB dinamikatartományt, 1,1 esetén kb 18 dB-t kapunk. Ha a Reaper render-be épített dithert használjuk, az 1,5 bit mélységgel működik, vagyis nagyjából 1 bitnek felel meg.
Soft Dithering
Az Airwindowsos Chris Johnson szerint, ha egy nagyfelbontású (analóg) zajt kvantálunk, mondjuk 1 bitre, majd mindkettőt meghallgatjuk, elméletileg nem tudnánk közöttük különbséget tenni, hiszen mindkettő csak zaj. Valójában azonban mindig ki tudjuk választani a digitális zajt, mert a kvantálás miatt meg lesz benne az a tipikus érdes, recsegő hangzás. Ha viszont ehhez a nagyfelbontású zajhoz TPDF dithert adunk a csonkolás előtt, akkor már lehetetlen megmondani, hogy a nagyfelbontásút, vagy az 1 bitest halljuk. Ez azt jelenti, hogy ahhoz, hogy ne veszítsünk minőséget a digitális rögzítéskor, mindent, még a zajt is zajmodulálni kell. Ebből következik, hogy az úgynevezett soft dithering ostobaság. Soft ditheringnek hívják azokat a zajokat, amik a hanggal együtt lettek rögzítve, például az előerősítő, vagy akár a konverter analóg részének zaja. Ezek hiába magasabb jelszintűek mint a ditherhez elméletileg szükséges 1 LSB-nyi zaj, nem működnek úgy, mintha TPDF dithert használnánk. Vagyis a lehető legjobb minőség elérése érdekében, minden bitmélység csökkentésnél, mindig zajmodulációt kell alkalmazni.
Bár elméletileg és matematikailag a TPDF dither a legjobb, ezt inkább értsük úgy, hogy a legoptimálisabb. Vagyis ez mindig jó, ez a valódi középút. Egy másik dither ennél már csak valamiben lehet jobb, de csak úgy, hogy közben valami másban rosszabb lesz. Na, ezek az úgynevezett speciális ditherek, amik valamit kiemelnek ugyan, de ezért cserébe valami mást elnyomnak. Nézzünk most ezekből egy párat, ami a ditherboxban rendelkezésünkre áll.
Háromszög eloszlású egypólusú alul szűrt dither (PaulDither)
Ez az elméletileg hibátlan TPDF dither, kicsit továbbfejlesztve. Tulajdonképpen Paul Frindle Sony Oxford pultban alkalmazott dither megoldása alapján született, bár maga a kód -érthető okok miatt- nem egyezik a Sony eredeti kódjával. A lényeg, hogy az algoritmus egy mintányi zajt állít elő, majd ezt invertálja, ebből lesz a TPDF-hez szükséges két minta. Így egyetlen lépésben végzi el a TPDF dithert, és a szűrést. Chris megoldása ennek a fordítottja, Ő ugyanis eltárolja az előző zaj mintaértékét, majd ezt vonja ki az aktuális zaj mintaértékből. A módszer más, a végeredmény ugyanaz: Háromszög eloszlású egypólusú alul szűrt zaj. Az újabb megoldás előnye nem csak egy "halkabb", simogatóbb, édesebb dither, hanem a CPU ciklusok egy részének megspórolása is, hiszen nem kell minden hangmintához két véletlen mintát előállítani (ami egy jó minőségű algoritmusnak sokáig tart), hiszen egy már a memóriában van, csak vissza kell olvasni. Ez pedig gyorsabb, mint egy új véletlen számot előállítani.
Ezt a dithert 16 bitre vágással a Paul 16 módban érhetjük el a Ditherbox-ban. Amint bekapcsoljuk, hallhatjuk is a hangját, ami alapjában véve olyan, mint a TPDF, de mivel a zaj alulvágott, vagyis az alacsony frekvenciák jelszintje alacsonyabb, így a hangzás is egy kicsit élesebb. Ezáltal egyébként a zajt is halkabbnak halljuk, amit egyszerűn kipróbálhatunk, ha oda-vissza kapcsolgatunk a TPDF és a Paul dither között. A szűrés persze a zajon keresztül a hangra is hatással van, ami azt eredményezi, hogy az ezen a ditheren átküldött hang egy kicsit élesebb, tisztábbnak tűnő lesz, vagyis elszínezi azt. Ez egyben egy hangzás fajta is, ami a figyelmet más irányba viszi el, mint a sima TPDF dither. Próbáljuk ki zenén is! Ha ide-oda kapcsolgatunk a TPDF és a Paul dither között, azonnal hallható, hogy mennyivel "jobb". Mivel sokkal kevesebb közép és mélytartomány marad a zajban, így ezek helyét a valódi jel veszi át, vagyis sokkal többet hallunk a zenéből, mint a sima TPDF esetében. Érdemes néha visszakapcsolni a sima vágásra (Trunc 16) is, hogy halljuk, milyen is lenne a hang dither nélkül! Mint a mellékelt képen látható, ezt a fajta dithert a Reaper Ditherben is elérhetjük, ha Highpass TPDF-re állítjuk be.
Tipp:
Az egyenletes eloszlású fehérzajjal működő dithert flat, vagyis sima dithernek, a nem egyenletes eloszlású zajjal működő, vagyis szűrt dithert pedig színezettnek, vagy colored dithernek is hívják. Alapvetően elmondható, hogy színezett dithert vagy csak egyszer érdemes alkalmazni, és csak a teljes mixre, vagy ha több sávon vagy buszon használjuk, a kialakult hangzást vegyük figyelembe már keverés közben is.
DoublePaul dither
Az előző dither megoldásokkal szemben ez nem egy további "újdonság", hanem az előzőleg bemutatott háromszög sűrűségeloszlású egypólusú alul szűrt dither továbbfejlesztése. Ahogy ott már tapasztaltuk, ha csökkentjük a zajban lévő alacsonyabb frekvenciák jelszintjét, akkor a TPDF zaj kevésbé lesz hallható. Ezt a koncepciót követve Chris Johnson még magasabb frekvenciákra tolta el a zaj energiáját, ezáltal még halkabbnak halljuk azt. Fontos tudni, hogy ez még nem zajformálás, arról kicsit később lesz majd szó!
Ezt a dithert 16 bitre vágással a Db Paul 16 módban érhetjük el a Ditherbox-ban. Amint bekapcsoljuk, hallhatjuk is a hangját, ami alapjában véve olyan mint a Paul, de mivel a zaj méginkább vágott, vagyis az alacsony frekvenciák jelszintje még alacsonyabb, így még puhábbnak tűnik, mondhatjuk úgy is hogy halkabb, vagy kevésbé zavaró. Ennek ellenére, mivel az energia még inkább a magas frekvenciák felé tolódik el. Ha összehasonlítjuk a Paul és a DoublePaul frekvenciaeloszlását a mellékelt képeken, jól látható, hogy a magas frekvenciák jelszinte magasabb. Éppen ezért az általa adott zajmoduláció hangja még a Paul dithernél is élesebb, ami sokak szerint inkább "tisztábbnak" mondható. Még zenén keresztül hallgatva is halkabbnak halljuk a zajt mint a sima Paul dithernél, hogy a normál TPDF ditherről már ne is beszéljünk!
Esetleges, vagy "okos" Dither (SpatializeDither)
Azokban az olvasókban, akik veszik a fáradtságot, és egy kicsit továbbgondolják az itt leírtakat, már minden bizonnyal felvetődött a gondolat, hogy nem lehetne-e olyan bitmélység csökkentő újrakvantálót készíteni, ami nem folyamatos zajt ad a jelhez, hanem csak akkor változtatja meg a keletkezett mintaértéket, ha az szükséges. Ez azt jelentené, hogy ha a bitmélység csökkentés után az új mintaérték pont a kvantáló rácsára esik, akkor felesleges hozzá zajt adni, hiszen már eleve egy "jó" értéket kaptunk. Nevezhetnénk ezt egy okos dithernek is. Nos, a SpatilaizeDither pont ilyen!
Az algoritmus kis túlzással így működik a bitmélység csökkentése után:
- Hé! Ez az érték pont a rácsra esik, ehhez semmiképpen sem adok hozzá semmit, főleg nem zajt!
- Ez az érték pont két kvantálási pont közé esik, ezért gyorsan váltogatom ezt a két értéket, háta ettől a DA átalakító majd a kettő közötti értéket fogja létrehozni.
- Ez az érték sem a rácspontra, sem pontosan két rácspont közé nem esik, ezért zajt adok hozzá.
Ez a megoldás rendkívül alacsony hozzáadott zajszintet eredményez, még zajformálás nélkül is (lásd később), cserébe viszont a zajküszöb környékén nem túl jól teljesít, ott ugyanis az egyszerű, egyetlen véletlenszám forrással dolgozó RPDF ditherhez hasonló fluktuáló zajszintet ad, sőt az eredmény kifejezetten torznak is hallatszik, elég hasonlatos az egyszerű csonkoláshoz.
Maga a zaj halkabb mint a TPDF, és bár jellegében hasonlónak tűnik, annál egy kicsit ropogósabb. Ez azért van, mert bár a rácsra kerülő mintaértékek nem változtatnak a hangzáson, a két minta közötti váltogatás egy felüláteresztő szűrőhöz hasonló hatást eredményez, miközben megnöveli a magasak energiáját. Ez pedig egy holografikus, háromdimenziós hangzást eredményez, ami valójában a valóságot jelenti, hiszen ez az okos megoldás a valóban létrejövő mintaértékekhez legközelebb esőket hozza létre. Ez az algoritmus mindig eltávolodik a normál zajküszöb viselkedéstől, ha valami más módon nagyobb pontossággal tudja a hangot ábrázolni. Ha tehát a cél hipervalódiság, és az extrém tisztaságú és pontosságú hang, akkor mindenképpen próbáljuk ki a SpatializeDithert. Mivel nem használ zajformálást, így elmondható az is, hogy frekvenciamenete mindig természetes hangzású marad.
"Késleltetett" dither (TapeDither)
A PaulDithernél már megtudhattuk, hogy ha a ditherhez használt véletlen mintákat késleltetjük, akkor (felüláteresztő)szűrő hatás alakul ki. A késleltetés mértéke határozza meg, hogy a szűrés melyik frekvenciákon fog létrejönni. Az egyszeri hangmérnök rögtön arra gondol, hogy késleltessünk akkor annyival, hogy a vágás 1500 Hz-re, az emberi hallás egyik leginkább érzékeny frekvenciájára kerüljön, és ezzel máris sokkal halkabbnak fogjuk hallani a dither zaját. Ez azonban egy ilyen egyszerű megoldással nem kivitelezhető, mert sajnos fésűs szűrő hatás alakul ki, amitől a hangzás inkább egy flanger-re hasonlít.
Viszont ha megfelelően használjuk az algoritmust, akkor érdekes megoldásokat hozhatunk létre, például ezt a dithert, ami a szalagos magnóhoz hasonló hangzást ad. (A Ditherboxban Tape 16 néven találjuk meg ezt a dithert, ami egyben 16 bitre vágja is a hangot.) Mint a mellékelt ábrán is látható, ez egy egyszerű TPDF dither, de a visszacsatolás miatt vágások jönnek létre. Az első nagyjából 11 kHz környékén, majd egy újabb a Nyquist határ mellett, és ezekkel együtt emelések is létrejönnek. (Ez még mindig nem zajformálás.) Mindennek hatása egy technikailag korrekt TPDF dither, ami viszont a szűrése miatt a sima TPDF-hez képest finomabb hangzást eredményez. Nagyon hasonlatos egy szalagos magnó frekvenciamenetéhez. Egyrészt a szalagos magnókhoz alkalmazott zajszűrő megoldások általában 10 kHz körül működnek (a szalagra emelnek, onnan visszafelé vágnak), ugyanakkor az analóg felvételek szinte minden esetben aluláteresztő szűrőhöz hasonlatos vágást mutatnak a 17-18 kHz körüli frekvenciákon. A TapeDither is ehhez hasonlóan működik.
Az Airwindows ezt a dithert elsősorban akkor ajánlja, ha külső hardver eszközöket is használunk a keverés közben, és ezeket analóg kimeneteken keresztül kötjük be a láncba. Ha ezeken például a DAW-ban előzetesen összeállított csoportokat küldünk ki, akkor egy soksávos szalagos magnóhoz hasonló hangzást hozhatunk létre.
Tipp:
Ha szeretnénk "átállítani" a késleltetés értékét, és ezzel más vágási pontokat létrehozni, használjuk a NodeDitert-t. Ha pedig szeretnénk saját TPDF dithert előállítani, próbáljuk ki a BuildATPDF-t. Mindkettő ingyenes plugin, de használatukkal ebben a részben nem foglalkozunk részletesebben.
Ezt a dithert 16 bitre vágással a Paul 16 módban érhetjük el a Ditherbox-ban. Amint bekapcsoljuk, hallhatjuk is a hangját, ami alapjában véve olyan, mint a TPDF, de mivel a zaj alulvágott, vagyis az alacsony frekvenciák jelszintje alacsonyabb, így a hangzás is egy kicsit élesebb. Ezáltal egyébként a zajt is halkabbnak halljuk, amit egyszerűn kipróbálhatunk, ha oda-vissza kapcsolgatunk a TPDF és a Paul dither között. A szűrés persze a zajon keresztül a hangra is hatással van, ami azt eredményezi, hogy az ezen a ditheren átküldött hang egy kicsit élesebb, tisztábbnak tűnő lesz, vagyis elszínezi azt. Ez egyben egy hangzás fajta is, ami a figyelmet más irányba viszi el, mint a sima TPDF dither. Próbáljuk ki zenén is! Ha ide-oda kapcsolgatunk a TPDF és a Paul dither között, azonnal hallható, hogy mennyivel "jobb". Mivel sokkal kevesebb közép és mélytartomány marad a zajban, így ezek helyét a valódi jel veszi át, vagyis sokkal többet hallunk a zenéből, mint a sima TPDF esetében. Érdemes néha visszakapcsolni a sima vágásra (Trunc 16) is, hogy halljuk, milyen is lenne a hang dither nélkül! Mint a mellékelt képen látható, ezt a fajta dithert a Reaper Ditherben is elérhetjük, ha Highpass TPDF-re állítjuk be.
Tipp:
Az egyenletes eloszlású fehérzajjal működő dithert flat, vagyis sima dithernek, a nem egyenletes eloszlású zajjal működő, vagyis szűrt dithert pedig színezettnek, vagy colored dithernek is hívják. Alapvetően elmondható, hogy színezett dithert vagy csak egyszer érdemes alkalmazni, és csak a teljes mixre, vagy ha több sávon vagy buszon használjuk, a kialakult hangzást vegyük figyelembe már keverés közben is.
DoublePaul dither
Az előző dither megoldásokkal szemben ez nem egy további "újdonság", hanem az előzőleg bemutatott háromszög sűrűségeloszlású egypólusú alul szűrt dither továbbfejlesztése. Ahogy ott már tapasztaltuk, ha csökkentjük a zajban lévő alacsonyabb frekvenciák jelszintjét, akkor a TPDF zaj kevésbé lesz hallható. Ezt a koncepciót követve Chris Johnson még magasabb frekvenciákra tolta el a zaj energiáját, ezáltal még halkabbnak halljuk azt. Fontos tudni, hogy ez még nem zajformálás, arról kicsit később lesz majd szó!
Ezt a dithert 16 bitre vágással a Db Paul 16 módban érhetjük el a Ditherbox-ban. Amint bekapcsoljuk, hallhatjuk is a hangját, ami alapjában véve olyan mint a Paul, de mivel a zaj méginkább vágott, vagyis az alacsony frekvenciák jelszintje még alacsonyabb, így még puhábbnak tűnik, mondhatjuk úgy is hogy halkabb, vagy kevésbé zavaró. Ennek ellenére, mivel az energia még inkább a magas frekvenciák felé tolódik el. Ha összehasonlítjuk a Paul és a DoublePaul frekvenciaeloszlását a mellékelt képeken, jól látható, hogy a magas frekvenciák jelszinte magasabb. Éppen ezért az általa adott zajmoduláció hangja még a Paul dithernél is élesebb, ami sokak szerint inkább "tisztábbnak" mondható. Még zenén keresztül hallgatva is halkabbnak halljuk a zajt mint a sima Paul dithernél, hogy a normál TPDF ditherről már ne is beszéljünk!
Esetleges, vagy "okos" Dither (SpatializeDither)
Azokban az olvasókban, akik veszik a fáradtságot, és egy kicsit továbbgondolják az itt leírtakat, már minden bizonnyal felvetődött a gondolat, hogy nem lehetne-e olyan bitmélység csökkentő újrakvantálót készíteni, ami nem folyamatos zajt ad a jelhez, hanem csak akkor változtatja meg a keletkezett mintaértéket, ha az szükséges. Ez azt jelentené, hogy ha a bitmélység csökkentés után az új mintaérték pont a kvantáló rácsára esik, akkor felesleges hozzá zajt adni, hiszen már eleve egy "jó" értéket kaptunk. Nevezhetnénk ezt egy okos dithernek is. Nos, a SpatilaizeDither pont ilyen!
Az algoritmus kis túlzással így működik a bitmélység csökkentése után:
- Hé! Ez az érték pont a rácsra esik, ehhez semmiképpen sem adok hozzá semmit, főleg nem zajt!
- Ez az érték pont két kvantálási pont közé esik, ezért gyorsan váltogatom ezt a két értéket, háta ettől a DA átalakító majd a kettő közötti értéket fogja létrehozni.
- Ez az érték sem a rácspontra, sem pontosan két rácspont közé nem esik, ezért zajt adok hozzá.
Ez a megoldás rendkívül alacsony hozzáadott zajszintet eredményez, még zajformálás nélkül is (lásd később), cserébe viszont a zajküszöb környékén nem túl jól teljesít, ott ugyanis az egyszerű, egyetlen véletlenszám forrással dolgozó RPDF ditherhez hasonló fluktuáló zajszintet ad, sőt az eredmény kifejezetten torznak is hallatszik, elég hasonlatos az egyszerű csonkoláshoz.
Maga a zaj halkabb mint a TPDF, és bár jellegében hasonlónak tűnik, annál egy kicsit ropogósabb. Ez azért van, mert bár a rácsra kerülő mintaértékek nem változtatnak a hangzáson, a két minta közötti váltogatás egy felüláteresztő szűrőhöz hasonló hatást eredményez, miközben megnöveli a magasak energiáját. Ez pedig egy holografikus, háromdimenziós hangzást eredményez, ami valójában a valóságot jelenti, hiszen ez az okos megoldás a valóban létrejövő mintaértékekhez legközelebb esőket hozza létre. Ez az algoritmus mindig eltávolodik a normál zajküszöb viselkedéstől, ha valami más módon nagyobb pontossággal tudja a hangot ábrázolni. Ha tehát a cél hipervalódiság, és az extrém tisztaságú és pontosságú hang, akkor mindenképpen próbáljuk ki a SpatializeDithert. Mivel nem használ zajformálást, így elmondható az is, hogy frekvenciamenete mindig természetes hangzású marad.
"Késleltetett" dither (TapeDither)
A PaulDithernél már megtudhattuk, hogy ha a ditherhez használt véletlen mintákat késleltetjük, akkor (felüláteresztő)szűrő hatás alakul ki. A késleltetés mértéke határozza meg, hogy a szűrés melyik frekvenciákon fog létrejönni. Az egyszeri hangmérnök rögtön arra gondol, hogy késleltessünk akkor annyival, hogy a vágás 1500 Hz-re, az emberi hallás egyik leginkább érzékeny frekvenciájára kerüljön, és ezzel máris sokkal halkabbnak fogjuk hallani a dither zaját. Ez azonban egy ilyen egyszerű megoldással nem kivitelezhető, mert sajnos fésűs szűrő hatás alakul ki, amitől a hangzás inkább egy flanger-re hasonlít.
Viszont ha megfelelően használjuk az algoritmust, akkor érdekes megoldásokat hozhatunk létre, például ezt a dithert, ami a szalagos magnóhoz hasonló hangzást ad. (A Ditherboxban Tape 16 néven találjuk meg ezt a dithert, ami egyben 16 bitre vágja is a hangot.) Mint a mellékelt ábrán is látható, ez egy egyszerű TPDF dither, de a visszacsatolás miatt vágások jönnek létre. Az első nagyjából 11 kHz környékén, majd egy újabb a Nyquist határ mellett, és ezekkel együtt emelések is létrejönnek. (Ez még mindig nem zajformálás.) Mindennek hatása egy technikailag korrekt TPDF dither, ami viszont a szűrése miatt a sima TPDF-hez képest finomabb hangzást eredményez. Nagyon hasonlatos egy szalagos magnó frekvenciamenetéhez. Egyrészt a szalagos magnókhoz alkalmazott zajszűrő megoldások általában 10 kHz körül működnek (a szalagra emelnek, onnan visszafelé vágnak), ugyanakkor az analóg felvételek szinte minden esetben aluláteresztő szűrőhöz hasonlatos vágást mutatnak a 17-18 kHz körüli frekvenciákon. A TapeDither is ehhez hasonlóan működik.
Az Airwindows ezt a dithert elsősorban akkor ajánlja, ha külső hardver eszközöket is használunk a keverés közben, és ezeket analóg kimeneteken keresztül kötjük be a láncba. Ha ezeken például a DAW-ban előzetesen összeállított csoportokat küldünk ki, akkor egy soksávos szalagos magnóhoz hasonló hangzást hozhatunk létre.
Tipp:
Ha szeretnénk "átállítani" a késleltetés értékét, és ezzel más vágási pontokat létrehozni, használjuk a NodeDitert-t. Ha pedig szeretnénk saját TPDF dithert előállítani, próbáljuk ki a BuildATPDF-t. Mindkettő ingyenes plugin, de használatukkal ebben a részben nem foglalkozunk részletesebben.
A zajformálás egy negatív visszacsatolású hurok, amiben a kvantálás előtti és utáni érték közötti hibát visszaküldjük az algoritmusba. Mivel minden visszacsatolás szűrőként működik, ezért ez tulajdonképpen egy szűrő eljárás, ami megváltoztatja a kvantálási hibák spektrális eloszlását. Ezt úgy kell elképzelni, hogy fogjuk a 24 bites mintaértéket, és csonkolással 16 bitre alakítjuk. Ezután a két számot kivonjuk egymásból, és ami marad az a hiba. Ezt küldjük vissza az algoritmus bemenetére olyan módon, ami a hibákat eltolja, általában a frekvenciatartomány felső vége felé, ahol az emberi hallás már nem elég érzékeny.
A zajformálás valójában egy újrakvantáló (redithering) eljárás, ami csökkenti azokat a frekvenciákat, ahol az emberi hallás a legérzékenyebb, és/vagy teljesen elkülöníti a jel és zaj részeket. Vagyis önmagában is képes az egyszerű csonkolásnál jobb minőség elérésére. Ilyenkor jelentősen csökkennek a torzítások és az ebből adódó harmonikusok, de a hang nem képes a csendbe folyamatosan kiúszni, vagyis alacsony jelszinteknél (például az LSB-nél) ugyanúgy fellép a ki-be kapcsoló, szaggatott hatás, vagyis a torzítás. Tehát a zajformálást önmagában alkalmazva nem kapjuk meg a valós bitszámnak megfelelő dinamikatartományt úgy mint dither használatakor, ezért a legtöbbször azzal együtt alkalmazzuk. Ilyenkor a zajformálás végső spektruma attól függ, hogy a dithert a zajformálás visszacsatolásán belül, vagy azon kívül használtuk. Ha belül, akkor a zajformáló algoritmus a dithert a zaj részének tekinti, és a kvantálási hibákkal együtt formálja. Ha kívül, akkor a dithert az eredeti jel részeként kezeli, és linearizálja a kvantálást anélkül, hogy formálná azt. Ebben az esetben a végső zajszint a dither spektrumának és a formált kvantálási zajnak az összege lesz. Általában hurkon belüli dithert használnak.
A különböző zajformáló technikák valójában úgy módosítják (újra-ekvalizálják) a zaj spektrumát, hogy annak energiáját az emberi hallás legérzékenyebb pontjáról (kb. 3 kHz) a magasabb frekvenciák felé (10-22 kHz) tolják el, de mindezt úgy kell megtenniük, hogy közben a zaj átlagos energiája nem változhat. Alapvetően elmondható, hogy a zajformálásnak semmilyen hallható frekvenciamenet változást nem lenne szabad előidéznie. Ugyanakkor az is igaz, hogy mivel az energiát "csoportosítják" át más frekvenciákra, bizonyos esetekben mégis megváltozhat a hang frekvenciaeloszlása, vagyis egyfajta ekvalizerként működhetnek.
Tipp:
Zajformáláskor tehát egyes frekvenciákon csökkentünk, ezért más frekvenciákon növelni kell az energia mennyiségét. Mivel a jel a zajra modulálódik, így a megnövelt energiájú frekvenciákon magasabb lesz a ditherelt frekvenciák csúcsértéke (peak level). Ezzel néhány esetben túlvezérlés keletkezhet, amit -mivel a dither az utolsó feldolgozás- szinte csak a teljes jel szintjének csökkentésével, vagy limitálással tudunk orvosolni.
A mellékelt ábrán a Meridian Audio által készített egyik legsikeresebb zajformálási görbe található. A görbe meredekségéből arra következtethetünk, hogy nagyon magas rendű szűrésről van szó, ami tekintélyes mennyiségű számítás elvégzését igényli. A legnagyobb vágásokat azokra a frekvenciákra helyezték, ahol az emberi hallás a legérzékenyebb, így nem csoda, hogy az eredmény egy hihetetlenül halk háttér, még 16 bites CD esetében is. Az ábrán a 0 dB szint -96 dBFS-nek felel meg.
Tipp:
A Waves L3-ban, a POW-R 3-ban és a JS-Bit Reduction/Dither Psychoacoustic Noise Shaping-ben is kilencedik rendű szűrést használtak.
Bár a ditherekben is tapasztalható szűrőhatás, az valójában fix, mert mindig ugyanúgy jön létre, hiszen a zajelőállító algoritmusba van programozva. A zajformálás ezzel szemben egy negatív visszacsatolású hurok, vagyis mindig a hibára reagál.
A dither megoldások alapvetően nem X bitnél jobb eredményt adnak, hanem az X bitnek megfelelő valós eredményt, vagyis gyakorlatilag "csak" visszaadják a kvantálási zajban egyébként elvesző jelet. Ezzel szemben a zajformálás képes az X bitnél jobb eredmény elérésére, de csak bizonyos frekvenciatartományokon belül, azon kívül sajnos rosszabb eredményt ad.
Prism Sound SNS Ditherek frekvenciamenete |
Nézzük és hallgassuk is meg, hogy miről is van szó a gyakorlatban. Ehhez használjunk olyan dithert, ami tud zajformálást is. Én most az első példában a Waves L3 Ultramaximizert (TYPE 1 ditherrel) használom, mert itt a dithertől függetlenül is lehet zajformálást választani. Bármely plugint is használjuk, állítsunk be 16 bites kimenő bitmélységet, és kapcsoljuk be a dithert, mert a zajformálás önmagában nem ad ki jelet.
A Waves L3-ban négyféle zajformálás közül választhatunk: None (azaz semmi, ez tulajdonképpen egy szűretlen zaj), valamint moderate, normal és ultra. Ezek frekvenciaeloszlását láthatjuk a mellékelt ábrán, ahol természetesen nem a valódi jelszintjükön láthatóak és hallhatóak, hiszen a bitshiftgain-el 72 dB-el megemeltem azt, hogy jól hallhassuk. Normál esetben, átlagos hangerőn gyakorlatilag nem hallhatóak.
Ha más pluginekre, vagy akár külső dither eszközökre is kíváncsiak vagyunk, nem kell mást tennünk, mint kicserélni a dither plugint a kérdésesre. Ha egyszerre több dithert is elhelyezünk egymás után, de egy időben persze csak egyet kapcsolunk be, akkor egyszerűen összehasonlíthatjuk őket, legalábbis ami az általuk használt zajt illeti. Elég komoly különbségeket tapasztalhatunk az egyes pluginek zajformálása között.
Ha szeretnénk a különböző zajformálások hatását zenén is egyszerűen megtapasztalni, akkor erre is van mód. Mivel maga a hozzáadott zaj normál esetben -mint azt a bitshiftgain hozzáadása előtt tapasztaltuk- nagyon halk, és valljuk be, a dither hatása ennek megfelelően gyakorlatlan fül számára nehezen érzékelhető, a jelenséget fel kell nagyítanunk. Ezt hasonlóan tesszük meg, mint az előző példánál, de most -a bevitt hibák elkerülése végett- a halkításra és a hangosításra is bitshiftgaint fogunk használni. Ehhez némítsuk az előzőekben használt sávot, és hozzunk létre egy újat, amire importáljunk be egy 16 bites zenét (lehetőleg CD-ről, nem mp3-ból). A sáv első insert pontjára helyezzünk el egy bitshiftgaint, amin -12 bits értéket állítsunk be. Ezzel a zenét 12 bittel, vagyis 72 dB-el halkítottuk. Ezt követően jöhet a tesztelés alá vont dither plugin 16 bitre állítva, majd ezt követi egy újabb bitshiftgain, amin +12 bits értékkel visszahangosítjuk a zenét. Hogy ellenőrizni tudjuk a létrejövő bitmélységet, utolsóként helyezzünk el egy bitmélység mérőt, pl. az ingyenes Bitter-t. Mint látható, ez az említett beállításokkal 4 bit felhasználását jelzi, hiszen az eredetileg 16 bites audiót 12 bittel csökkentettük, tehát felerősítettük a dither működésének hatását.
Ha elindítjuk a lejátszást, és ki-be kapcsolgatjuk a dithert, hallhatjuk, hogy mit csinál. Kikapcsolt állapotban a zene az eredeti (nagyfelbontású) módon szól, bekapcsolt állapotban úgy, ahogy a dithert beállítjuk. Elsőként válasszunk csak sima csonkolást, vagyis kapcsoljuk ki a dithert. Ebben az esetben a csonkolás nélküli hangzáshoz képest a hangkép összeesik. Nem csak a szélek kerülnek beljebb a középpont felé, hanem az előre-hátra és a fel-le irányban is egy kisebb golyóba tömörül a hangzás. Ha bekapcsoljuk a dithert, ez az összeesés már nem jelentkezik, viszont a zaj miatt egy kicsit tompábbnak, fátyolosabbnak hallhatjuk a hangzást. Persze most a formálás nélküli zajról beszélek (none mód), ami jól hallható akkor is, amikor nem megy a lejátszás, vagy a zenében éppen csend van. Moderate módba kapcsolva a zajt már alig hallani, viszont cserébe sajnos a magas frekvenciák egy kissé felerősödnek a none módhoz képest. Normal és Ultra módban szintén más-más hangképet kapunk, ami azt jelenti, hogy minden esetben meghallgatás útján dönthetjük csak el, hogy mikor melyiket választjuk.
VinylDither
Az Airwindows által készített VinylDither sokkal inkább zajformáló, mint dither, de zajt is használ, így nevezhetjük dithernek is. Sajnos az egyes összetevőket külön-külön nem tudjuk beállítani, de kipróbálni és használni ettől még lehet. Mint már volt róla szó, a TPDF a matematikailag tökéletes dither, de mint arról szintén volt már szó, ez nem azt jelenti, hogy nem lehet ennél "jobb" hangzásút készíteni. Ezeknek mindössze annyi a hátrányuk, hogy ha az adott megoldás valamiben jobb, akkor egy másik dologban rosszabb kell hogy legyen. A VinylDither is pont ilyen.
Ennek a dithernek a működését Chris Johnson a DSD audióhoz hasonlítja, ami nagyon magas mintavételezéssel dolgozik, de csak 1 bit mélységben. Ezzel a megoldással a közép- és alacsony frekvenciák felbontása sokkal jobb mint PCM esetében, viszont a frekvencia növekedésével egyre több zaj keletkezik, így a magasakkal már problémásabban birkózik meg. Ezt a felfogást próbálja a VinylDither is megvalósítani, aminek segítségével az alacsony frekvenciák dinamikatartománya jelentősen megnő. A kísérleti algoritmusban például egy 16 bites fájlban egészen -200 dB-ig lehetett lemenni, de csak 10 Hz alatti frekvenciák esetében. Ezzel persze normál értelemben nem sokra megyünk, de az irányt jól mutatja.
A VinylDitherrel tehát az alacsony- és középfrekvenciák dinamikatartománya növelhető meg úgy, hogy itt semmilyen alapzajt nem hallunk, ezért azonban a magas frekvenciákon jelentkező pattanásokkal és recsegéssel fizetünk. Mindezt úgy éri el, hogy az általánosan használt fehérzajt egy vinyl lemez felületi zajához hasonló, recsegő hanggal (zajjal) cseréli ki. Ezt a zajt a mély és középfrekvenciákon jelentkező kerekítési hibák tárolásával, majd ezeknek a magas frekvenciákba történő áthelyezésével hozza létre, ezért halljuk a magas pattanásokat (vagyis zajformálás történik).
Ezt a dithert 16 bitre vágással a Vinyl 16 módban érhetjük el a Ditherbox-ban. Amint bekapcsoljuk, szinte csak magas frekvenciájú zajt, és pattogó recsegést hallunk, tehát a fehérzaj jellegű erős zúgás itt tényleg nem jelentkezik. Mindez a mellékelt képen is jól látható, hiszen a magas frekvenciák közel 50dB-el magasabb jelszintűek, mint az alacsonyak. Ha zenén próbáljuk ki, akkor máris hallható az egyik hátránya, mégpedig, hogy a zaj jellege a frekvenciával és jelszinttel együtt változik. Az alacsonyabb jelszintek esetén a csonkoláshoz hasonlóan változik a torzítás hangzása, viszont cserébe a TPDF-hez képest szinte elhanyagolható a hallható zaj szintje. Tapasztalható az is, hogy TPDF esetében a zaj elég sok mindet elmaszkol, főként a magasabb frekvenciákon, így ezeket másnak halljuk, mint VinylDither esetében. Egészen pontosan egy tompább, és beszűkültebb hangzást kapunk (mármint a TPDF esetében), viszont VinylDither-el sokkal alacsonyabb jelszinteket is hallhatunk, amiket a TPDF zaja mér elnyom. Igaz persze az is, hogy ezek az alacsony jelszintek torzítottak, de még mindig sokkal kevésbé, mint egyszerű csonkolás esetén. Ha tehát fontos a jellegtelen, folyamatos, változatlan alapzaj, akkor használjunk inkább TPDF dithert. Fontos elmondani, hogy ez nem egy lemez-hangzás szimulátor, mindössze csak annak hangulatához hasonlót állít elő!
Ha más pluginekre, vagy akár külső dither eszközökre is kíváncsiak vagyunk, nem kell mást tennünk, mint kicserélni a dither plugint a kérdésesre. Ha egyszerre több dithert is elhelyezünk egymás után, de egy időben persze csak egyet kapcsolunk be, akkor egyszerűen összehasonlíthatjuk őket, legalábbis ami az általuk használt zajt illeti. Elég komoly különbségeket tapasztalhatunk az egyes pluginek zajformálása között.
Ha szeretnénk a különböző zajformálások hatását zenén is egyszerűen megtapasztalni, akkor erre is van mód. Mivel maga a hozzáadott zaj normál esetben -mint azt a bitshiftgain hozzáadása előtt tapasztaltuk- nagyon halk, és valljuk be, a dither hatása ennek megfelelően gyakorlatlan fül számára nehezen érzékelhető, a jelenséget fel kell nagyítanunk. Ezt hasonlóan tesszük meg, mint az előző példánál, de most -a bevitt hibák elkerülése végett- a halkításra és a hangosításra is bitshiftgaint fogunk használni. Ehhez némítsuk az előzőekben használt sávot, és hozzunk létre egy újat, amire importáljunk be egy 16 bites zenét (lehetőleg CD-ről, nem mp3-ból). A sáv első insert pontjára helyezzünk el egy bitshiftgaint, amin -12 bits értéket állítsunk be. Ezzel a zenét 12 bittel, vagyis 72 dB-el halkítottuk. Ezt követően jöhet a tesztelés alá vont dither plugin 16 bitre állítva, majd ezt követi egy újabb bitshiftgain, amin +12 bits értékkel visszahangosítjuk a zenét. Hogy ellenőrizni tudjuk a létrejövő bitmélységet, utolsóként helyezzünk el egy bitmélység mérőt, pl. az ingyenes Bitter-t. Mint látható, ez az említett beállításokkal 4 bit felhasználását jelzi, hiszen az eredetileg 16 bites audiót 12 bittel csökkentettük, tehát felerősítettük a dither működésének hatását.
Ha elindítjuk a lejátszást, és ki-be kapcsolgatjuk a dithert, hallhatjuk, hogy mit csinál. Kikapcsolt állapotban a zene az eredeti (nagyfelbontású) módon szól, bekapcsolt állapotban úgy, ahogy a dithert beállítjuk. Elsőként válasszunk csak sima csonkolást, vagyis kapcsoljuk ki a dithert. Ebben az esetben a csonkolás nélküli hangzáshoz képest a hangkép összeesik. Nem csak a szélek kerülnek beljebb a középpont felé, hanem az előre-hátra és a fel-le irányban is egy kisebb golyóba tömörül a hangzás. Ha bekapcsoljuk a dithert, ez az összeesés már nem jelentkezik, viszont a zaj miatt egy kicsit tompábbnak, fátyolosabbnak hallhatjuk a hangzást. Persze most a formálás nélküli zajról beszélek (none mód), ami jól hallható akkor is, amikor nem megy a lejátszás, vagy a zenében éppen csend van. Moderate módba kapcsolva a zajt már alig hallani, viszont cserébe sajnos a magas frekvenciák egy kissé felerősödnek a none módhoz képest. Normal és Ultra módban szintén más-más hangképet kapunk, ami azt jelenti, hogy minden esetben meghallgatás útján dönthetjük csak el, hogy mikor melyiket választjuk.
VinylDither
Az Airwindows által készített VinylDither sokkal inkább zajformáló, mint dither, de zajt is használ, így nevezhetjük dithernek is. Sajnos az egyes összetevőket külön-külön nem tudjuk beállítani, de kipróbálni és használni ettől még lehet. Mint már volt róla szó, a TPDF a matematikailag tökéletes dither, de mint arról szintén volt már szó, ez nem azt jelenti, hogy nem lehet ennél "jobb" hangzásút készíteni. Ezeknek mindössze annyi a hátrányuk, hogy ha az adott megoldás valamiben jobb, akkor egy másik dologban rosszabb kell hogy legyen. A VinylDither is pont ilyen.
Ennek a dithernek a működését Chris Johnson a DSD audióhoz hasonlítja, ami nagyon magas mintavételezéssel dolgozik, de csak 1 bit mélységben. Ezzel a megoldással a közép- és alacsony frekvenciák felbontása sokkal jobb mint PCM esetében, viszont a frekvencia növekedésével egyre több zaj keletkezik, így a magasakkal már problémásabban birkózik meg. Ezt a felfogást próbálja a VinylDither is megvalósítani, aminek segítségével az alacsony frekvenciák dinamikatartománya jelentősen megnő. A kísérleti algoritmusban például egy 16 bites fájlban egészen -200 dB-ig lehetett lemenni, de csak 10 Hz alatti frekvenciák esetében. Ezzel persze normál értelemben nem sokra megyünk, de az irányt jól mutatja.
A VinylDitherrel tehát az alacsony- és középfrekvenciák dinamikatartománya növelhető meg úgy, hogy itt semmilyen alapzajt nem hallunk, ezért azonban a magas frekvenciákon jelentkező pattanásokkal és recsegéssel fizetünk. Mindezt úgy éri el, hogy az általánosan használt fehérzajt egy vinyl lemez felületi zajához hasonló, recsegő hanggal (zajjal) cseréli ki. Ezt a zajt a mély és középfrekvenciákon jelentkező kerekítési hibák tárolásával, majd ezeknek a magas frekvenciákba történő áthelyezésével hozza létre, ezért halljuk a magas pattanásokat (vagyis zajformálás történik).
Ezt a dithert 16 bitre vágással a Vinyl 16 módban érhetjük el a Ditherbox-ban. Amint bekapcsoljuk, szinte csak magas frekvenciájú zajt, és pattogó recsegést hallunk, tehát a fehérzaj jellegű erős zúgás itt tényleg nem jelentkezik. Mindez a mellékelt képen is jól látható, hiszen a magas frekvenciák közel 50dB-el magasabb jelszintűek, mint az alacsonyak. Ha zenén próbáljuk ki, akkor máris hallható az egyik hátránya, mégpedig, hogy a zaj jellege a frekvenciával és jelszinttel együtt változik. Az alacsonyabb jelszintek esetén a csonkoláshoz hasonlóan változik a torzítás hangzása, viszont cserébe a TPDF-hez képest szinte elhanyagolható a hallható zaj szintje. Tapasztalható az is, hogy TPDF esetében a zaj elég sok mindet elmaszkol, főként a magasabb frekvenciákon, így ezeket másnak halljuk, mint VinylDither esetében. Egészen pontosan egy tompább, és beszűkültebb hangzást kapunk (mármint a TPDF esetében), viszont VinylDither-el sokkal alacsonyabb jelszinteket is hallhatunk, amiket a TPDF zaja mér elnyom. Igaz persze az is, hogy ezek az alacsony jelszintek torzítottak, de még mindig sokkal kevésbé, mint egyszerű csonkolás esetén. Ha tehát fontos a jellegtelen, folyamatos, változatlan alapzaj, akkor használjunk inkább TPDF dithert. Fontos elmondani, hogy ez nem egy lemez-hangzás szimulátor, mindössze csak annak hangulatához hasonlót állít elő!
Digitális szóhossz-csökkentők
A digitális technikában szónak nevezik azt a bitszámot, amivel az adott rendszer alapvetően dolgozik. 16 bites rendszerekben egy szó 16 bitnyi információt, 32 bites rendszerben 32 bitnyit jelent. A 64 bites rendszerekben viszont inkább dupla szónak hívják, mert két darab 32 bites szóról beszélünk.
Digitális audió esetében a bitmélység csökkentéskor létrejövő kvantálási hibákat mint már tapasztatuk, eredményesen lehet kompenzálni, például zajmoduláció használatával. Ugyanakkor azt is tapasztaltuk, hogy bizonyos esetekben a hozzáadott zaj sajnos hallhatóvá válik. Vajon van-e más lehetőségünk a bitmélység csökkentésből eredő torzítások javítására? Mint azt sokan már gondolják, biztosan van, különben nem kezdtünk volna bele ebbe a fejezetbe...
A zajmoduláció alapelve, hogy zajt, vagy valamilyen véletlenszerűséget használ a torzítás megszüntetésére, ezért azokat a megoldásokat, amik nem zajt, vagy más véletlenszerűséget használnak, nem nevezhetjük dithernek. Jobb híján hívjuk őket digitális szóhossz-csökkentőknek, bár sok estben a könnyebb beazonosítás miatt ezeket is dithernek nevezik, hiszen azonos funkciót látnak el.
Négyzetes maradék (HighGlossDither)
Bármennyire is természetes hatást adnak a ditherek, vannak olyan emberek, akiknek jobban tetszik az egyszerű csonkolás által létrehozott kissé recsegős, ropogós hangzás, mert egyfajta párhuzamos kompresszióhoz hasonló hatást ad. Ennek persze nagy hátránya, hogy így a hang nem képes finoman átúszni a csendbe, hiszen az utolsó bitnél már csak ki-be kapcsolást hallunk. A feladat tehát egy olyan újrakvantáló megalkotása, ami megtartja a csonkolás hangzását, de közben lehetővé teszi a folyamatos csendbe kiúszást is.
Az Airwindows által készített HighGlossDither egy hibrid megoldás, mert nem véletlenszerű zajt, hanem egy egyenletes eloszlású, úgynevezett négyzetes maradék sorozatot (kvadratikus maradék szekvenciát) használ arra, hogy a diffraktált hangokat a ropogósságuk szerint rendezze sorba. Ez hasonló mint egy normál, teljesen véletlen zaj, de annál sokkal kevésbé véletlen, vagyis hallható ismétléseket tartalmaz, ezáltal egy kicsit finomabbnak hat. Bár úgy tűnhet, hogy hallhatóak benne a részletek, de ez csak úgy tűnhet, mert a sorozat nagyon nagy sebességgel ismétlődik, és elég jellegtelen is. Ezt aztán ugyanúgy a hanghoz keveri, mint a zaj esetében, de alacsonyabb jelszinten mint egy normál dithert. A végeredmény a dither és a csonkolás közötti átmenet, ami megtartja a csonkolás hangzását, de a halk hangok egy fokkal természetesebben viselkednek mint az egyszerű csonkoláskor, bár így is torzítottak lesznek. Ugyanakkor kapunk egy TPDF-hez hasonló, de annál halkabb zajt, aminek csak annyi a szerepe, hogy megfelelő kölcsönhatást adjon a hangokkal. Bár ez a bitmélység csökkentő megoldás normál értelemben nem javítja a hangzást, előfordulhat, hogy bizonyos speciális hangzások eléréséhez szükségünk lehet rá.
Ezt a dithert 16 bites vágással a HiGloss 16 módban érhetjük el. Amint bekapcsoljuk, hallhatjuk is a zajt, ami kicsit hasonlít a TPDF-re, de annál valamivel halkabb. Mivel ez a megoldás a beérkező adatokra épül, így önmagában nem sokat mond, teszteljük inkább zenén keresztül!
Benford eloszlás (NaturalizeDither)
"Frank Benford amerikai fizikus és villamosmérnök volt. Megfigyelte, hogy az egyetemi könyvtárban a logaritmus-táblázatok első oldalai erősebben elhasználódtak, mint az utolsók. A hallgatók és oktatók az alacsonyabb számmal kezdődő táblázatokat használták többet. Benford rájött, hogy ha véletlen számokat veszünk számok bármely egyenletes eloszlású halmazából, akkor a számok gyakrabban fognak 1-gyel, mint 9-cel kezdődni. Bármilyen eredetű legyen is egy szám – pl. tavak felszíne, munkatársak lakásának házszáma, az egész számok négyzetgyökei – körülbelül hatszor olyan gyakran kezdődik 1-gyel, mint 9-cel. A számok kb. 31%-a kezdődik 1-gyel, 19%-a 2-vel, 12%-a 3-mal és a százalékok a számok nagyságával egyre csökkennek. Benford törvénye tehát csak a több számjegyű számok bal oldali első számjegyére vonatkozik." Forrás: Wikipédia
Ahogy a hang kezd halkulni és beleveszni a csendbe (például a zengetés lecsengésekor), a mintaértékek Benford törvényének megfelelően jelennek meg. Bitmélység csökkentéskor kétféle irányban térhetünk el ahhoz az értékhez képest, amit a valóságban is kaptunk volna, ha már eleve a kisebb bitmélységen digitalizáltunk volna: vagy lefelé, vagy felfelé. A NaturalizeDither mindkét számot létrehozza, majd megvizsgálja, hogy melyik esik közelebb a természeteshez, vagyis a Benford féle eloszláshoz, és azt választja. Ezzel gyakorlatilag statisztikai alapon próbáljuk meghatározni, hogy vajon milyen mintaértéket kapnánk akkor, ha a bitmélység csökkentés utáni hangot nem csonkolással, hanem a valóságban, az új bitmélységen rögzítettük volna. Ez az eljárás gyakorlatilag lerombolja a digitális hang természetellenességét. Nem viszünk be semmilyen további felesleges energiát, maga a dither mindig az eredeti audió leginkább jelentéktelen bitjében lesz benne. Elméletileg ebbe az eljárásba nem kéne zajt bevinni, de a NaturalizeDitherbe mégis hozzáadásra került némi véletlenszerűség, hogy a számok eloszlása egy kicsit jobb legyen.
Ezt az eljárást a Natural 16 módban érhetjük el a Ditherboxban. A NaturalizeDither nem színezi a hangot, és alacsony zajszinttel rendelkezik. Sőt, nemcsak hogy csendes, de a zaj gyakorlatilag a hang lecsengése mögé kerül, ezáltal ha valaki a hangra figyel, nagyon nehezen hallja meg a zajt. A hang valódiságának érzete olyan fokú, hogy teljesen elfeledkezünk a zajküszöbről. A mellékelt ábra elég megtévesztő lehet, ugyanis beérkező hang nélkül ez a megoldás nem ad ki magából további hangot, hiszen a kalkuláció a beérkező adatokon történik. Ahhoz, hogy láthatóvá váljon a zajszerű működés, egy 0 Hz-es szinuszhullámot küldtem a Ditherbox-ba. A TPDF hangzás ehhez képest egysíkúbb és kevésbé széles, mert a TPDF-ben lévő zaj sok mindent "eltakar".
Benford eloszlás+zajformálás (NotJustAnotherDither)
A címből a legtöbben gondolom már kitalálták, hogy ez a bitmélység csökkentő újrakvantáló megoldás az előző Benford eloszláson alapuló megoldás továbbfejlesztése. A NaturalizeDither egyrészt zajformálást kapott, ezzel az összes kvantálásból eredő zaj a magas frekvenciákba lett eltolva, így sokkal kevésbé hallhatóak, mondhatjuk úgy is, hogy egy finom sistergés lett belőlük. Másrészről az összes beépített véletlenszám generátor száműzésre került, vagyis minden hozzáadott zaj kizárva. Chris Johnson szerint ezzel a kombinációval minden fixpontos ábrázolású hang ami ebből a pluginből kijön, végtelen felbontásúnak hangzik, ami valljuk be, sokkal több mint amit bármilyen más "normál" dither megoldás adni képes.
Ezt a "dithert" az NJAD 16 módba kapcsolva használhatjuk 16 bites kimenettel, ha jó a Ditherboxunk. Sajnos a cikk írásakor valamilyen plugin hiba miatt nekem ez inkább csak csonkolást végzett, viszont mint minden ditherboxban lévő dithernek, ennek is létezik különálló változata, sőt az NJAD esetében nem csak 24, hanem 16 bites is, aminek a neve NJAD CD. Amíg a ditherbox nem kerül kijavításra, használhatjuk ezt (24 vagy 16 biten, a kívánt kimenettől függően), vagy a legújabb verziót tartalmazó StudioTan-t, amiben szintén NJAD 16 és NJAD 24 néven találjuk meg. (Bár nekem a Studio Tan sem adott olyan jó eredményt, mint a külön NJAD. Másnak ettől még működhetnek.)
Tipp:
A Studio Tan-ban három különböző szóhossz csökkentőt találunk:
ST24 és 16-Studio Tan, DMT24 és 16-Dither Me Timbers, NJAD16 és 24-Not Just Another Dither
Mivel ez a bitmélység csökkentő nem használ hozzáadott zajt, így csak akkor halljuk a működését, ha hangot vezetünk át rajta. A mellékelt ábrán egy 0 dBFS jelszintű 1000 Hz-es szinuszhullámot kapcsoltam rá, természetesen 16 bites fixpontos formátumban, a már megszokott bitshiftgain kombóval, amivel így összesen egy 4 bites jelet kapunk. Ez persze csak egy szintetikus teszt, ami önmagában nem sokat mond, így a valódi tesztelést a fentiekben is használt zenével érdemes elvégezni. A sima csonkoláshoz képest szinte semmilyen torzítást nem hallani, a zajt használó ditherekhez képest pedig szinte semmi zajt nem kapunk. Amit igen, az nem folyamatos sistergés, hanem más jellegű, és a jellel együtt változik, de ne feledjük el, hogy a próbák során mi már csak az utolsó 4 bitet hallgatjuk! Viszont ezen a 4 biten is szinte mindent hallunk amit a nagyfelbontású audió ad. Torzítás nélkül halljuk a halk hangokat is, nem szűnik meg a tér és a mélység, és a frekvenciaeloszlás sem változik meg túlzottan, talán egy kicsit élesebbé, ha úgy tetszik tisztábbá válik a hangzás a zajformálás miatt.
Lebegőpontos dither
Sokan -vagy talán pontosabb úgy fogalmazni, hogy a legtöbben- úgy gondolják, hogy a lebegőpontos ábrázolást nem kell ditherelni, mert ennek semmi értelme nincsen, hiszen a zajküszöb olyan alacsony, hogy lehetetlen meghallani a kvantálási hibákból adódó torzítást. Azonban ne feledjük el, hogy minden műveletvégzés után létrejöhetnek ezek a hibák, és sajnos ezek kumulatívan működnek, vagyis mindig összeadódnak. Sok műveletvégzés pedig odáig vezethet, hogy még a 24 bites audióban is hallhatóvá válnak a torzítások. (Ne feledjük, hogy a 32 bites lebegőpontos ábrázolás valójában 24 bites mantisszával dolgozik!)
Sokan úgy gondolják, hogy a lebegőpontos ábrázolást nem is lehet ditherelni. Ennek oka, hogy a mantisszában az értékek a kitevő szerint vannak skálázva. Vagyis vagy nagyon közel helyezkednek el egymáshoz, de csak kis tartományt fednek át, vagy nagyon távol helyezkednek el egymástól, de nagy tartományt fognak át. Ha a mantisszát dithereljük, akkor a kitevőtől függően jön létre a zaj, vagyis az a kisebb és nagyobb kitevőjű értékek között "ugrálni" fog, tehát nem marad állandó. Ezt a jelenséget már -igaz sokkal kisebb értékben- tapasztaltuk az egyszerű RPDF dither esetében. Képzeljük el, milyen lehetne, ha ez a zaj hangerő-hullámzás ezerszer vagy akár több milliószor nagyobb lenne, ahogy a lebegőpontos ábrázolásban változik a kitevő. Ez nem hogy javítana, hanem pont hogy rontana a hangzáson. Valójában a lebegőpontos dithert eddig nem sokan próbálták megvalósítani, bár erről Paul Frindle-t kéne megkérdezni.
A valóság az, hogy a kvantálási hiba és az ebből kialakuló kvantálási zaj és torzítás a lebegőpontos ábrázolásnál is létezik, főként amikor a kitevő miatt a mantisszában lévő értékek nagyon távol helyezkednek el egymástól. Ilyenkor a normál csonkoláskor keletkező hibákat és hangzást kapjuk. Ezt az esetet persze nem tapasztalhatjuk minden nap, de Chris Johnson elkészített egy demo plugint, amiben a beérkező adathoz egy nagyon nagy számot adunk hozzá, ezzel lebegőpontossá alakítva azt, majd ezt a számot kivonva belőle visszaalakítjuk normál "hangerőre". A hozzáadott számot bitmélység alapján tudjuk meghatározni, hasonlóan a bitshiftgain-hez. Egy 16 bites wav zene esetében például már 20 bitnél hallható a torzítás, 22-nél pedig már szinte csak 2 bites hangzást hallunk. Jó ha tudjuk, hogy ez történik minden pluginben és minden DAW csatornán, 32 bit lebegőpontos ábrázolás esetén! Persze minél kevesebbszer halad át a hang egy pluginen vagy csatornán, annál kevesebbszer adódik ez a torzítás hozzá.
Ha viszont zajt adunk a hanghoz, például a demo pluginba épített dither-el (ami egy PaulDither), akkor a szokásos dolog történik, vagyis ismét hallhatóvá válnak a lecsengések, meg persze maga a zaj is. A rossz hír az, hogy ezt a megoldást csak a pluginekbe építve lehet használni, mielőtt a jel kilépne belőlük, vissza a DAW-ba. Vagyis hiába is készítene Chris egy lebegőpontos dither plugint, az nem tudná javítani a már meglévőket. Ezért senki se remélje azt, hogy ezzel a demo pluginnel majd feljavítja más gyártók termékeit! Ugyanezen okból kifolyólag, az összes Airwindows plugin 32 bites lebegőpontos dither kimenettel lett ellátva, amiket ide kattintva tölthetünk le.
Megismertünk tehát pár dithering megoldást, de ennél persze sokkal több létezik. Mivel most már tudjuk hogy hogyan lehet, és hogyan érdemes tesztelni, talán egyszerűbben tudjuk megállapítani, hogy a rendszerünkben rendelkezésre álló mit is csinál és milyen hangzást eredményez, és az újabbak felfedezése és megértése is egyszerűbbé válik.
Mire is jók a dithering megoldások?
A csonkolás önmagában olyan hatást ad, mintha eltűnne a háromdimenziós tér, megszűnne a mélység és a szélesség. Ilyenkor a zene egy sík lappá, egy vetítővászonná válik, tehát a legtöbbször a zajmodulációt és más szóhossz csökkentő eljárásokat a térhatás, a térinformációk megtartására érdemes használni. Vagyis azoknak a nagyon halk részeknek a megtartására, amik az alacsony bitszám miatt egyébként már elvesznének.
Sajnos bármilyen halk is a dither zaja, és bármennyire is képes visszaadni az elveszett térinformációt, a jobb hallással rendelkezők már normál hangerőn is hallják a sistergő zajt, amitől a hangzás ködössé, fátyolossá válik. Vagyis azok a térinformációk amiket szeretnénk megmenteni, belevesznek a dither zajába (maszkolás). Erre mondják, hogy se veled, se nélküled.
Elméletileg a hozzáadott zaj szintje nem kell hogy magas legyen ahhoz, hogy a zajmoduláció működjön. Ez már csak azért is jó, mert -mint ahogy azt már megtapasztaltuk-, ahogy hangosítjuk a zajt, úgy válik egyre hallhatóbbá. Valójában az elméletileg szükséges zajszint nem több, mint 1 LSB, vagyis 16 bites audió esetében 1 bit. Ez nagyjából 6 dB-t jelent, ami 16 bites audió esetén -96 dBFS jelszintnek felel meg. Az egyik előző próba alkalmával -24 dBFS-re kellett beállítanunk a zaj szintjét, ami pont a 4 bit legalsó bitjének felel meg. Bob Katz szerint, dither használatával 16 bit mélységű zenei felvételek esetén a térhatást és lecsengést adó részeket akár -115 dB-ig is hallhatjuk. Bár a jel-zaj viszony csak 96 dB, a dinamikatartomány 115 dB, ezáltal a zajszint alatt is hallhatjuk a zenét.
Mikor használjunk dithert?
Elméletileg mindig, amikor a bitmélységet csökkentjük. Ez az elméleti válasz, ami persze egy csomó kérdést von maga után. Mert az exportálás kivételével, honnan tudjuk, hogy mikor csökken a bitmélység? Nos, ha 32 bites audiót és 24 bites DA konvertert használunk, akkor itt máris van egy csökkentés. Ez nem csak a maszterre, hanem az analóg inzertekre és effektekre is igaz! Sőt, ha digitális külső eszközöket kötünk a DAW-ra, legtöbb esetben azok is 24 biten kommunikálnak (mert ez az AES/EBU szabvány).
Szintén csökkenhet a bitmélység a DAW buszokon, akár a pluginek között is, ha nem támogatják a DAW által használt formátumot, vagy a DAW nem támogatja a plugin kimeneti formátumát. Ilyen eset lehet például a MacOS-ben használt Core Audio, vagy a 32 bites busszal rendelkező VST szabvány, ahol hiába van lebegőpontos ábrázolás, amikor a mantissza fixpontos 24 bites szám. (A 64 bites lebegőpontos rendszerekre ugyanez igaz, csak ott még lejjebb kerül a zajküszöb, ezáltal a torzítás is sokkal kevésbé hallható.) Vagyis a lebegőpontos adatoknál is létezik a csonkolás és a miatta bekövetkező torzítás, tehát ilyenkor is zaj keletkezik, és sajnos nem a sistergős fajta. Sajnos a hibás plugin után elhelyezett dither nem képes a hibát javítani, mert az már a jelbe van kódolva. Ezért a tökéletes hangminőség érdekében a dithert a pluginbe kell építeni, hogy az abból kilépő jel már megfelelőn legyen a kívánt bitmélységre optimalizálva.
Chris Johnson szerint hiába van egy adott jelben már zaj, például egy analóg felvétel, vagy egy analóg modellezett plugin által hozzáadott zaj, akkor is érdemes és kell is dithert használni, hogy elkerüljük a csonkolás okozta torzításokat (harmonikusok hozzáadását).
Dither használat szabálya
Ha azt szeretnénk, hogy a ditheren átvezetett hang frekvenciamenete ne változzon, akkor a legjobb megoldás a TPDF (esetleg a Paul) jellegű dither használata. Bár ez zajt ad a jelhez, ami sok egymást követő dither, vagy több csatornáról egyszerre érkező összekevert jel esetén összeadódhat, vagyis hallhatóvá válhat, sok esetben jobb megoldás, mint egy szűrt zaj, vagy zajformálást alkalmazó dither használata, ami a zaj energiáját elsősorban a magasabb frekvenciákra tolja el, így ott sokkal hamarabb keletkezik túlvezérlés. Ebből következik, hogy ha valaki mindenképpen szabályt szeretne felállítani a dither használatával kapcsolatban, akkor elmondható, hogy sávokon, inzert kimeneteken inkább TPDF vagy hasonló, jellegtelen dithert érdemes használni. Olyan esetekben, amikor biztosak vagyunk benne, hogy további dither nem kerül alkalmazásra, például a maszter busz kimenetén vagy rendereléskor pedig zajformálással javított dithert érdemes használni, mert a zajformálás csökkenti a hallható zajt és torzítást, jobban mondva a nem hallható frekvenciákra tolja azt.
Dither a maszter buszon
A leginkább ajánlott pont a maszter busz kimenete, hiszen innen kapja a jelet a DA konverter (hangkártya) és a kész fájl is, ami pl. CD-re vagy műsorszórásra (streaming) kerül. A dither mindig a legutolsó eleme legyen a maszter busznak, utána már a jelszintet se csökkentsük, mert ezzel a legtöbb esetben ismét lebegőpontosra alakítjuk vissza az adatokat! Ezért mondják általában, hogy a maszter fader mindig 0 dB-en kell hogy legyen. (Ha halkítás szükséges, akkor azt a dither előtt elhelyezett hangerő pluginnel tegyük meg.)
Érdekes kérdés, hogy csak exportáláskor (rendereléskor) használjunk dithert a maszter buszon, vagy mindig? Nos, ha azt vesszük alapul, hogy a hangkártya nem képes 32 bites adatot megjeleníteni, akkor a kérdés már eleve eldőlt. Ha pedig figyelembe vesszük azt is, hogy a dither képes megváltoztatni a kialakult hangzást, akkor még jobb ötletnek tűnik már eleve úgy elkészíteni a mixet, hogy a dither mindig a maszter buszon van. (Alternatív megoldásként lehet a monitor effektláncban is, bár ebben az esetben exportáláskor valahogy gondoskodni kell a fájlba kerülő ditherről.) Személyes véleményem, hogy mivel a legtöbb hangkártya 24 bites, így a lehető legjobb eredmény elérése érdekében érdemes a monitor effektek utolsó darabjának egy 24 bitre kvantáló dithert használni. Személyesen az NJAD-t ajánlom (az önálló 24 bites verziót). Ha a DAW-ban nincsen külön monitor effektlánc, akkor a maszter busz utolsó inzert pontjára helyezzük el, és a maszter fadert tartsuk mindig 0 dB-en! Ebben az esetben a végső render előtt ne feledjük el kikapcsolni a dithert, ha szükséges!
Mikor nem érdemes dither használni a maszter buszon?
MP3, AAC és egyéb tömörített formátumú kimenet esetén nem érdemes dithert használni, mert ezek önmagukban olyan hibákat visznek bele a jelbe, amit a dither nem képes javítani. Ilyenkor az egyetlen jó megoldás, ha a lehető legmagasabb bitszámban exportálunk. Ha a kész mixet masztering hangmérnöknek küldjük exportált fájl formában (például sztereó), szintén ne használjunk dithert, mert ezt majd Ő fogja hozzáadni (profi módon).
Mennyi dithert használjunk és milyet?
Erre sajnos nincsen egzakt képlet, mindig meg kell hallgatni, hogy mikor melyiket célszerű használni. Ez függ a mix frekvenciaeloszlásától és a hangerőtől, jelszinttől is. Egy halk mixben, például egy vonósnégyesben, ahol sok a halk rész, nem használhatunk nagy jelszintű zajt, mert az hallhatóvá válik. Ugyanakkor ha túl alacsony a zaj szintje, akkor nem jön létre megfelelő zajmoduláció, és sokkal több információ válik a csonkolás áldozatává.
Auto Black
Mivel a halk részeken -különösképpen akkor, amikor nincsen hasznos jel-, a hozzáadott zaj hallhatóvá válik, ezért egyes algoritmusok ilyen esetben kikapcsolják a zajt, ezáltal a csendes részek valóban hangtalanok maradnak. Ezzel azonban egyben "felbontást" veszítünk, hiszen a nagyon alacsony jelszintek esetében nem történik meg a zajmoduláció, és az alsó bitekben tárolt információk elvesznek. Néhány dithertben a funkció ki-be kapcsolható, más pluginekben, csak bizonyos módokban működik (pl. Waves L2 és L3 csak a TYPE 2-es beállításban).
Automatikus Dithering
Egyes szoftverek automatikusan alkalmaznak dithert, amikor bitmélység csökkentést végeznek. Ilyen például a Pro Tools exportja.
Kereskedelmi dithering megoldások
A legtöbb dither és szóhossz csökkentő megoldás kereskedelmi termék, aminek használatáért licencdíjat kell fizetni. Ezt persze sok esetben már akkor megtesszük, amikor megvásároljuk azt a DAW-ot, vagy eszközt, amibe be van építve, ezért nem kell érte külön fizetnünk (hiszen annak gyártója licenceli a terméket). Nézzünk meg pár szóban néhány jelentősebb kereskedelmi megoldást.
POW-R
A POW-R szóhossz csökkentő algoritmusokat négy nagy cég, a Lake Technology (Dolby Labs), a Weiss Engineering, a Millennia Media, és a Z-Systems közösen fejlesztette ki 1997-1998-ban, de más cégek is licencelik saját termékeikbe, például Apple Logic, Avid Pro Tools, Sonic Studio, Cakewalk Sonar, Ableton, Samplitudes, stb. Sokak szerint a világ legjobb algoritmusai.
Tipp:
Bár a Reaper DAW-hoz kapott ingyenes JS-Bit Reduction/Dither plugin is tartalmaz POW-R jellegű zajformálást, ez nem azonos az eredeti POW-R algoritmusokkal. Ugyanakkor mégis létezik ingyenes megoldás, hiszen a Bandlab Cakewalk-ban megtalálható mind a három POW-R algoritmus.
Bár itt valójában három különböző algoritmusról beszélünk (egy keskenysávú Nyquist dither és két zajformáló), ezek együttes jellemzője, hogy nem a többi dithering megoldás által használt minimális zajküszöbre vannak optimalizálva, hanem egy úgynevezett normál lehallgatási hangerőre. Ez azt jelenti, hogy úgy optimalizálják a zajokat és torzításokat, hogy a lehető legnagyobb dinamikatartományt kapjuk, a lehető legkisebb hallható hozzáadott zajjal, vagy kialakult torzítással. Vagyis itt nem a matematikailag és tudományosan elérhető legjobb eredményre törekednek, hanem az emberi hallást veszik figyelembe, és ahhoz illesztik az algoritmusokat. Ezért ezt a módszert pszichoakusztikailag optimalizált szóhossz csökkentésnek nevezik (Psychoacoustically Optimized Wordlength Reduction, innen a rövidítés: POW-R).
Mivel a különböző hangok és zenék eltérő dinamikával és frekvenciatartománnyal rendelkeznek, ezért a POW-R fejlesztői úgy gondolták, hogy nem lehetséges egyetlen, mindenre alkalmazható algoritmust készíteni. Ezért három különböző megoldással álltak elő:
POW-R 1: Alacsony dinamikatartományra optimalizált algoritmus, például erősen kompresszált pop zene
POW-R 2: Kevésbé komplex hanganyagokra optimalizált algoritmus, például beszéd
POW-R 3: Komplex, magas dinamikatartományú hanganyagokra optimalizált algoritmus, például szimfonikus zenekar
Apogee-UV22HR
Érdekes módon, ez a megoldás nagyon hasonlít a szalagos magnóknál használt felvételi korrekcióhoz, ahol egy nagyfrekvenciás jellel javítják a felvétel frekvenciaátviteli linearitását (minőségét). Az UV22-ben egy 22 kHz-es, algoritmikusan előállított energiát adnak a hanghoz, amit emberi füllel nem hallhatunk, ezért nem is zavar minket, a funkcióját azonban ellátja. Elvileg nem változtatja meg a frekvenciamenetet, és a digitális csúcsokat is lekerekíti, így a leggyengébb minőségű konverteren is jó hangzást biztosít. A hallható zajt is egy szalagos magnóhoz hasonlítják, és azt ígérik, hogy akár 24 dB-el is a digitális zajküszöb alá mehetünk, aminek köszönhetően a 3d tér is jelentősen javul. Egyetln hátránya, hogy csak egyszer érdemes a jelhez adni, mert többszöri feldolgozás és átkódolás után ronthatja a minőséget.
Tipp:
Bob Olhsson szerint az UV22 sokat segíthet a vékony, steril hangzás feljavításában, míg a Waves IDR algoritmusok inkább a tiszta, meleg hangzásnak kedveznek, pontosabban nem károsítják azt.
Waves IDR
A Waves Increased Digital Resolution, magyarult megnövelt digitális felbontás rendszere még Bob Katz szerint is a legjobbak közé tartozik. Persze valójában itt sincsen csoda, egyszerűen csak ők is kifejlesztették a saját dither és zajformáló megoldásaikat. Ami talán különlegesség lehet, hogy a teljes folyamat 64 bites lebegőpontos számításokkal történik, így a 24 bites fixpontos audiót is rendkívül jó minőségben képes előállítani. A Type 1 egy szélessávú TPDF dither, ami 5 dB-el emeli a háttérzajt, és természetesen teljesen homogén sistergést ad a jelhez, pont mint egy analóg rendszer. A Type 2 ezzel szemben egy keskenysávú dither (valószínűleg egy szűrt TPDF), aminek zaja elvileg hallhatatlan, így a Type 1-hez képest 5 dB-el halkabb. Mivel a dither energiát a magas tartományba tolja el, így az alacsony frekvenciákon némi torzítás léphet fel, de ez sokkal kevésbé hallható, mint egyszerű csonkolás esetén. A Type 2 módot akkor érdemes választani, ha a hallható zaj egyáltalában nem elfogadható, míg a Type 1-et akkor, ha a zaj nem gond, illetve ha a jelet többször is fel szeretnénk még dolgozni, vagyis a Type 1-es dithert akár minden csatornára és buszra is betehetjük. A zajformáláshoz kilencedik rendű, vagyis nagyon meredek vágású szűrést használnak, amiben az energiát 15 kHz fölé tolják át. A legkisebb beállításnál kb 6 dB-t csökkenti a zajt (a dither zajt, vagy a kvantálási torzítást), a legerősebb Ultra értéknél pedig 18 dB-el. Ebben az esetben a nagyfrekvenciás jel 23 dB-el erősödik, így ezt az egyébként szinte észrevehetetlen megoldást csak és kizárólag a masztering folyamat utolsó lépéseként érdemes elvégezni.
iZotope MBit+
Az iZotope is elkészítette saját dithering megoldását, amit MBit+-nak neveztek el. Ebben három különböző dither algoritmust és zajformálást találunk. A Type 1-es egy egyszerű RPDF dither, a Type 2 egy TPDF dither, az MBit+ esetében egy általánosan használható dithert kapunk. A zajformálás alapvetően a dither zajokat szűri, a Psych 5 esetében ötöd rendű, a Psych 9 esetében pedig kilenced rendű szűréssel, akár 14 dB zajcsökkentéssel. Az auto-blanking funkció bekapcsolásakor 0,7 sec csend után kikapcsolja a dither zajt. A limit noise peak segítségével csökkenthetjük a zajformálás közben létrejövő hamis jelcsúcsokat.
Ezekkel az algoritmusokkal elsősorban az iZotope termékeiben találkozhatunk, de már a Steinberg is licencelte, így például a Wavelab-ban is megtalálható.
Ennyit tehát a digitális audió rejtelmeiről, legalábbis így dióhéjban. Ezzel végére értünk a maszteringet bemutató sorozatnak, és nagyjából a digitális keverésről megtudható alap dolgoknak is. Ez persze nem jelenti azt, hogy ne jelentkezne a Microchips Sound Studio újabb oktató anyagokkal a jövőben. Hamarosan tehát újabb részekkel jelentkezünk, de addig is:
Eredmények keverést és maszterelést kívánok mindenkinek!
Felhasznált irodalom:
https://hu.wikipedia.org/wiki/Dithering
https://en.wikipedia.org/wiki/Dither
http://www.glennsmuseum.com/bombsights/everything.html
https://www.digido.com/portfolio-item/dither/
https://www.waves.com/audio-dithering-what-you-need-to-know
https://productionadvice.co.uk/when-to-dither/
https://hu.wikipedia.org/wiki/A_sz%C3%A1mok_haszn%C3%A1lat%C3%A1nak_gyakoris%C3%A1ga
http://www.weiss.ch/old/pow-r/pow-r.html
https://en.wikipedia.org/wiki/POW-R
https://www.soundonsound.com/forum/viewtopic.php?p=271536
https://apogeedigital.com/pdf/minime_usersguide.pdf
Elméletileg mindig, amikor a bitmélységet csökkentjük. Ez az elméleti válasz, ami persze egy csomó kérdést von maga után. Mert az exportálás kivételével, honnan tudjuk, hogy mikor csökken a bitmélység? Nos, ha 32 bites audiót és 24 bites DA konvertert használunk, akkor itt máris van egy csökkentés. Ez nem csak a maszterre, hanem az analóg inzertekre és effektekre is igaz! Sőt, ha digitális külső eszközöket kötünk a DAW-ra, legtöbb esetben azok is 24 biten kommunikálnak (mert ez az AES/EBU szabvány).
Szintén csökkenhet a bitmélység a DAW buszokon, akár a pluginek között is, ha nem támogatják a DAW által használt formátumot, vagy a DAW nem támogatja a plugin kimeneti formátumát. Ilyen eset lehet például a MacOS-ben használt Core Audio, vagy a 32 bites busszal rendelkező VST szabvány, ahol hiába van lebegőpontos ábrázolás, amikor a mantissza fixpontos 24 bites szám. (A 64 bites lebegőpontos rendszerekre ugyanez igaz, csak ott még lejjebb kerül a zajküszöb, ezáltal a torzítás is sokkal kevésbé hallható.) Vagyis a lebegőpontos adatoknál is létezik a csonkolás és a miatta bekövetkező torzítás, tehát ilyenkor is zaj keletkezik, és sajnos nem a sistergős fajta. Sajnos a hibás plugin után elhelyezett dither nem képes a hibát javítani, mert az már a jelbe van kódolva. Ezért a tökéletes hangminőség érdekében a dithert a pluginbe kell építeni, hogy az abból kilépő jel már megfelelőn legyen a kívánt bitmélységre optimalizálva.
Chris Johnson szerint hiába van egy adott jelben már zaj, például egy analóg felvétel, vagy egy analóg modellezett plugin által hozzáadott zaj, akkor is érdemes és kell is dithert használni, hogy elkerüljük a csonkolás okozta torzításokat (harmonikusok hozzáadását).
Dither használat szabálya
Ha azt szeretnénk, hogy a ditheren átvezetett hang frekvenciamenete ne változzon, akkor a legjobb megoldás a TPDF (esetleg a Paul) jellegű dither használata. Bár ez zajt ad a jelhez, ami sok egymást követő dither, vagy több csatornáról egyszerre érkező összekevert jel esetén összeadódhat, vagyis hallhatóvá válhat, sok esetben jobb megoldás, mint egy szűrt zaj, vagy zajformálást alkalmazó dither használata, ami a zaj energiáját elsősorban a magasabb frekvenciákra tolja el, így ott sokkal hamarabb keletkezik túlvezérlés. Ebből következik, hogy ha valaki mindenképpen szabályt szeretne felállítani a dither használatával kapcsolatban, akkor elmondható, hogy sávokon, inzert kimeneteken inkább TPDF vagy hasonló, jellegtelen dithert érdemes használni. Olyan esetekben, amikor biztosak vagyunk benne, hogy további dither nem kerül alkalmazásra, például a maszter busz kimenetén vagy rendereléskor pedig zajformálással javított dithert érdemes használni, mert a zajformálás csökkenti a hallható zajt és torzítást, jobban mondva a nem hallható frekvenciákra tolja azt.
Dither a maszter buszon
A leginkább ajánlott pont a maszter busz kimenete, hiszen innen kapja a jelet a DA konverter (hangkártya) és a kész fájl is, ami pl. CD-re vagy műsorszórásra (streaming) kerül. A dither mindig a legutolsó eleme legyen a maszter busznak, utána már a jelszintet se csökkentsük, mert ezzel a legtöbb esetben ismét lebegőpontosra alakítjuk vissza az adatokat! Ezért mondják általában, hogy a maszter fader mindig 0 dB-en kell hogy legyen. (Ha halkítás szükséges, akkor azt a dither előtt elhelyezett hangerő pluginnel tegyük meg.)
Érdekes kérdés, hogy csak exportáláskor (rendereléskor) használjunk dithert a maszter buszon, vagy mindig? Nos, ha azt vesszük alapul, hogy a hangkártya nem képes 32 bites adatot megjeleníteni, akkor a kérdés már eleve eldőlt. Ha pedig figyelembe vesszük azt is, hogy a dither képes megváltoztatni a kialakult hangzást, akkor még jobb ötletnek tűnik már eleve úgy elkészíteni a mixet, hogy a dither mindig a maszter buszon van. (Alternatív megoldásként lehet a monitor effektláncban is, bár ebben az esetben exportáláskor valahogy gondoskodni kell a fájlba kerülő ditherről.) Személyes véleményem, hogy mivel a legtöbb hangkártya 24 bites, így a lehető legjobb eredmény elérése érdekében érdemes a monitor effektek utolsó darabjának egy 24 bitre kvantáló dithert használni. Személyesen az NJAD-t ajánlom (az önálló 24 bites verziót). Ha a DAW-ban nincsen külön monitor effektlánc, akkor a maszter busz utolsó inzert pontjára helyezzük el, és a maszter fadert tartsuk mindig 0 dB-en! Ebben az esetben a végső render előtt ne feledjük el kikapcsolni a dithert, ha szükséges!
Mikor nem érdemes dither használni a maszter buszon?
MP3, AAC és egyéb tömörített formátumú kimenet esetén nem érdemes dithert használni, mert ezek önmagukban olyan hibákat visznek bele a jelbe, amit a dither nem képes javítani. Ilyenkor az egyetlen jó megoldás, ha a lehető legmagasabb bitszámban exportálunk. Ha a kész mixet masztering hangmérnöknek küldjük exportált fájl formában (például sztereó), szintén ne használjunk dithert, mert ezt majd Ő fogja hozzáadni (profi módon).
Mennyi dithert használjunk és milyet?
Erre sajnos nincsen egzakt képlet, mindig meg kell hallgatni, hogy mikor melyiket célszerű használni. Ez függ a mix frekvenciaeloszlásától és a hangerőtől, jelszinttől is. Egy halk mixben, például egy vonósnégyesben, ahol sok a halk rész, nem használhatunk nagy jelszintű zajt, mert az hallhatóvá válik. Ugyanakkor ha túl alacsony a zaj szintje, akkor nem jön létre megfelelő zajmoduláció, és sokkal több információ válik a csonkolás áldozatává.
Auto Black
Mivel a halk részeken -különösképpen akkor, amikor nincsen hasznos jel-, a hozzáadott zaj hallhatóvá válik, ezért egyes algoritmusok ilyen esetben kikapcsolják a zajt, ezáltal a csendes részek valóban hangtalanok maradnak. Ezzel azonban egyben "felbontást" veszítünk, hiszen a nagyon alacsony jelszintek esetében nem történik meg a zajmoduláció, és az alsó bitekben tárolt információk elvesznek. Néhány dithertben a funkció ki-be kapcsolható, más pluginekben, csak bizonyos módokban működik (pl. Waves L2 és L3 csak a TYPE 2-es beállításban).
Automatikus Dithering
Egyes szoftverek automatikusan alkalmaznak dithert, amikor bitmélység csökkentést végeznek. Ilyen például a Pro Tools exportja.
Kereskedelmi dithering megoldások
A legtöbb dither és szóhossz csökkentő megoldás kereskedelmi termék, aminek használatáért licencdíjat kell fizetni. Ezt persze sok esetben már akkor megtesszük, amikor megvásároljuk azt a DAW-ot, vagy eszközt, amibe be van építve, ezért nem kell érte külön fizetnünk (hiszen annak gyártója licenceli a terméket). Nézzünk meg pár szóban néhány jelentősebb kereskedelmi megoldást.
POW-R
A POW-R szóhossz csökkentő algoritmusokat négy nagy cég, a Lake Technology (Dolby Labs), a Weiss Engineering, a Millennia Media, és a Z-Systems közösen fejlesztette ki 1997-1998-ban, de más cégek is licencelik saját termékeikbe, például Apple Logic, Avid Pro Tools, Sonic Studio, Cakewalk Sonar, Ableton, Samplitudes, stb. Sokak szerint a világ legjobb algoritmusai.
Tipp:
Bár a Reaper DAW-hoz kapott ingyenes JS-Bit Reduction/Dither plugin is tartalmaz POW-R jellegű zajformálást, ez nem azonos az eredeti POW-R algoritmusokkal. Ugyanakkor mégis létezik ingyenes megoldás, hiszen a Bandlab Cakewalk-ban megtalálható mind a három POW-R algoritmus.
POW-R algoritmusok az ingyenes Bandlab Cakewalk export ablakban |
Mivel a különböző hangok és zenék eltérő dinamikával és frekvenciatartománnyal rendelkeznek, ezért a POW-R fejlesztői úgy gondolták, hogy nem lehetséges egyetlen, mindenre alkalmazható algoritmust készíteni. Ezért három különböző megoldással álltak elő:
POW-R 1: Alacsony dinamikatartományra optimalizált algoritmus, például erősen kompresszált pop zene
POW-R 2: Kevésbé komplex hanganyagokra optimalizált algoritmus, például beszéd
POW-R 3: Komplex, magas dinamikatartományú hanganyagokra optimalizált algoritmus, például szimfonikus zenekar
Apogee-UV22HR
Érdekes módon, ez a megoldás nagyon hasonlít a szalagos magnóknál használt felvételi korrekcióhoz, ahol egy nagyfrekvenciás jellel javítják a felvétel frekvenciaátviteli linearitását (minőségét). Az UV22-ben egy 22 kHz-es, algoritmikusan előállított energiát adnak a hanghoz, amit emberi füllel nem hallhatunk, ezért nem is zavar minket, a funkcióját azonban ellátja. Elvileg nem változtatja meg a frekvenciamenetet, és a digitális csúcsokat is lekerekíti, így a leggyengébb minőségű konverteren is jó hangzást biztosít. A hallható zajt is egy szalagos magnóhoz hasonlítják, és azt ígérik, hogy akár 24 dB-el is a digitális zajküszöb alá mehetünk, aminek köszönhetően a 3d tér is jelentősen javul. Egyetln hátránya, hogy csak egyszer érdemes a jelhez adni, mert többszöri feldolgozás és átkódolás után ronthatja a minőséget.
Tipp:
Bob Olhsson szerint az UV22 sokat segíthet a vékony, steril hangzás feljavításában, míg a Waves IDR algoritmusok inkább a tiszta, meleg hangzásnak kedveznek, pontosabban nem károsítják azt.
Waves IDR
A Waves Increased Digital Resolution, magyarult megnövelt digitális felbontás rendszere még Bob Katz szerint is a legjobbak közé tartozik. Persze valójában itt sincsen csoda, egyszerűen csak ők is kifejlesztették a saját dither és zajformáló megoldásaikat. Ami talán különlegesség lehet, hogy a teljes folyamat 64 bites lebegőpontos számításokkal történik, így a 24 bites fixpontos audiót is rendkívül jó minőségben képes előállítani. A Type 1 egy szélessávú TPDF dither, ami 5 dB-el emeli a háttérzajt, és természetesen teljesen homogén sistergést ad a jelhez, pont mint egy analóg rendszer. A Type 2 ezzel szemben egy keskenysávú dither (valószínűleg egy szűrt TPDF), aminek zaja elvileg hallhatatlan, így a Type 1-hez képest 5 dB-el halkabb. Mivel a dither energiát a magas tartományba tolja el, így az alacsony frekvenciákon némi torzítás léphet fel, de ez sokkal kevésbé hallható, mint egyszerű csonkolás esetén. A Type 2 módot akkor érdemes választani, ha a hallható zaj egyáltalában nem elfogadható, míg a Type 1-et akkor, ha a zaj nem gond, illetve ha a jelet többször is fel szeretnénk még dolgozni, vagyis a Type 1-es dithert akár minden csatornára és buszra is betehetjük. A zajformáláshoz kilencedik rendű, vagyis nagyon meredek vágású szűrést használnak, amiben az energiát 15 kHz fölé tolják át. A legkisebb beállításnál kb 6 dB-t csökkenti a zajt (a dither zajt, vagy a kvantálási torzítást), a legerősebb Ultra értéknél pedig 18 dB-el. Ebben az esetben a nagyfrekvenciás jel 23 dB-el erősödik, így ezt az egyébként szinte észrevehetetlen megoldást csak és kizárólag a masztering folyamat utolsó lépéseként érdemes elvégezni.
iZotope MBit+
Az iZotope is elkészítette saját dithering megoldását, amit MBit+-nak neveztek el. Ebben három különböző dither algoritmust és zajformálást találunk. A Type 1-es egy egyszerű RPDF dither, a Type 2 egy TPDF dither, az MBit+ esetében egy általánosan használható dithert kapunk. A zajformálás alapvetően a dither zajokat szűri, a Psych 5 esetében ötöd rendű, a Psych 9 esetében pedig kilenced rendű szűréssel, akár 14 dB zajcsökkentéssel. Az auto-blanking funkció bekapcsolásakor 0,7 sec csend után kikapcsolja a dither zajt. A limit noise peak segítségével csökkenthetjük a zajformálás közben létrejövő hamis jelcsúcsokat.
Ezekkel az algoritmusokkal elsősorban az iZotope termékeiben találkozhatunk, de már a Steinberg is licencelte, így például a Wavelab-ban is megtalálható.
Ennyit tehát a digitális audió rejtelmeiről, legalábbis így dióhéjban. Ezzel végére értünk a maszteringet bemutató sorozatnak, és nagyjából a digitális keverésről megtudható alap dolgoknak is. Ez persze nem jelenti azt, hogy ne jelentkezne a Microchips Sound Studio újabb oktató anyagokkal a jövőben. Hamarosan tehát újabb részekkel jelentkezünk, de addig is:
Eredmények keverést és maszterelést kívánok mindenkinek!
Felhasznált irodalom:
https://hu.wikipedia.org/wiki/Dithering
https://en.wikipedia.org/wiki/Dither
http://www.glennsmuseum.com/bombsights/everything.html
https://www.digido.com/portfolio-item/dither/
https://www.waves.com/audio-dithering-what-you-need-to-know
https://productionadvice.co.uk/when-to-dither/
https://hu.wikipedia.org/wiki/A_sz%C3%A1mok_haszn%C3%A1lat%C3%A1nak_gyakoris%C3%A1ga
http://www.weiss.ch/old/pow-r/pow-r.html
https://en.wikipedia.org/wiki/POW-R
https://www.soundonsound.com/forum/viewtopic.php?p=271536
https://apogeedigital.com/pdf/minime_usersguide.pdf
Szia Viktor!
VálaszTörlésGratulálok az írásaidhoz, nem semmi anyag! És persze köszönjük mindannyian ezt a profi munkát amit végzel. 3 éve végeztem hangtechnikusként, de ezeket olvasva kiegészíthető a tudástár hangmérnöki szintre. Persze kell alap ahhoz, hogy könnyebben, egyszeri elolvasásra megértsük. Nagyon állat!
Van egy dolog amit nagyon szeretnék jobban megérteni, és valószínüleg mások is. Ez pedig a külső órajel generátorok használata. Mikor kell használni, kell-e egyáltalán, mennyire ronthatja el a konvertálás minőségét a hibák kijavitásával szemben (jitter, drifting). Külföldi honlapokon találtam írásokat, de ahhoz a színvonalas és érthető írásokhoz, amit itt produkálsz, nem érnek fel. Csak a tesztelésekkel és összehasonlításokkal foglalkoznak, nem pedig megértetni, hogy mikor kell ezeket az eszközök a rendszerbe iktatni.
Nagyon jó lenne olvasni erről itt a Te megvilágításodban.
Köszönöm
Laca
Kedves Laca!
TörlésSzerintem minden kérdésedre megtalálod a választ a https://microchips-sound-studio.blogspot.com/2019/08/a-digitalis-audio-rejtelmei-2-hertzek.html részben. Bár az igaz, hogy nem minden apró részletre térek ki, de ez nem is célja ennek a sorozatnak.
Üdv:
Viktor
Laca !
VálaszTörlésTöbbsávos több hangkártyás projekteknél a rendszer szinkronizálásához elengedhetetlen a clock jel .. Vagyis a szinkron jel.. de ugyan ez érvényes projektek esetén ahol több sávot kell időszinkronba hozni.. külső órajel generátort akkor érdemes használni ahol egyszerre több eszközt kel szinkronban működtetni.. Ekkor az a legjobb ha az Órajel generátor valóban egy külön egység . Masterként funkcionálva mint pl az https://www.soundonsound.com/reviews/apogee-big-ben..pl show technikában alkalmazzák ahol az intelligens robotlámpákat szinkronba hozva nincs show közben tévedés..