Systemy Zmienno-Przecinkowe

Dzisiaj przyszedł czas na przedostatnią część artykułów o teorii cyfrowego audio. Omówię krótko mityczną przewagę systemów zmienno-przecinkowych, a cały ciąg artykułów podsumujemy w następnej części rozważaniami o jakości nagrywanego sygnału w kontekście „analog kontra cyfra”. Mam nadzieję, że póki co, nikt z Was nie pogubił się jeszcze w tych wszystkich pojęciach, cyferkach i zasadach. Jeśli jednak pojawiają się wątpliwości, to nie wahajcie się pytać w komentarzach. A teraz do rzeczy istotnych…

Systemy zmienno-przecinkowe

Kto już jakiś czas zajmuje się pracą w domenie cyfrowej, na pewno w którymś momencie spotkał się z terminami „stało-przecinkowy” (np. 24 bit fixed-point) i „zmienno-przecinkowy” (32 bit floating-point).

Co konkretnie kryje się za tymi wartościami?

Otóż dotyczą one kalkulacji, jakie wykonywane są wewnątrz stacji roboczej podczas wszelkich procesów, jakim poddajemy ślady. Dotyczą one tak prostych zabiegów, jak zmiana poziomu głośności danego śladu, manipulowanie panoramą, sumowanie kilku śladów w grupie, dodawanie pluginów, itp.

Z tego, co już wiemy, pliki audio, które nagrywamy wewnątrz programu, przechowują każdą próbkę dźwiękową, jako informacje 16-bitowe lub 24-bitowe – w zależności od tego, jakie parametry sesji wybraliśmy. Mimo to, prawie każda współczesna stacja robocza daje nam możliwość pracy w 32-bitowym trybie zmienno-przecinkowym, co oznacza znacznie większą precyzję obliczeń. Ta z kolei redukuje ilość zniekształceń i szumów. Ale czy rzeczywiście jest tak, jak twierdzą co niektórzy, że praca ze śladami w 32-bitach w ogóle eliminuje powstawanie zniekształceń wprowadzanych przez cyfrową obróbkę? Chyba jednak byłoby za pięknie… Ale zacznijmy od początku

Sprzęt analogowy wprowadza do przepuszczanego przezeń sygnału nieznaczną ilość szumu czy innych artefaktów. Jeżeli mamy w łańcuchu kilka różnych urządzeń analogowych, wszystkie te zniekształcenia sumują się na wyjściu ostatniego z nich.

Tutaj chyba warto wspomnieć o pewnej pułapce, w którą z niewiedzy pakują się rozpoczynający swą przygodę z nagrywaniem amatorzy…

Chodzi o przypadek, gdy w ich torze audio znajdują się wątpliwej jakości komponenty, a do tego w ilości znacznie przekraczającej zdrowy rozsądek. Przykładowo – ktoś, kto do nagrania wokalu używa budżetowego preampa za 100zł, który jest następnie wpięty w wątpliwego pochodzenia kompresor, a ten z kolei wchodzi do najtańszego miksera, w którym jeszcze skorzystamy z punktu korekcji, po czym podłączymy jego wyjście do zintegrowanej karty muzycznej – jest w bardzo niekorzystnej sytuacji. Bardzo tanie i słabe komponenty w takiej klasy sprzęcie dodają niewyobrażalnej ilości szumów do nagrywanego sygnału, dlatego do prostego, domowego nagrywania poleca się skrócenie łańcucha nagraniowego do minimum.

To, co rzekomo ma dodać „analogowego” charakteru, jest tylko chwytem marketingowym stosowanym do wyłudzenia pieniędzy od niedoinformowanych, naiwnych i młodych ludzi. Nie bez powodu, od samego początku prowadzenia tej strony, nakłaniam każdego miłośnika home-recordingu do zaopatrzenia się w przyzwoity interfejs, który spełni wszystkie pokładane w nim nadzieję i bez konieczności używania dodatkowych „klocków” pozwoli na rejestrowanie przyzwoicie brzmiących i relatywnie bezszumnych śladów. Wybaczcie dygresję. Wracamy do tematu.

Podobne do tych analogowych zniekształcenia, acz na znacznie mniejszą skalę, mają miejsce wtedy, gdy nagrane do DAW audio przechodzi przez wiele etapów numerycznej manipulacji, jakiej poddajemy nasze ślady podczas edycji, miksu czy masteringu.

Co tak naprawdę odbywa się wewnątrz DAW, kiedy poddajemy ślady obróbce?

Niezależnie od tego, czy pracujemy w systemie stało- bądź zmienno-przecinkowym, program odczytuje 16-bitowe lub 24-bitowe próbki z każdego śladu audio i na tych liczbach dokonuje wszelkich kalkulacji. Różnica w 32-bitowym systemie zmienno-przecinkowym polega na tym, że na tym etapie dokonuje się jeszcze konwersja z 16 lub 24 do 32 bit i wszystkie obliczenia odbywają się na znacznie większych liczbach, co tak jak wspomniałem – sprzyja większej precyzji, czyli mniejszym zniekształceniom. W momencie, gdy odtwarzamy nasze ślady lub gdy zgrywamy miks do jednego pliku stereo, odbywa się konwersja w drugą stronę i liczby w systemie 32-bitowym są redukowane do 16 lub 24 bit – po to, żeby interfejs mógł je odtworzyć.

Tutaj muszę wtrącić jeszcze jedną dygresję – wbrew panującej wśród niektórych teorii – niemożliwe jest póki co nagrywanie śladów w prawdziwej rozdzielczości 32 bitów, bo żaden z dostępnych na rynku interfejsów nie ma takich zdolności. Nawet, jeśli stworzymy sesję z takimi parametrami, to i tak rozdzielczość nagrywanych śladów będzie wynosiła maksymalnie 24 bity, bo takie są fizyczne ograniczenia konwerterów. A żeby być już super-precyzyjnym, to powinienem zaznaczyć, że w rzeczywistości mamy do dyspozycji tylko 23 bity informacji (23 bity przeznaczone są na „mantysę” – czyli wartość bazową, a pierwszy bit reprezentuje znak – dodatni bądź ujemny).

Zapis informacji numerycznej w pliku 24-bitowym wygląda więc następująco:

SMMMMMMM MMMMMMMM MMMMMMMM

S – reprezentuje znak
M – reprezentuje mantysę

Natomiast zapis w przypadku obliczeń zmienno-przecinkowych wygląda tak:

SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM

S – reprezentuje znak

E – reprezentuje eksponent, czyli mnożnik

M – reprezentuje mantysę

To dzięki obecności mnożnika, liczby w systemie 32-bitowym mogą osiągać tak ogromne wartości. Podczas pracy w 32 bit, mamy więc do dyspozycji zakres dynamiki przekraczający 1000dB. Tak, tysiąc decybeli! Jest to oczywiście o wiele więcej niż będziemy kiedykolwiek potrzebować, ale chcę tylko nakreślić, z jakiego rodzaju poszerzeniem skali i co za tym idzie – większą precyzją, mamy do czynienia pracując w systemie zmienno-przecinkowym. Ta informacja powoduje jednak pewne niezrozumienie i krążące w sieci legendy o jej „bezstratnym” sposobie procesowania audio.

A niestety tak do końca nie jest i to z bardzo prostej przyczyny. Niezależnie od rozdzielczości, w której przyjdzie nam pracować, nawet gdyby była jeszcze większa – obliczenia odbywające się w DAW zawsze będą dodawały minimalną ilość zniekształceń i szumu, bo niewiele operacji (jeśli jakiekolwiek) może być wykonanych ze stuprocentową dokładnością. Nawet tak prosta czynność, jak zmiana położenia suwaka odpowiedzialnego za głośność danego śladu może wprowadzić pewną ilość nieprawidłowości, szczególnie wtedy, gdy rezultatem nie będzie okrągła liczba korespondująca z wartością przypisaną do danej próbki. Będą to oczywiście mikroskopijnej wielkości zniekształcenia, ale jeśli przemnożymy je przez ilość śladów, wtyczek, skomplikowanego routingu, sumowania, obróbki grupowej i całą masę innych czynności, to te niedokładności staną się, rzecz jasna – większe. Mimo tego, nadal są to tak niewielkie wartości, że nikt ich skutków nie usłyszy, ale nie można przeczyć ich istnieniu.

Nawet pracując z 64-bitową rozdzielczoścą audio pewne zniekształcenia będą się pojawiać, mimo iż jeszcze mniejsze niż w przypadku 32 bitów. Jeżeli ktoś chciałby na własnej skórze przetestować, czy i jakiego rzędu zniekształcenia pojawiają się podczas obróbki cyfrowego audio, zachęcam do głębszego zbadania tematu i trzymam kciuki 😉

Pozwolę sobie jeszcze dodać bardzo jasne i trafne wyjaśnienie różnic między systemami zmienno- a stało-przecinkowymi autorstwa jednego z czytelników, Macieja Sobczaka:

Zapis zmiennoprzecinkowy pozwala na oddzielenie informacji o “wzmocnieniu” (to ten wykładnik) od informacji o “kształcie” sygnału (to ta mantysa). Oznacza to, że np. czysta fala sinusoidalna jest w tym zapisie tak samo “czysta” (w sensie odwzorowania jej kształtu) niezależnie od tego, jaką ma głośność. A co za tym idzie, można ją ściszyć o 100dB a potem podgłosić o 100dB i będzie to samo – bo ściszanie i podgłaszanie nie ingeruje w kształt sygnału. Tym się właśnie różni zapis zmiennoprzecinkowy od stałopozycyjnego, gdzie te dwa aspekty są złożone w jednej liczbie – w wartości próbki. Czyli w zapisie stałoprzecinkowym jak weźmiemy super-czystą falę sinusoidalną 0dB i ją ściszymy o 100dB, to w efekcie zaokrągleń zgubimy informację o kształcie i zrobią się schodki – jeśli taki sygnał ponownie podłosimy o 100dB, to podgłosimy wszystko, razem ze schodkami i całą oryginalną czystość diabli wezmą. Mam nadzieję, że to da się łatwo wyobrazić. Wniosek: w zapisie zmiennoprzecinkowym można bezstratnie manipulować poziomem sygnału, w każdym kierunku, i na tym polega przewaga tego zapisu nad stałoprzecinkowym.

Podsumowanie

Chcę tylko dać do zrozumienia, że te minimalne szumy czy zniekształcenia wprowadzane przez procesowanie audio w DAW są w rzeczywistości niesłyszalne, bo nawet w przypadku pliku oryginalnie nagranego, jako 16-bitowy i poddanego obróbce w sesji 32-bitowej, wszelkie artefakty znajdują się około 100 dB poniżej maksimum skali. Myślę, że ten fakt możemy potraktować, jako świetny punkt wyjściowy do rozważań o tym, czy rzeczywiście cyfrowe audio brzmi tak niesympatycznie i „zimno” w porównaniu do brzmienia analogowego i co, jeżeli w ogóle, decyduje o tym, że niektórzy zaparcie twierdzą, iż nigdy nie doścignie ono swoją „magią” nagrywania chociażby na taśmę. Czy jest więc zbyt idealne? Co jest w takim razie czynnikiem decydującym? O tym przekonamy się w kolejnym wpisie.

I słowo na koniec…

Wiele osób myli precyzję obliczeń w cyfrowym audio z systemem operacyjnym, procesorem (CPU) czy rozdzielczością pracy wtyczek. I mimo że we wszystkich tych przypadkach spotkamy się z oznaczeniem 32-bit czy 64-bit – są to wartości dotyczące czegoś zupełnie innego. Więc śpieszę to wyjaśnić:

    • System operacyjny zainstalowany w naszym komputerze (załóżmy, że 64-bitowy), zwykle jest lekko szybszy w wykonywaniu obliczeń i może korzystać z większej ilości dostępnej pamięci RAM – co w praktyce oznacza, że możemy na przykład skorzystać w jednej sesji z większej ilości wtyczek czy instrumentów wirtualnych, zanim komputer zacznie nam się dusić. Miejcie również na uwadze, że 64-bitowy system operacyjny może działać zarówno z oprogramowaniem 64-bitowym, jak i 32-bitowym (ale nie na odwrót).

W dzisiejszych czasach prawie każda maszyna ma procesor 64-bitowy, ale wiele osób nadal korzysta z oprogramowania 32-bitowego. To, czy pracujemy w systemie lub oprogramowaniu 64-bitowym czy 32-bitowym, nie ma absolutnie znaczenia dla jakości przetwarzanego sygnału, a jedyna różnica może polegać na tym, jakie wersje programu możemy odpalić na naszej maszynie i jak szybko odbywają się wszelkie obliczenia podczas naszej pracy.

    • Jeśli jednak chodzi o głębię bitową przetwarzanego sygnału audio, to oprócz tego, co napisałem w dzisiejszym artykule, warto pamiętać o tym, że bit depth audio jest totalnie niezależny od systemu operacyjnego czy procesora, który jest zainstalowany w komputerze – co jest jakby logiczne. I generalnie zasada jest taka, że im większy bit depth, tym większa precyzja pracy wtyczek i ogólnie przetwarzania audio w każdym jego aspekcie, ale za razem większy rozmiar plików i większe wymagania w stosunku do mocy obliczeniowej komputera. Różnice w brzmieniu plików 32- i 64-bitowych są raczej nie do wychwycenia, bo nie jest to taka „przepaść” jak między 16 a 32 bit, co przy wytężonym słuchaniu akurat da się wyłapać. Nie raz już udowodniono, że 32-bitowa rozdzielczość audio jest bardziej niż wystarczająca, a pójście jeszcze wyżej, w 64-bitowe audio może być wskazane tylko w ekstremalnych przypadkach, np. gdy bardzo mocno, intensywnie i wielokrotnie poddajemy audio bezlitosnej obróbce, choć i tak znajdzie się jedna na 300 milionów dusza, która będzie twierdzić, że słyszy wyraźne różnice między 64- a 32-bitowym audio…

Zakończenie

I to póki co tyle, jeśli chodzi o teorię cyfrowego dźwięku. Do tematu pewnie jeszcze wrócimy w niedalekiej przyszłości. Następny w kolejce jest, zgodnie z zapowiedzią, tekst o jakości cyfrowego i analogowego audio, a zaraz po nim ruszamy z wynikami ankiety dotyczącej różnych stacji roboczych. Ahoj!

Zostawić komentarz ?

36 Komentarze.

  1. Pierwszy wpis, którego nie rozumiem 🙁 za dużo matematyki, a ja dupa z matematyki 🙁

    • A której części konkretnie nie łapiesz?

    • “Zapis informacji numerycznej w pliku 24-bitowym wygląda” od tego nie rozumiem-co oznacza dokładnie znak i wartość bazowa i skąd się bierze mnożnik. chodzi mi bardziej o wiedzę praktyczną, gdyż tego nie umiem przełożyć na swoje myślenie

    • Przed oczyma mam “matrix liczb” jak na miniaturce wpisu 😀

    • Znak: ujemny bądź dodatni.
      Wartość bazowa/mantysa: dostępne wartości do obliczeń
      Skąd się bierze mnożnik – tego nie wiem, nie jestem matematykiem 😉 W praktyce jest tak, że masz niewyobrażalny ogrom dostępnych wartości, do których może być przypisywane audio, więc kolosalną dokładność.

    • Znak, czyli pierwsza liczba?

    • Znak, czyli “+” lub “-“.

    • czyli przykładowo to wygląda tak: +MMMMMMM MMMMMMMM MMMMMMMM lub -MMMMMMM MMMMMMMM MMMMMMMM ?

    • Yep.

    • a różni się czymś + od – w praktyce? 😀

    • Tym, czy amplituda jest powyzej, czy ponizej zera – drugi wykres w tym wpisie:
      https://zakamarkiaudio.pl/2012/12/czestotliwosc-probkowania-i-glebia-bitowa-fakty-i-mity.html

    • Jeśli kogoś interesuje, to zapis zmiennoprzecinkowy działa w taki sposób:

      S EEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM

      Jak już wspomniano pierwszy bit to znak liczby,
      kolejne bity (E) to wykładnik – czyli do jakiej potęgi podnosimy…
      mantysę (M), czyli liczbę z przedziału od 0 do 10.

      Matematycznie zapisuje się to tak: x = (-1)^S * M^E.

      Można zauważyć, że im większy jest wykładnik liczby, tym mniej miejsc po przecinku możemy zapisać (stąd właśnie nazwa systemu).

      Przy przetwarzaniu sygnałów zapis ten daję taką zaletę, jak już ktoś wspomniał, że nie tracimy informacji sygnału po zmniejszeniu i ponownym zwiększeniu poziomu.

      Co do mitu o tym, zże zapis ten nie wprowadza szumów, to właściwie można powiedzieć, że jest to prawda, ponieważ przekształcenie tego sygnału do 16 lub 24 bitów “ukryje” wszystkie szumy wprowadzone przez operacje.

  2. Łukasz Dryl

    Artykuł świetny – każdy kto pracuje w domenie cyfrowej powinien takie minimum teoretycznej wiedzy posiadać. Jeśli mogę coś dodać to warto wiedzieć, że nawet jeśli nasz DAW przetwarza próbki w przestrzeni 64-bitowej to wcale nie oznacza, że z taką samą precyzją będą robić to używane przez nas wewnątrz niego wtyczki. Tu kieruję do wcześniejszego artykułu Igora pt. “Redukcja Bit Depth, Dithering…” 🙂
    Pozdrawiam

  3. Ok, ale interfejsy są w stanie nagrywać sygnał w 24bitach, a zamiana tych 24 do 32 nic nie da bo tylko dopisujemy coś czego nie ma – wypełniamy lukę. Po czym eksportując materiał ponownie zamieniamy 32 do 24, więc jedynym argumentem za pracą na 32 bitach jest mniejsza ilość zniekształceń wprowadzonych do materiału tak ? Oczywiście zakładając, że wtyczki radzą sobie z 32 bitami. Różnic między 24 a 32 właściwie nie słychać. A teraz pytanie. Wysyłając ścieżkę powiedzmy na zewnętrzny procesor efektów i otrzymując ten przerobiony sygnał z powrotem do DAW, poddany będzie on zamianie z 32 do 24 bit, po czym ponownie będzie zgrany z 24 do 32 tak ? Do tej pory nie miałem do czynienia z zewnętrznymi urządzeniami które by przetwarzały A/D – D/A w 32 bitach. Jak dla mnie to bardzo dużo konwertowania, które z tego co mi się wydaje nie jest bezstratne. Zwłaszcza że nie mamy tu jakiejś wielokrotności typu 16 – 32 – 64. Naprawdę opłaca się pracować w systemie 32 bitowym ? Jak to wygląda u Ciebie na co dzień Igor ? 🙂

    • Oprócz mniejszej ilości zniekształceń, jaka się pojawi podczas obróbki wtyczkami, teoretycznie wtyczki te pracują precyzyjniej – bo jest więcej dostępnych wartości od – do +. A czy jest to warte większego obciążenia komputera, większego rozmiaru renderowanych plików, itp. – to już decyzja osobista. Ja zwykle nie konwertuję do 32-bit, bo nie ma to dla mnie wymiernych korzyści. Co do wypuszczania sygnału na zewnętrzne urządzenia, to racja – dodajesz kolejne etapy konwersji. Od jakości tych wbudowanych w interfejsie (bądź zewnętrznych, jeśli takowych używasz), zależy jak bardzo sygnał będzie zniekształcony.

  4. “Różnica w 32-bitowym systemie zmienno-przecinkowym polega na tym, że na tym etapie dokonuje się jeszcze konwersja z 16 lub 24 do 32 bit i wszystkie obliczenia odbywają się na znacznie większych liczbach”

    Z tymi większymi liczbami to nie do końca jest prawda. Próbki w formacie zmiennoprzecinkowym normalizowane są do zakresu [-1, 1], czyli de facto DAW przy sygnale poniżej 0dB operuje na wartościach mniejszych od |1|. Choć rozumiem, że chodziło Ci o większą rozdzielczość bitową tudzież precyzję liczby.

    • Tak, chodzi mi cały czas o to, że przy większym bit depth, system ma więcej dostępnych wartości do przypisywania, co oznacza większą precyzję (stąd trochę niejasne określenie – większe liczby).
      Przy 16 bit:
      od -32,768 do +32,767
      Przy 32 bit:
      od -2,147,483,648 do +2,147,483,647

    • Przy liczbach zmiennoprzecinkowych nie ma takiego prostego przełożenia. Te 32-bity oznaczają tylko tyle, że liczba zmiennoprzecinkowa zajmuje 4 bajty w pamięci, choć tak naprawdę jej precyzja będzie 24-bitowa (ilość bitów mantysy o niej decyduje). Te zakresy, które podałeś dla 32-bitów, są prawdziwe dla kodowania całkowitoliczbowego U2 (kod uzupełnień do dwóch). W tym samym kodowaniu są kodowanie próbki 16-bitowe, 8-bitowe już nie.

    • Aż tak bardzo się w to nie zagłębiałem. To zostawiam matematykom i informatykom 🙂

  5. Sebastian

    Siemanko mam pytanie odnośnie sprzętu dotychczas nagrywałem na MXL 770 Mogami + Preamp ATR Tube-karta nie ziontegrowana PCI(tania lipa)prędzej czy później wiedziałem że jebnie co stało sie dziś.
    czy warto jest kupić interfejs z phantomem skoro mam preamp(ART Tube ok.200zł) wiec wiadomo jaki ma phantom czy kupić bez? Audio Fast Track pro czy Esi Maya w tym przedziale cenowym czy coś spoko tańszego jest;)sory za tak długie wypociny ale chciałem konkretnie to ubrać w słowa:)

    • Fast Track Pro – niezly interfejs, mozesz brac spokojnie. A ART-a mozesz sie oczywiscie pozbyc, bo raczej nic dobrego do sygnalu nie dodaje.

    • I mala prosba – pisz komentarz pod artykulem choc troche zwiazanym z Twoim pytaniem, ok? 🙂

    • Sebastian

      Ok jednak dostrzegłem w tym arktykuje wątek o interfejsach i tanich preampach a liczylem na szybką odp dlatego tutaj podbiłem;) Patu MC i to tych z górnej półki polecało mi właśnie interfejs z serii Esi Maya dlatego wolałem zapytać profesjonalistów od sprzętu;)Dzięki bardzo pozdrówki

    • Tylko jeszcze bierz poprawkę na to, że sprzęt ma akurat najmniejsze znaczenie 🙂

  6. Maciej Sobczak

    Oj, troszkę zamieszania wyszło. 🙂 Spróbuję bez matematyki.
    Zapis zmiennoprzecinkowy pozwala na oddzielenie informacji o “wzmocnieniu” (to ten wykładnik) od informacji o “kształcie” sygnału (to ta mantysa). Oznacza to, że np. czysta fala sinusoidalna jest w tym zapisie tak samo “czysta” (w sensie odwzorowania jej kształtu) niezależnie od tego, jaką ma głośność. A co za tym idzie, można ją ściszyć o 100dB a potem podgłosić o 100dB i będzie to samo – bo ściszanie i podgłaszanie nie ingeruje w kształt sygnału. Tym się właśnie różni zapis zmiennoprzecinkowy od stałopozycyjnego, gdzie te dwa aspekty są złożone w jednej liczbie – w wartości próbki. Czyli w zapisie stałoprzecinkowym jak weźmiemy super-czystą falę sinusoidalną 0dB i ją ściszymy o 100dB, to w efekcie zaokrągleń zgubimy informację o kształcie i zrobią się schodki – jeśli taki sygnał ponownie podłosimy o 100dB, to podgłosimy wszystko, razem ze schodkami i całą oryginalną czystość diabli wezmą. Mam nadzieję, że to da się łatwo wyobrazić. Wniosek: w zapisie zmiennoprzecinkowym można bezstratnie manipulować poziomem sygnału, w każdym kierunku, i na tym polega przewaga tego zapisu nad stałoprzecinkowym. Natomiast nie przesadzajmy z tą dynamiką – dynamiki jest dokładnie tyle samo co w 24bit (bo informacje o kształcie, czyli mantysa, ma tyle samo, czyli 23bit!) i widać to przy próbie zmieszania sygnałów o znacznie różniącej się głośności – jeśli mamy dwa sygnały 0dB, jeden z nich ściszymy o 100dB i dodamy do drugiego (nieściszonego), to program w celu dodania tych sygnałów będzie musiał wyrównać je do poziomu wspólnego wykładnika (bo końcowy sygnał może mieć tylko jeden wykładnik a nie dwa i przypomina to trochę dodawanie ułamków ze wspólnym mianownikiem) i tym razem diabli wezmą tą wirtualną dynamikę, bo w 23-bitowej mantysie po prostu nie da się zmieścić wartości o tak różnej skali. A co za tym idzie, ten cichszy sygnał zostanie zniekształcony tak samo jak przy pracy w trybie stałoprzecinkowym – i jest to strata nie do odzyskania, bo późniejsze zmiany w takim zsumowanym sygnale (korekcja, itp.) nie wydobędą nam raz straconej precyzji tego słabszego sygnału.
    Czyli bez przesady z tymi bitami o decybelami. 🙂

    • Dzięki za rozwinięcie tematu – pozwoliłem sobie dodać ten fragment do artykułu, bo bardzo jasno wyjaśnia te różnice. Mam nadzieję, że nie masz nic przeciwko? 🙂

    • Czyli chcesz powiedzieć, że regulacja wzmocnienia nie wpływa na wartość mantysy?

    • Maciej Sobczak

      Dokładnie tak – w zapisie zmiennoprzecinkowym “wzmocnienie” jest przechowane osobno i można tą wartość dowolnie zwiększyć bądź zmniejszyć, bez wpływu na mantysę. Przestaje to obowiązywać przy sumowaniu śladów, bo tam trzeba jakoś wyliczyć wspólny, końcowy wykładnik a przy to odbywa się kosztem mantysy. Można to sobie wyobrazić posługując sie kalkulatorem inżynierskim, czyli takim, gdzie liczby pisze się np. jako 1.23456E5 (co oznacza po prostu 123456). Widać tam, że można mieć taką samą precyzję niezależnie od wielkości, czyli 1.23456E5 ma taką samą precyzję jak 1.23456E-5. Ale spróbujcie takie liczby dodać i będzie lipa. Masę atomu i planety można poznać z taką samą precyzją względną (np. do 4 cyfr), ale nie da się tych wartości precyzyjnie dodać – trzeba coś zgubić i wtedy czar pryska.

      Igor – nie ma najmniejszego problemu. 🙂

    • Maciej – dzięki. A w temacie – ja się poddaję, bo nie mam i nie chcę mieć pojęcia o wyliczaniu masy atomu i planet 😉

    • @Maciej Sobczak, niestety, ale to, co piszesz, nie jest prawdą. Praktycznie każda zmiana wzmocnienia wpływa na zawartość mantysy, tutaj cudów nie ma. Przykład:

      0dB próbkę ściszamy o 3dB:

      zamiana dB na wartość próbki:
      0dB -> 10^(0/20) = 1
      -3dB -> 10^(-3/20) = 0.70794576

      ściszanie:
      1.0 * 0.70794576 = 0.70794576 (-3dB)

      liczba -> postać wykładnicza
      1.0 -> 1.0 * 2^0 (mantysa = 1, wykładnik 0)
      0.70794576 -> 1.4158915 * 2^-1 (mantysa = 1.4158915, wykładnik = -1)

    • Cóż to już zabawa dla inżynierów projektujących sprzęt. Dla mnie jako użytkownika potrzebny jest ogólny zarys i wiedza jak zmiany ustawień wpłyną na jakość pracy nad dźwiękiem i na sam dźwięk. Wszystkie wyliczenia jakie się za tym kryją to już pole do popisu dla zupełnie innych ludzi 🙂

    • Maciej Sobczak

      @666 – w szczegółach masz rację. Całkowicie bez dotykania mantysy można zmieniać wzmocnienie tylko o wielokrotność 6dB, w pozostałych przypadkach musi nastąpić jakieś przeliczenie wartości. Natomiast to przeliczenie odbywa się w ramach wszystkich bitów mantysy i po zmianie w drugą stronę albo mamy dokładnie wartość początkową, albo coś, co od oryginału odbiega tylko na ostatnim bicie albo dwóch – czyli w kontekście akustycznym wprowadzi błąd, który będzie poniżej -130dB i to niezależnie od wartości ściszenia/wzmocnienia. To jest tak zwany “pikuś” i w porównaniu do zapisu stałoprzecinkowego, gdzie wprowadzone zniekształcenie będzie proporcjonalne (!) do zmiany wzmocnienia, pozwala przyjąć właśnie takie realistyczne uproszczenie, jak opisałem na początku. Masz jednak rację w tych ostatecznych szczegółach. Ustalmy taką wersję: format zmiennoprzecinkowy pozwala na *wierniejsze* odwzorowanie sygnału przy zmianach wzmocnienia. OK? 😉

  7. Maciej Sobczak

    Jeszcze o bitach – jak już zostało zauważone, różnica pomiędzy 32-bit a 64-bit może objawić się w szybkości obliczeń. Pamiętajmy, że z kolei szybkość obliczeń ma wpływ na interakcje z buforem, latencją i innymi tematami, które Igor już poruszył, jak też sposób działania niektórych wtyczek, które mając do dyspozycji mniej lub więcej czasu na obliczenia mogą na bieżąco wybierać różne algorytmy, uproszczenia obliczeniowe i takie tam. Może się więc okazać, że jeśli ktoś słyszy różnicę pomiędzy 32-bit a 64-bit, to nie dlatego, że ma tak cudowny słuch, tylko dlatego, że te wszystkie interakcje wyglądają inaczej, bo program działający nie tylko w wirtualnych liczbach ale też w całkiem rzeczywistym i uciekającym czasie po prostu robi co innego. Ale tu już spekuluję – w każdym razie to nie musi być jednoznacznie lepiej albo jednoznacznie gorzej, po prostu minimalnie inaczej.

  8. Trońku przeteoretyzowany ten artykuł, zwłaszcza że pisał go raczej… praktyk?

  9. Tutaj autor popełnia zasadnicze błędy pisząc o systemach 32 i 64 bitowych. Proponuję poszukać tego gdzie indziej.

  10. Ustawiamy optymalną głębię bitową w AC3Filter: 16-bit, 24-bit czy może Float » videoquality.pl - pingback on 13/09/2013 w 02:40

Zostaw komentarz

Trackback'i i Pingback'i:

  • Ustawiamy optymalną głębię bitową w AC3Filter: 16-bit, 24-bit czy może Float » videoquality.pl - Pingback on 2013/09/13/ 02:40