Powrót

133 32-bitowy format raz jeszcze

Gadanie Gadesa. Rozmaitości. Witajcie w kolejnym odcinku podcastu Gadanie Gadesa. Jeszcze w zeszłym roku w odcinku 62 omawiałem format 32-bitowy i korzyści, które wiążą się z jego użyciem. Mimo to ciągle powracają tutaj i ówdzie, przez ówdzia rozumiem gdzieś na grupach, na forach, czy na moim messengerze, pytania, czy naprawdę 32-bity to jest taka rewolucja, no i co one w ogóle dają, czy potrzebujemy takich 32-bitów przy nagrywaniu.

Chciałbym dzisiaj spróbować wyjaśnić, po co stosuje się ten 32-bitowy format i dlaczego właściwie bywa on taki praktyczny. Na wstępie chciałbym wyjaśnić kilka rzeczy, bo będę omawiał format 32-bitowy, ale zmiennoprzecinkowy.

To jest istotna informacja, jeszcze do niej wrócę, jaka jest różnica między zmiennoprzecinkowym a stałoprzecinkowym formatem, bo ma to daleko idące konsekwencje. Po drugie format ten nie został wprowadzony po to, by uzyskiwać jakąś mityczną, wyższą jakość dźwięku, takie voodoo, i by dzięki niemu nagrania nabrały jakiejś niewyobrażalnej głębi, ciepła, wyrazistości, czy jeszcze jakie tam epitety sobie wymyślimy.

Nie, tutaj powód był raczej bardzo, bardzo użytkowy. Warto może przypomnieć jeszcze, że dźwięk zapisywany cyfrowo ma dwa główne parametry, które sobie ustawiamy przed zapisem. Głębię bitową, o której właśnie mówię w tym odcinku oraz częstotliwość próbkowania.

W uproszczeniu można to sobie wyobrazić patrząc na waveforma, na przykład w programie do obróbki dźwięku, że na osi poziomej mamy czas, a na osi pionowej, powiedzmy, że głośność. Częstotliwość próbkowania odpowiada za to, jak dużo próbek znajdziemy w jednej jednostce czasu, na przykład w sekundzie.

Próbka to pojedynczy odczyt napięcia prądu sprzed wzmacniacza mikrofonowego, tak sobie myślę, możemy to w uproszczeniu powiedzieć. Ten odczyt jest zamieniany na liczbę. Zazwyczaj stosuje się próbkowanie 44100 Hz lub 48000 Hz, co daje odpowiednio 44100 lub 48000 próbek w ciągu jednej sekundy.

Nie wnikając w fizykę i w matematykę, wartości te wynikają z twierdzenia Nyquista-Shanona, który mówi, że aby wiernie odtworzyć jakiś sygnał analogowy o częstotliwości nie większej od jakiegoś zadanego maksimum, trzeba próbkować ten sygnał z częstotliwością przynajmniej dwukrotnie większą niż właśnie to maksimum.

A że ludzie słyszą teoretycznie przynajmniej do około 20000 Hz, zatem zgodnie z tym twierdzeniem próbkować należy z częstotliwością przynajmniej 40000 Hz, stąd te wartości 4448. Wiemy już zatem z czego wynika zagęszczenie próbek na osi czasu, ale co z wartościami, które te próbki mogą przyjmować, czyli z tym napięciem prądu sprzed wzmacniacza, które odpowiada w uproszczeniu głośności dźwięku.

To napięcie, żeby mogło być przetwarzane w postaci cyfrowej jest zamieniane, czyli konwertowane, przeliczane, kwantyzowane, jakby tego nie nazwać, do wartości z pewnego przedziału, czyli musi zostać opisane jakąś liczbą. Jak wiecie, liczby w komputerze zapisuje się za pomocą bitów, czyli zer i jedynek.

Im więcej bitów, tym większe liczby można zapisać. 8 bitów to liczby z zakresu od 0 do 255, bo to jest 2 do potęgi ósmej. 16 bitów to liczby od 0 do 65535, czyli 2 do 16. 24 bity to już od 0 do 16 milionów i ponad 700 tysięcy.

Już nie będę czytał tych wszystkich cyferek. Jeśli ktoś jest ciekawy, to niech sobie podniesie 2 do 24 i będzie dokładną wartość znał. Mówię w tym momencie oczywiście o liczbach całkowitych, bez części ułamkowej. Im większy jest zakres, tym mniejsze są błędy kwantyzacji i mniejszy jest szum kwantyzacji.

Wynika to z tego, że mamy po prostu coraz więcej wartości do dyspozycji. Możemy coraz dokładniej przyporządkować poszczególnym napięciom jakiejś wartości z tego zakresu. Dla ciekawych 8-bitowa głębia bitowa daje nam niecałe 50 dB dynamiki, 16 bitów to już 98 dB, a 24 bity aż 146 dB.

I to wynika właśnie z tego, że ten szum kwantyzacji ulega zmniejszeniu. Im większe mamy liczby, tym ten szum jest mniejszy, więc i dynamika większa. Pytanie, dlaczego to jest ważne? Otóż przeciwnicy formatu 32-bitowego, czyli osoby, które nie za bardzo wierzą w to, że ten format może być przydatny do czegokolwiek, oni argumentują, że już format 24-bitowy w pełni zaspokaja nasz głód dynamiki.

Innymi słowy, mając takie przetworniki analogowo-cyfrowe, jakie mamy, takie mikrofony, jakie mamy oraz takie źródła dźwięku, z jakimi się stykamy, po prostu nie potrzebujemy w praktyce niczego, co ma większy poziom dynamiki niż te 146 dB, które oferują 24 bity.

Myślę, że trzeba zwrócić uwagę na jeden fakt. Formaty 8-, 16- czy 24-bitowe są stałoprzecinkowe, czyli całkowitoliczbowe. Można mówić tak albo tak, żadne z tych okresień nie jest ładne. Oznacza to dla nas w praktyce dwie rzeczy.

Po pierwsze, trzeba podczas próbkowania dokonywać zaokrągleń, no bo po stronie cyfry musimy mieć liczby całkowite. Jak się pewnie domyślacie, prąd wzbudzany przez mikrofon i wzmacniany w przedwzmacniaczu, rzadko ma napięcia będące tylko liczbami całkowitymi.

W zasadzie to się nigdy nie zdarza. Trzeba takie napięcie przeliczyć i zaokrąglić. Po drugie, 8-, 16- czy 24-bity to, tak jak wspomniałem wcześniej, określone zakresy liczb. W uproszczeniu można powiedzieć, że wszystkim dopuszczalnym czy obsługiwanym wartością napięć z przedwzmacniacza są przypisywane liczby całkowite z tego właśnie określonego zakresu, czyli np.

od 0 do 255 albo od 0 do 65 tys. z hakiem itd. Jeśli będziemy mieli sygnał zbyt cichy już w przedwzmacniaczu, wtedy, jak się domyślacie, wykorzystamy tylko część z dostępnych wartości. Zamiast mieć wartości od 0 do 16 mln, będziemy mieli dla cichego sygnału, tak mówiąc obrazowo powiedzmy, tylko 6 mln albo 4 mln jeśli ten sygnał będzie cichutki.

Przy 16 bitach robi się jeszcze gorzej, bo zamiast 65 tys. wartości dostępnych możemy dla cichego sygnału już dostać np. tylko kilka tysięcy. No i im mniej liczb dostaniemy, tym gorzej, bo spada nam dynamika. Jeśli to później sobie przeskalujemy, czyli pogłośnimy taki plik, to będziemy mieli wyższy szum.

No i dlatego dopiero ten 24-bitowy format jest dosyć tolerancyjny, przy nagrywaniu stosunkowo cichego sygnału. Jeśli przedwzmacniacz i mikrofon nie szumią zbyt mocno same z siebie, to zwykle da się ten nawet cichy sygnał pogłośnić bez dużej straty jakości, no bo tutaj już jesteśmy w tych zakresach milionowych, więc nie ma to takiego dużego znaczenia.

Niemniej właśnie ze względu na ten sztywny zakres dostępnych liczb, formaty całkowito liczbowe, czy też stałoprzecinkowe, są dosyć mocno zależne od właściwego ustawienia poziomu wejściowego dźwięku, czyli od tego odpowiedniego wysterowania.

To my jako operatorzy musimy zadbać, żeby wpuścić na tyle dużo sygnału, by maksymalnie wykorzystać dostępny zakres, ale też nie możemy ustawić zbyt dużej wartości, no bo wtedy te najgłośniejsze dźwięki zaczną dostawać zawsze tylko wyłącznie wartość maksymalną.

I nic ponadto, bo ten konwerter analogowo-cyfrowy nie będzie w stanie dać wyższej wartości, bo po prostu już doszedł do granicy, więc wszystkie sygnały powyżej tego dopuszczalnego poziomu będą miały już tylko i wyłącznie jedną jedyną wartość, tą maksymalną.

No i z tego powodu pojawia nam się cyfrowe przesterowanie, które objawia się m.in. tym, że po prostu szczyty sygnałów są pościnane, no i brzmi to bardzo, bardzo niefajnie. No więc możemy sobie zadać pytanie, czy ten 32-bitowy format jest taki ważny, bo po prostu może daje więcej wartości, to już będzie ponad 4 miliardy taki zakres liczb.

Teoretycznie, gdybyśmy mówili o formacie stałoprzecinkowym, który też istnieje i też bywa czasami stosowany, no to tak rzeczywiście by się stało. Byłby on wtedy kolejnym formatem, taką kolejną wariacją, która dodaje jeszcze drobniejszy podział, jeszcze więcej wartości i jeszcze więcej dynamiki, bo w tym wypadku to już by było prawie 200 dB.

Ale ja nie mówię o tym formacie, ja mówię o formacie zmiennoprzecinkowym, który ma zupełnie inną cechę i to ta cecha stanowi o jego sile. Ten format nie musi już dopasowywać wartości napięć do z góry narzuconego zbioru liczb całkowitych.

On może wręcz zapisywać te konkretne wartości napięć, które trafiają do niego sprzed wzmacniacza, bo on operuje, powiedzmy też w uproszczeniu, na liczbach rzeczywistych. Czyli przykładowo wartość 1,7 może być zapisana po prostu jako 1,7, zamiast np.

dwójka po zaokrągleniu. Daje to nie tylko dokładniejsze odwzorowanie oryginalnego sygnału, tutaj nie ma jakoś specjalnego praktycznego znaczenia, ale przede wszystkim uwalnia nas od widma przesterowania cyfrowego, bo tutaj osiągnięcie wartości maksymalnej jest praktycznie niemożliwe.

Te wartości są po prostu dla 32 bitów zmiennoprzecinkowych tak duże, czy tak małe, bo to zależy od której strony spojrzeć, że po prostu znika nam cyfrowe 0 dB. Możemy nie nagrywać z głośnością wyższą niż te cyfrowe 0 dB. Teoretyczna dynamika sygnału 32 bitowego zmiennoprzecinkowego osiąga dzięki temu jakieś absurdalne 1500 dB.

To jest wartość niewyobrażalna. Jeśli jesteście ciekawi, to najgłośniejszy dźwięk, jaki został zarejestrowany, to była bodajże erupcja Krakatau, którą szacuje się na jakieś 310 dB. To był najgłośniejszy dźwięk, jaki byliśmy w stanie poznać.

Start rakiety Saturn V to jest jakieś 200 dB. Najgłośniejsze koncerty rockowe to są wartości jakieś 120-130 dB. No więc dynamika 1500 dB to jest w ogóle kosmos. Ktoś może zapytać, dlaczego nie stosujemy formatu 16 bitowego albo 24 bitowego, ale też zmiennoprzecinkowego, skoro to daje takie fajne efekty.

Przecież miałby on podobne zalety co ten 32 bitowy, a pliki z tym formatem zajmowałyby mniej miejsca niż 32 bitowe. Więc dlaczego nie? Niestety okazuje się, że 16 bitowe liczby zmiennoprzecinkowe są zbyt mało precyzyjne przy przeliczaniu.

Występują wtedy zbyt duże błędy zaokrągleń i się tam cuda dzieją po przecinku. I każdy programista zdaje sobie z tego sprawę, bo wiadomo nie od dziś, że do obliczeń zmiennoprzecinkowych stosuje się liczby przynajmniej o podwójnej precyzji, czyli 32 bitowe właśnie.

Zaś zmiennoprzecinkowe liczby 24 bitowe nie są po prostu obecne w architekturze współczesnych procesorów, które są przystosowane do obliczeń zmiennoprzecinkowych na liczbach 16, 32 lub 64 bitowych. No dobra, tyle teoria matematyczno-informatyczna, ale ktoś zorientowany w technikach nagraniowych i w sprzęcie może przytomnie stwierdzić, że no hola hola, zaczynamy mówić o jakiejś dynamice rzędu 1500 dB, ale my przecież nie mamy takiego sprzętu.

Nie mamy np. konwerterów analogowo-cyfrowych o dynamice większej niż 130 dB, więc z czym do ludu można zapytać? No i to jest prawda. Faktycznie format 32 bitowy w klasycznych konstrukcjach jako kolejny format zapisu danych byłby kwiatkiem do kożucha, bo on nic by nie dawał.

W urządzeniach z 32 bitowym zapisem zmiennoprzecinkowym musiano sobie jakoś z tym problemem poradzić. No i poradzono sobie. A jak? Po prostu montując przynajmniej dwie pary przedwzmacniacza i konwertera, a potem łącząc uzyskane w ten sposób pochodzące z dwóch źródeł w spójny sygnał 32 bitowy.

Czasem tych źródeł, czyli par, jest więcej, np. mikrofon Rode NT1 5 generacji, którym notabene dzisiaj nagrywam. On ma wbudowany 32 bitowy interfejs i on ma aż 4 pary przedwzmacniaczy i konwerterów. Oczywiście urządzenia w rodzaju Zuma F3 czy Tascama X8, czy tego Rode NT1 nie oferują dynamiki 1500 dB, tylko dużo, dużo mniej, jednak na tyle dużo, żeby źródłem ewentualnych przesterowań był już wyłącznie mikrofon.

O ile tylko nie przesterujemy mikrofonu, to w praktyce raczej są małe szanse na to, że zniszczymy sobie nagranie tylko dlatego, że ustawiliśmy poziom wejściowy o 10 dB za wysoko. W 24 bitach byłaby to tragedia, bo mielibyśmy pościnane wierszołki sygnałów i cyfrowe przesterowanie, więc nagranie prawdopodobnie trzeba by wyrzucić do kosza, ale tutaj po prostu ściszymy plik w postprodukcji i wszystkie szczegóły nadal w tym pliku będą.

Więc to jest bardzo duże ułatwienie przy nagrywaniu sygnału. Podsumowując, 32 bitowy format zmiennoprzecinkowy jest przydatny, ale tylko w sytuacji, kiedy zapisuje go specjalnie przygotowany sprzęt. Jeśli nagramy coś zwykłym 24 bitowym interfejsem audio i zapiszemy to jako 32 bitowy plik, no bo tak nam program edycyjny umożliwia, to nam kompletnie nic nie da poza zwiększeniem wielkości pliku.

Tylko specjalna architektura takich urządzeń jak Zoom F3, jak Sound Devices Mix Pre 6, jak Tascam X8, tylko to sprawia, że 32 bity mają sens i mają zastosowanie. Czy to jest format niezbędny? No nie, bo jeśli ktoś potrafi dobrze ustawić poziom wejściowy i nagrywa z głową, to 24 bitowy, a nawet 16 bitowy format jest w zupełności wystarczający, żeby dostać nagranie dobrej jakości, albo nawet bardzo dobrej.

32 bity są jednak po prostu wygodne w takim powiedzmy codziennym życiu i pozwalają zapisać wszystko, co wychodzi z przedwzmacniacza mikrofonowego, odrzucając sztuczne ograniczenia stałoprzecinkowych zakresów, czyli znosząc to ograniczenie cyfrowego zera przy nagrywaniu.

A czy używając urządzeń 32 bitowych możemy zapomnieć o ustawianiu właściwego poziomu nagrywania? No niby tak, niby tak, bo Zoom F3 nawet teoretycznie nie ma takiej możliwości, żeby sobie poziom wejściowy ustawić, ale w praktyce nie jest to do końca jeszcze przynajmniej prawda.

Praktyka pokazuje, że lepiej nie korzystać z tego minimalnego poziomu, który jest dostępny w rejestratorze, bo wtedy nagrania będą miały mimo wszystko po pogłośnieniu nieco więcej szumu niż sygnał nagrany od razu z takim wyższym poziomem powiedzmy normalnym.

Za to nie trzeba się już obawiać przesterowań, te jesteśmy w stanie bez problemu skorygować, oczywiście nie wynikają one z przesterowania samego mikrofonu. Kończąc rozważania na ten temat powiem tak, nie dostajemy tutaj jakiejś magicznej jakości, jakichś cudów na kiju i nie wiadomo czego, uwalniamy się tylko, ale i aż od cyfrowego przesterowania i nie musimy stosować limiterów przy zapisie, czy też nie musimy drżeć, że jakieś głośniejsze sygnały zrujnują nam nagranie.

Powrót