… A nie mówiłem?

Jeden z poprzednich artykułów (a dokładniej mówiąc: Sprostowanie) podejmował dość dyskusyjną kwestię bezpośredniego przełożenia wiedzy teoretycznej i praktycznych umiejętności na ograniczenia w skuteczności pracy z dźwiękiem.

Można, co prawda, uznać tezy w nim zawarte za przesadzone, wydumane, czy oderwane od rzeczywistości. W końcu, czy dobry kierowca musi znać dokładnie sposób działania swojego samochodu? Przecież wystarczy, że posiada niezbędną wiedzę praktyczną.

Otóż tak się na ogół składa, iż wiedza praktyczna wypływa z teoretycznej.
Umiejętności kierowcy (zwłaszcza na poziomie zawodowym) wypływają z jego wiedzy n/t konstrukcji pojazdu, którym jeździ, a jego zakres odpowiedzialności i zadań nie ogranicza się do okresu przejazdu z punktu A do punktu B.
Do zadań kierowcy należy również umiejętność komunikacji z zespołami odpowiedzialnymi za techniczne utrzymanie pojazdu, jego modernizację etc.

Przykładem, którym posłużę się dla jednoznacznego pokazania, z czym rzeczywiście mamy do czynienia, jest ten o to artykuł:
http://www.audiorecording.me/dithering-and-sample-rate-conversion-before-mp3-encoding-complete-study.html

Porusza on ciekawy, czysto techniczny aspekt pracy, który jednak ma ogromne znaczenie dla jakości końcowego rezultatu naszych działań.
I wydawać by się mogło, że tyle wystarcza.

A jednak… problemem jest tu brak informacji co do charakteru poszczególnych elementów naszej układanki, które pozwoliłyby na samodzielną analizę problemu, zaprezentowanych rezultatów testów, oraz wysnutych wniosków.

Zanim przejdę do uzupełniania braków w cudzej pracy, postaram się zebrać po raz kolejny istotne informacje, które pozwolą na świadome przedarcie się przez zawartą w przytoczonym tekście analizę rzucąjąc przy okazji nieco światła na samą naturę medium, z którym chcąc nie chcąc mamy do czynienia.

Digital domain. Tym razem na serio.

Konwersja sygnału analogowego na cyfrowy polega na pomiarze amplitudy fali dokonywanym z pewną ustaloną częstotliwością.
W ten sposób sygnał o ciągłym charakterze (płynne zmiany ciśnienia akustycznego, lub napięcia prądu elektrycznego) zostają zapisane w formie wartości liczbowych (w systemie binarnym – powiedzmy). Zależnie od typu konwersji wartości te oznaczają bezpośrednią wartość chwilowej amplitudy, lub np. jej zmianę względem poprzedniej próbki.

Najpopularniejszym spośród systemów cyfrowego kodowania sygnału w przemyśle muzycznym jest linear PCM, oparty na każdorazowym zapisie chwilowej wartości amplitudy w formie pojedynczego słowa bitowego (liczby binarnej zapisanej w ciągu znaków o określonej ich ilości).
Wierność zapisu zależy więc od dwóch parametrów:

  • częstotliwości próbkowania
  • długości słowa (bitowość)

Pierwszy z tych parametrów definiuje szerokość pasma częstotliwościowego, w jakim sygnał pozostaje teoretycznie wolny od przekłamań wynikających z przetworzenia z postaci ciągłej do dyskretnej. Supremum owego pasma pozostaje zawsze połowa częstotliwości próbkowania. Wartości tego parametru podawane są w Hz (lub kHz). Poniżej najczęściej (w muzyce) spotykane częstotliwości próbkowania; w nawiasach podaję przybliźone górne granice skutecznego pasma przenoszenia.

  • 11025 (5,5kHz)
  • 22050 (11 kHz)
  • 24000 (12 kHz)
  • 44100 (22 kHz)
  • 48000 (24 kHz)
  • 88200 (44 kHz, 22 kHz*)
  • 96000 (48 kHz, 24 kHz*)
  • 192000 (96 kHz, 48 kHz*)

* – w praktyce granica skutecznego pasma przenoszenia zależy od konstrukcji filtrów wykorzystywanych w torze; o tym jednak kiedy później i raczej w formie konfabulacji).

Drugi parametr natomiast wyznacza granice zakresu dynamicznego przetwarzanego sygnału, oraz rozmiar przybliżenia z jakim zmierzony będzie jego poziom. Niedokładności te wynikają z samej natury sposobu zapisu: mając do dyspozycji skończoną ilość ustalonych wartości przetwornik musi wprowadzać zaokrąglenia. Zaokrąglenia te noszą nazwę błędu, bądź szumu kwantyzacji i osiągają maksymalnie poziom mniejszy, niż stosunek głośności między pierwszym a przedostatnim ostatnim bitem słowa.

Poniżej (w przybliżeniu) najczęściej spotykane rozdzielczości bitowe; w nawiasach podaję teoretyczną, maksymalną dynamikę sygnału (poziom szumu kwantyzacji jest od niej wyższy o ~6 dBFS)

  • 8 (48 dB)
  • 16 (96 dB)
  • 24 (144 dB)

Mamy więc sygnał o pewnym ustalonym pasmie częstotliwościowym i dynamicznym, oraz wynikających ze zmiany jakościowej (analog > digital) przekłamaniach.

Aliasing

To pierwszy typ przekłamań występujących przy konwersji sygnału analogowego do cyfrowego. Powstają one pod wpływem interferencji między częstotliwością podziału sygnału wejściowego, a elementami sygnału wejściowego o częstotliwościach wyższych od połowy częstotliwości podziału.

Ujmę sprawę nieco bardziej obrazowo.

Zbliża się kolejne lato, a z nim sezon grillowy. Czeka balkon, keczup “Krzepki Radek”, musztarda “Cymes”, najtańsze lokalne piwo oraz kiełbasa, na której się skupimy.
Jeśli jesteś, drogi Czytelniku zapalonym fanem grillowania, to jak co roku, staniesz wobec ciężkiego wyboru: kiełbasa dobra, albo tania.

Dobra kiełbasa wytwarzana jest z materiału o w miarę jednolitej konsystencji, zawierającego tłuszcz, mięso i masę innych składników, które z uwagi na walory smakowe wędliny zwykliśmy beztrosko pomijać. Wystarczy, że każde pęto można rozkroić w dowolnym miejscu jednym szybkim cięciem noża. Krawędzie pozostają równe, kolor wnętrza i jego faktura – zachęcające do spożycia.

Jednak tradycja słowiańskiego grillowania zmusza do nabycia kiełbasy najtańszej, a zatem ex definitione – wędliny podłego gatunku. I tu trafiamy na problem. Każde cięcie kiełbasy na porcje zostaje zazwyczaj poprzedzone krótką modlitwą o ominięcie kolejnej chrząstki, albo innego paskudztwa, którego widok skutecznie zmotywuje nas do zmiany menu na przypalony chleb, oraz banany z czekoladą.

Ta przeklęta chrząstka jest właśnie elementem, który skutecznie zapobiega czerpaniu radości z jedzenia grillowanych wędlin.

Podobnie ma się rzecz przy konwersji sygnału analogowego do cyfrowego.

Lepsza kiełbasa.
Duża różnica między częstotliwościami: sygnału wejściowego (sinusoida) i próbkowania (to te takie schodki) gwarantuje czystość dźwięku.

dobra kielbasa

Gorsza kiełbasa
Różnica między częstotliwościami sygnału wejściowego i taktującego na tyle mała, że widać interferencje między sygnałem wejściowym i próbkującym.

zla kielbasa

Chrząstka.
Częstotliwość sygnału wejściowego większa od sygnału próbkującego.
Widoczna interferencja powoduje powstawanie słyszalnego dźwięku.
To jest właśnie tzw. alias.

bardzo zla kielbasa

W tym miejscu pojawia się pewna drobna kwestia. Na potrzeby trzeciego skrina sygnał został podniesiony o 30 dB. Aby zaś zrównać go z poziomem dwóch wcześniejszych skrinów, musiałbym podbić głośność co najmniej o kolejne 30 dB.

Mamy więc do czynienia ze sublokatorem o tyle uciążliwym, co przez większość czasu niezauważalnym. Jego obecność natomiast spowodowana jest ograniczeniami technicznymi filtrów odpowiedzialnych za usuwanie pasma, w którym alias staje się słyszalny (antialiasing).

Błąd kwantyzacji.

Tutaj sprawy mają się nieco gorzej, bowiem błąd kwantyzacji dotyczy bezpośrednio pasma słyszalnego, chociaż znowu – głośność powstających przekłamań nie przekracza minimalnego progu rozdzielczości dynamicznej.
Że co?
To proste: sygnał wejściowy jest ciachany na plasterki o ustalonej grubości (częstotliwość próbkowania), a potem mierzymy wysokość każdego plasterka. Przy czym linijka, której używamy do pomiarów ma dość ograniczoną skalę, a my nie nie bardzo możemy dopisać “18 i nieco mniej niż pół kreski”. Trzeba zatem jakoś zaokrąglić. Te zaokrąglenia powodują zmianę kształtu fali, a co za tym idzie – pojawienie się dodatkowych składowych przy jej kolejnej analizie.

Głośność tych dodatków nie jest jednak większa od dokładności linijki, określonej rozdzielczością bitową sygnału – zaokrąglamy wszak ostatnią cyfrę liczby, a im więcej cyferek stanowiących jej zapis, tym mniejsza wartość ostatniej cyfry w stosunku do wartości maksymalnej możliwej do zapisania liczby, np.
1 z 999 to to ponad promil, ale 1 z 9999 to już tylko 0,11 – weekendowi kierowcy rozumieją różnicę; drogówka – niekoniecznie.

To teoretyczne podejście będące potencjalnym wybawieniem dla użytkownika, przez lata stanowiło przyczynę nocnych koszmarów inżynierów konstruujących nasze zabawki. Jitter bowiem może powstać również w wyniku złej synchronizacji zegarów taktujących poszczególne urządzenia cyfrowe spięte w jednym torze.

Selfie aliasu znalazło się powyżej, czas na słitfocię szumu kwantyzacji.

jitter i quant noiz

Jak? Sygnałem wejściowym jest sinusoida 50 Hz przepuszczona przez fitr linearphase HP 183 Hz 48 dB/okt.; sygnał zostaje potem wzgłośniony o 70 dB i ponownie przefiltrowany przez linearphase HP 48 dB/okt., tym razem na 150 Hz.
Na koniec jeszcze jeden gain (+35 dB) i voilà.

Co ciekawe: widać dość wyraźnie charakter powstających przekłamań: są to głównie kolejne harmoniczne dźwięku źródłowego. Co więcej w pasmach: 400 i 800 pojawiają widoczne dziury, natomiast amplitudy dolin i szczytów zbiegają się w okolicach 4 kHz… Rzecz z pewnością warta dalszego badania…

Tymczasem jednak: tak wygląda mechanizm powstawania szumu kwantyzacji.

Szum kwantyzacji. (Wikipedia)

Jest jeszcze trzeci jeździec apokalipsy – jitter.

Nieusuwalny, choć wraz ze wzrostem precyzji urządzeń używanych w studiach, coraz mniej srogi.

Jitter spowodowany jest niedokładnością zegarów taktujących konwertery AD/DA. Powinniśmy się wszak spodziewać, iż wraz ze wzrostem częstotliwości taktowania drobne – na pozór – rozbieżności stają się relatywnie duże powodując tym samym wzrost przekłamań w przetwarzanym sygnale. Dla pokazania skali problemu zacytuję Boba Katza:

Aby uzyskać dźwięk o rozdzielczości 24 bit o 44,1 kHz zegar musi podawać sygnał taktujący co najmniej z dokładnością do 25 ps (picosekunda, jedna milionowa mikrosekundy, czyli 10-12 s).

Sprawa ulega dodatkowej komplikacji, gdy przetwarzany sygnał wędrując między domeną analogowa, a cyfrową podlega konwersji w takt niezsynchronizowanych zegarów. Co ciekawe, sygnał podlega jitterowi jedynie podczas konwersji – problem zatem dotyczy nie tyle informacji zapisanej cyfrowo, co jej przetworzenia.

To jeden z powodów dla których ciężko znaleźć graficzne przedstawienie jittera.
Z tego też powodu wykorzystamy fotografię zastępczą, która równie skutecznie pokaże istotę problemu.

Jeśli, drogi Czytelniku, pragniesz osobiście wsłuchać się w słodki świegot tych ptasząt, wystarczy, że zmusisz do współpracy dwie spięte w cyfrowym torze audio maszyny ustawione na różne częstotliwości próbkowania.
Efekt niezapomniany.
Mamy już więc podstawową wiedzę na temat najczęściej wspominanych aspektów niedoskonałości dźwięku cyfrowego. Jak im przeciwdziałać?

Jeśli porównamy realną głośność szumu kwantyzacji do zakresu dynamicznego sygnału, trafimy na granicę, przy której szum ten przestaje być problemem.
A to dlatego, iż poziom głośności na którym pojawiają się przekłamania jest tak niski,
iż stosunek sygnału do szumu powoduje wypchnięcie tego ostatniego poza próg słyszalności.
Zgodnie z teorią potwierdzoną badaniami, zakres dynamiczny ludzkiego słuchu mieści się w circa 20~22 bitach, czyli w granicach ~130 dB. Na metodologię i rozstrzał przeliczeń spuścimy na razie zasłonę milczenia przyjmując wyniki za dobrą monetę. Bowiem dzięki tej informacji możemy jasno dojść do wniosku iż dźwięk cyfrowy w jakości 24 bitów ma wystarczająco dużą dynamikę, by odseparować interesujące nas pasmo dynamiczne od szumu kwantyzacji, który znika poniżej wspomnianego już progu słyszalności.

Analogicznie – możemy się w zasadzie pozbyć aliasu poprzez odpowiednie zwiększenie częstotliwości próbkowania, przy zachowaniu częstotliwości odcięcia filtra usuwającego pasmo skażone przekłamaniami. W praktyce wygląda to zapewne tak: zakres częstotliwościowy ludzkiego słuchu nie przekracza na ogół 22 kHz, a właściwy dobór filtrów może skutecznie odciąć pasmo na przestrzeni jednej oktawy. To z kolei wyznacza nam nową częstotliwość Nyquista (o jedną oktawę wyżej, czyli ~44 kHz), która z ogromnym zapasem przekracza możliwości naszych uszu. Stąd już jeden prosty krok do ustalenia częstotliwości próbkowania: conajmniej 88 kHz.

Jitter natomiast, jak przystało na prawdziwych informatyków, pomijamy. To problem hardware’owców.

W ten sposób docieramy do parametrów dźwięku doskonałego, jak na nasze marne standardy? Jeszcze nie.

Arytmetyka zmiennoprzecinkowa (floating point).

Zapis stałoprzecinkowy (fixed point), czyli znany nam z życia codziennego sposób kodowania liczb (panie w przedszkolu wiedzą, iż najlepsze przykłady to cukierki, owoce i pieniądze, zatem: np. 16,25 PLN; 3/4 worka ziemniaków, lub 1,5 kg krówek ciągutek) ma w przypadku kodowania sygnałów jedną istotną wadę, którą jest niewspółmierność rozdzielczości dynamicznej dźwięku w zależności od poziomu.

Mówiąc prościej: każdy bit w zapisie stałoprzecinkowym odpowiada ~6 dB (dwukrotnej głośności). Jeśli zatem mamy dwa głośne dość dźwięki i różnica między nimi jest bardzo niewielka (np. 1,25 dB), to wraz z ich ściszaniem różnica w głośności zacznie nam się sypać. Dlaczego?, bo im cichsze będą owe dźwięki, tym mniejsza będzie realna ich rozdzielczość bitowa, aż do granicy, gdzie skok dynamiczny w zapisie wyniesie 6 dB, a wtedy staniemy przed problemem: oba dźwięki są tej samej głośności, albo jeden z znika. To jest kolejny problem połączony ściśle z przyczynami powstawania szumu kwantyzacji.

Aby temu zapobiec, albo przynajmniej znacząco ograniczyć skalę problemu, na potrzeby wewnętrznych operacji na zdigitalizowanym sygnale zaczęto wykorzystywać zapis zmiennoprzecinkowy i opartą na nim arytmetykę.

Sprawa jest dość prosta i chociaż w poniższym przykładzie wygląda bardziej na marnotrawstwo miejsca, to jednak – jak wkrótce zobaczymy – wcale nim nie jest.

Weźmy sobie liczbę. Niech to będzie aktualny rok pański: 2015.
W zapisie zmiennoprzecinkowym uwzględnimy trzy jej aspekty:

  • znak,
  • mantysę
  • i podstawę z wykładnikiem

W największym uproszczeniu: znak określa, czy liczba jest dodatnia, czy ujemna. Mantysa podaje odpowiednik wartości naszej liczby uproszczony do ułamka, podstawa z wykładnikiem natomiast – realny rząd wielkości. A zatem:

2015 = 2,015 * 1000 = (+1) * 2,015 * 103

Ubierając to w słowa: 2015 to ni mniej, ni więcej, tylko dwa i piętnaście tysięcznych tysiąca powyżej zera… brzmi dziwnie… może lepiej będzie spróbować jednak ze słodyczami.

Trzy i pół tony śliwek w czekoladzie, to 3500 kg słodyczy, co daje w sumie:
3,5 * 103 kg, czyli słownie: trzy i pół tony śliwek w czekoladzie… hmmm…

Dla nas taka forma zapisu jest oczywiście nieintuicyjna, co innego jednak w przypadku urządzeń elektronicznych, które wystarczy poinstruować co, gdzie i jak, następnie zasypać stertą typowych zadań arytmetycznych i czekać na wyniki.

Jako, że mamy do czynienia z zapisem binarnym, z informacji potrzebnych do notacji liczby zmiennoprzecinkowej znika baza – jest nią liczba 2. Znak kodowany jest zawsze w pierwszym bicie, pozostała część słowa – do podziału między mantysę i wykładnik. Zależnie od przyjętej długości słowa podział ten przebiega, jak następuje:

  • 16 bit (half-precision): 5 bitów na wykładnik, 10 na mantysę;
  • 32 bit (single-precision): 8 bitów na wykładnik, 23 na mantysę;
  • 64 bit (double-precision): 11 bitów na wykładnik, 52 na mantysę:
  • 128 bit (quadruple-precision): 15 bitów na wykładnik, 122 na mantysę.

Warto pamiętać, iż bit znaku wpływa na realną rozdzielczość bitową mantysy.

Podział ten został ustalony standardem IEEE 754 i jest powszechnie stosowany w informatyce, w tym również (zapewne) w oprogramowaniu do produkcji i odtwarzania dźwięku.

Może się wydawać, iż podaję te informacje nieco na wyrost, ale po wzięciu pod uwagę, iż jest to podstawa działania urządzeń, z których korzystamy w produkcji na co dzień, warto mieć świadomość, na czym rzecz z grubsza polega. Zwłaszcza, że taka wiedza ucina wszelkie (również wspomniane w tekście Sprostowanie) dyskusje w stylu “o wyższości świąt Bożego Narodzenia, nad świętami Wielkiej Nocy”.

Aby wskazać kilka istotnych wniosków potwierdzających ten fakt, pofedruję jeszcze trochę.

Przyjrzyjmy się temu systemowi w rozdzielczości single-precision stanowiącej obecnie minimum technologiczne dla oprogramowania.

W zapisie fixed-point sytuacja jest dość prosta: słowo składa się z 32 bitów, z których każdy kolejny (licząc w lewo, czyli od najmłodszego do najstarszego bitu) stanowi dwukrotność poprzedniego, co daje 32 * 6 dB, czyli ~192 dB dynamiki.

Zapis floating-point (zgodnie ze standardem IEEE 754) teoretycznie oferuje dynamikę ~144 dB, zapisaną w 24 bitach mantysy i znaku. Sprawy jednak nabierają kolorów, gdy zwrócimy uwagę, iż pozostałe 8 bitów, to wykładnik wskazujący prawdziwy rząd wielkości zapisanej liczby. Wykładnik zaś może przyjmować wartości od 0 do 255, co oznacza, iż maksymalna wartość zapisanej w ten sposób liczby to około +/- 2255.

W przypadku wykładnika każdorazowa zmiana o 1 oznacza skok o ~6 dB…
…tak, drogi Czytelniku, skuteczny zakres dynamiki sygnału kodowanego w 32 bit floating-point, to niechybnie (6 dB * 255) + ~144 dB, czyli ponad 1600 dB.

Z taką dokładnością dźwięk jest przeliczany przez konwertery mp3 i powiem szczerze – jest to słabiutki wynik, bowiem standard dla profesjonalnego oprogramowania (np. DAW), to 64 bit floating-point (niecałe 320 dB dla mantysy i ok.12300 dB dla wykładnika).

Sporo przestrzeni na headroom, nieprawdaż?

To wszystko jednak dzieje się pod maską naszych lśniących maszyn, a dokładność i dbałość z jaką zliczane są wszystkie kolejne działania na dźwięku kończą się wraz z wysyłką sygnału na konwertery karty muzycznej.
Tuż przed opuszczeniem programu (DAW, odtwarzacz etc.) następuje downsampling do realnych 16, 24 czy też 32 bitów fixed-point z bardzo eleganckim zaokrągleniem na najmłodszym bicie i sygnał ląduje w trzewiach karty muzycznej, gdzie z cyfrowego zostaje przetworzony na analogowy, czyli zwykły prąd zmienny o konkretnych parametrach. Tu następuje realny spadek możliwości domeny cyfrowej, którą ogranicza precyzja konwerterów DA (tak, tu pojawia się jitter).

Cofnijmy się jednak odrobinę i zatrzymajmy przy downsamplingu.
Zależnie od wybranych przez nas opcji sygnał zostaje przeliczony na system stałoprzecinkowy o konkretnej długości słowa i częstotliwości próbkowania.

W oparciu o wybraną rozdzielczość i dalsze działania, jakie planujemy przedsięwziąć z naszym renderem (bo na tym aspekcie się skupimy, z premedytacją ignorując inne) należy przygotować się na ewentualne dodatkowe kroki przeciwdziałające ubocznym efektom downsamplingu.
Oto dlaczego.

Jako się rzekło, rozwiązaniem problemu degradacji dźwięku spowodowanej aliasingiem i błędami kwantyzacji (jitter, jako wynik niedoskonałości konwerterów AD/DA – pomijamy) jest zwiększenie rozdzielczości dźwięku, jednak teraz trzeba podjąć decyzję: jakość, czy rozmiar? Jeśli priorytetem pozostaje jakość, to minimalne parametry już znamy: 24 bit, >88,2 kHz (DVD Audio, SACD), jeśli rozmiar, to wkraczamy na teren, gdzie zarówno aliasing, jak i błędy kwantyzacji zaczną dawać o sobie znać. Już rozdzielczość 16 bit i 44,1 kHz (CD Audio) skazuje nas na błędy kwantyzacji na poziomie > -96 dB. Szum będzie zatem słyszalny i nie da się go usunąć.

Mądre głowy jednak znalazły na to sposób, którym jest dithering, specjalnie opracowany typ szumów dogrywanych w dolnych zakresach dynamicznych sygnału, który mieszając się z trzaskami błędów kwantyzacji skutecznie je ukrywa.

Jest więc szum, ale primo – bardziej naturalny, secundo – ekstremalnie cichy, tertio – pojawiający się w zakresach, które dla ludzkiego słuchu są mało istotne i nie wpływają w żaden negatywny sposób na walory muzyczne dźwięku, a wręcz przeciwnie – zwiększają ponoć psychoakustyczne wrażenie dynamiki sygnału.

Dla zobrazowania istoty pomysłu leżącego u podstaw ditheringu przywołam dość prosty przykład.
Kraj nasz w glorii chwały pięknieje i nowocześnieje. Powstają tysiące nowych miejsc pracy, rośnie eksport, rozkwitają przedsiębiorstwa, spadają koszty funkcjonowania administracji, ale przede wszystkim w piorunującym tempie rozrasta się infrastruktura drogowa.
Każda kolejna autostrada, droga krajowa, czy inne połączenie tego typu wymaga budowy, oraz regularnych remontów. W tym przypadku na ogół zrywana jest wierzchnia warstwa asfaltu, przebudowywane systemy odprowadzania wody z ich nieodmienną częścią – studzienkami kanalizacyjnymi.

Wyobraź sobie, drogi Czytelniku, tę pracę, która wre. Spójrz oczyma wyobraźni na odkryte klepisko, ponad które wystają samotne wieże studzienek okryte przezornie europaletami. Wystają jeszcze ponad poziom gruntu, ale to chwilowe, bowiem wraz przybyciem asfalciarek skończy się ich swawolny dyktat. Wierzchnia warstwa drogi będąc (oby!) grubo zasmarowaną porcją wysokogatunkowego asfaltu zrówna poziom jezdni z dumnie dotychczas strzelającymi ku niebu kominami studzienek.

Tyle analogii. Studzienkami są wizgi błędu kwantyzacji, a opływającym je asfaltem – dither.

Aby przybliżyć nieco sposób generowania ditheringu, skorzystam z opisu podanego przez pana Christophera Hicksa (angielski oryginał na digido.com zatytułowano Dither Noise Probability Density Explained).

Weź zwykłą sześcienną kostkę do gry. Rzuć. Rezultatem jest cyfra od jednego do sześciu, z równym prawdopodobieństwem uzyskania każdego z wyników. Rzuć ponownie, a znowu zyskasz wynik z tego samego przedziału i z takim samym prawdopodobieństwem trafienia. Oba te rzuty, i każdy następny dają taką samą szanse trafienia dowolnej spośród sześciu cyfr, a przy tym wyniki te są niezależne ani od poprzednich, ani od następnych rzutów. Tak działa biały dither prostokątny (white rectangular dither).
Prostokątny, bowiem dla wszystkich możliwych wyników wypada takie samo prawdopodobieństwo (rozkład prawdopodobieństwa względem możliwych wyników na wykresie przyjmie postać prostokąta). Biały, bo żaden z wyników nie jest uzależniony od pozostałych – decyduje czysty przypadek.

Teraz weź dwie kości. Rzuć, a wyniki zsumuj. Wynikiem będzie liczba z przedziału <2, 12> i większym prawdopodobieństwem trafienia liczb z jego środka (5, 6, 7, 8 – te wyniki wychodzą przy większej ilości układów kostek, np 6, to 1+5, 2+4, 3+3, podczas gdy np. 3 wypadnie tylko dla układu 2+1). Rzuć je ponownie i jeszcze raz. Za każdym razem wynik będzie niezależny od poprzednich i następnych, ale prawdopodobieństwo wypadnięcia środkowych wartości z przedziału będzie większe. To jest biały dither trójkątny.
Trójkątny właśnie z powodu tych nierówności w szansach (wykres rozkładu prawdopodobieństwa wzgl. możliwych wartości przyjmuje kształt trójkąta). Biały – już wiesz, czemu.

Teraz weź dwie kości w różnych kolorach, np. niebieską i czerwoną. Rzuć obie i zapisz sumę wyników. Potem podnieś czerwoną (niech niebieska leży) i rzuć, po czym zsumuj wyniki z obu kostek (rzuconej czerwonej z leżącą niebieską). Podnieś tym razem niebieską zostawiając czerwoną i po rzucie zsumuj wyniki, tak jak poprzednio. Powtarzaj w ten sposób rzuty do znudzenia.
Uzyskane wyniki będą mieścić się w przedziale <2, 12> z większym prawdopodobieństwem trafienia środkowych wartości z przedziału, ale każdy wynik jest powiązany zarówno z poprzednim, jak i następnym.
Wykres rozkładu prawdopodobieństwa będzie nieco gładszy, od poprzedniego (biały dither trójkątny). Ten typ dithera nazywamy trójkątnym dolnoprzepustowym (triangular lowpass dither) i nie jest raczej używany w zastosowaniach audio.

Weź ponownie kostki: czerwoną (C) i niebieską (B). Rzuć i zapisz różnicę (B-C). Podnieś czerwoną i po rzucie zapisz różnicę (C-B). Podniósłszy niebieską zapisz różnicę (B-C)…
Również w tym przypadku rozkład prawdopodobieństwa przyjmuje kształt trójkąta, lecz tym razem największe prawdopodobieństwo trafienia wypada wokół zera, poza tym pojawiają się wartości ujemne, a kolejne wyniki mają tendencję do zmian znaku z dodatniego na ujemny i z powrotem. Tak powstaje trójkątny dither górnoprzepustowy (triangular highpass dither).

W ten właśnie sposób generowany jest dithering, jedyne różnice to ilość ścianek w kostkach i większy nacisk na skalowanie, oraz dc bias*.
Ogólnie mówiąc, szum prostokątny powstaje z mniejszego zakresu wartości przy takiej samej szansie pojawienia się każdej z nich, podczas, gdy w szumie trójkątnym, chociaż pojawiają się wartości z szerszego zakresu, to jednak im bliżej jego środka tym statystycznie częściej.
Tę właściwość nazywamy dystrybuantą, lub funkcją gęstości prawdopodobieństwa dla ciągu. Kolor, jakim określany jest szum, odnosi się natomiast do zakresu i zależny jest od powiązania między poszczególnymi samplami ditheru – bez związku z dystrybuantą.

* – dc bias, to przesunięcie przebiegu falowego w osi pionowej (natężenie, amplituda).

* * *

Tyle, gdy idzie o model teoretyczny. W praktyce natomiast dither to na ogół szum
w pasmie powyżej 10 kHz na poziomie dynamiki odpowiadającym ostatniemu bitowi słowa binarnego.
W formacie CD Audio jego głośność wynosi ok. -91 dBFS.

I ponownie przerywamy naszą opowieść w miejscu najzdatniejszym na gustownego cliffhangera.

[]txt v.02

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s