pro_draqu (17-06-2010)
1. Czy ktos z forumowiczow ma dostep, moze sie podzielic informacjami lub potrafi wskazac zrodlo do artykulow, badan, testow, wiarygodnych porownan, albo rozsadnych dyskusji dotyczacych silnikow miksujacych dzwiek opartych na arytmetyce zmienno lub staloprzecinkowej, wadach, zaletach, plusach dodatnich i ujemnych dotyczacych jednego lub drugiego rozwiazania?
2. Interesuja mnie rowniez informacje o procesorach, ich rodzajach, architekturze itp. i ich zastosowaniach w urzadzeniach przetwarzajacych dzwiek - procesory efektowe, procesory glosnikowe, konsolety cyfrowe, karty typu UAD, Powercore itp.
Nie jestem specjalista od DSP niestety, pamietam troche z zajec na polibudzie i chcialbym to sobie jakos odswiezyc i poukladac... Czasem sie cos o tym mowi przy okazji wprowadzania nowych produktow, chyba dobrze byloby wiedziac co w trawie piszczy.
Tylko blagam nie wysylajcie mnie do Panow Smitha, Zielinskiego i Szabatina....
Z gory dziekuje....
pro_draqu (17-06-2010)
wadą arytmetyki floating point są zaokrąglenia sumowanych wartości
fixed point jest pozbawiony tej wady
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
Jacko, ale to chyba zależy czy mamy do czynienia ze zmienno-przecinkowością w kompresji zapisu, czyli gdy zapisujemy za pomocą 16 bitów zakres 24 bitowy (zakłada się wtedy że w pewnych odcinkach czasu sygnał itak nie zmienia się z dynamiką większą niż pewna ilośc bitów dzięki czemu kilka bitów mówi o zgrubnej wartości próbki a pozostałe bity podają dokładną wartość liczoną od wartości zgrubnej, efektywnie uzyskuje się większą rozdzielczość), czy też mowa jest o zmiennoprzecinkowości nadmiarowej, kiedy słowo 24 bitowe zapisane jest w postaci na przykład 32 bitowej. W tym drugim przypadku z tego co wiem nie ma mowy o zaokrąglaniu, a z taką właśnie zmiennoprzecinkowością mamy do czynienia w dzisiejszych DAWach.
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
Słyszałem o tym, ale nigdy nigdzie nie znalazłem na ten temat żadnych publikacji, które jednoznacznie wyjaśniały by o co chodzi. Jeśli daw wewnętrznie faktycznie pracuje w 32 lub 64 bitach (lub 56 jak PT) to praktycznie każdy ślad 24 bity, jest niezmieniony, tylko doklejone ma po obu stronach słowa bitorego zera w razie gdyby miał być w strumieniu danych w programie sciszony lub przygłośniony. Samo sumowanie w takim przypadku powinno być stałoprzecinkowe. Chyba że właśnie następuje konwersja i program w rzeczywistości ma silnik 24 bitowy, tyko stosuje to małe "oszustwo" z kodowaniem bitów tak, aby uzyskać efektywne przenoszenie 32 lub 64 bitów, ale to trochę nie ma sensu, bo z racji na architekturę procesorów najprościej jest to zrobić w 32 lub 64 bitach. Zastanawiam się na ile opinie w tym temacie opierają się o czasy konsol cyfrowych, których architektura rzeczywiścia mogła być 24, 20, 18 lub 16 bitowa zmiennoprzecinkowa po to, żeby przenieść owe 24 bity, wówczas mielibyśmy do czynienia z kodowaniem kompresyjnym i sumowaniem takiego sygnału, co rzeczywiście doprowadza do zaokrągleń.
Pro Tools HD ma mikser 48 bitowy FIXED POINT.
Nie rozumiesz, tutaj nie chodzi o kwestię ilości bitów, tylko o charakter systemu Floating Point. To nie jest wtedy tak, ze masz 32 bity - czyli 4,294,967,296 liczb zawierających wszystkie stałe wartości od 1 do 4,294,967,296. Ten zakres wartości jest zupełnie inny i może wydarzyć się sytuacja, w której wynikiem sumowania dwóch wartości będzie liczba nie istniejąca na tej skali (co jest niemożliwe w systemie fixed point). Teraz z głowy przypominam sobie przedstawiony przykład z systemem 4 bitowym, gdzie znajomy rozrysował mi to w taki sposób przy użyciu kalkulacji, że:
w systemie 4bit fixed point były wartości od 1 do 16 - tutaj jest łatwo je ze sobą sumować bez obawy o to, że wyjdzie na liczba, którą będziemy musieli zaokrąglić:
1 + 1 = 2
3 + 12 = 15
1 + 15 = 16
w systemie floating point były to natomiast wartości takie jak:
10, 20, 30, 40, 100, 200, 300, 400, 1000, 2000, 3000, 4000, etc...
i tutaj widać oczywistą niezdolność sumowania wielu wartości ze sobą, np.:
10 + 20 = 30
10 + 100 = 110 (zaokrąglenie do 100)
40 + 100 = 140 (zaokrąglenie do 100)
100 + 1000 = 1100 (zaokrąglenie do 1000)
100 + 300 = 400
Na czerwono zaznaczyłem liczby niemożliwe do zaprezentowania na na tej skali. W 32 bitach te zaokrąglenia są znacznie mniejsze i mniej znaczące niż przy 4 bitach, ale nadal są.
To nie jest tak, że w 32bitach floating point uzyskujemy 1500dB dynamiki kosztem niczego - to właśnie odbywa się kosztem dokładności kalkulacji takich jak sumowanie.
Zwróc uwagę, że 48bit fixed point daje "tylko" 288dB dynamiki.
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
Ok, piszemy chyba o tym samym, tylko w innych słowach. Sęk tylko w tym, gdzie rzeczywiście jest sumowanie Fixed Point, a gdzie Floating Point. Wydaje mi się, ze problem Floating point dotyczył urządzeń, które nie potrafiły pracować z dłuższym słowem bitowym i w ten sposób nadrabiały ograniczoną dynamikę. W komputerze to jest tylko kwestia tego, ile mocy obliczeniowej zechcemy "poświęcić". Musze już wyjechać na weekend, ale na tyle mnie zainteresowałeś, że przemyślę tą sprawę i zadzwonię do znajomego, który zajmuje się programowaniem DSP, może rozwieje moje wątpliwości ;-)
Pozdrawiam!
w necie tego jest sporo - poszukaj floating point rounding error (lub round-off error)
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
No tak... tylko teraz trzeba by przeprowadzić ślepy test stwierdzający czy niedokładności w sumowaniu na 30 miejscu po przecinku jest rzeczywiście słyszalna...
Ostatnio edytowane przez Smiechu : 30-07-2010 o 16:38
"...just close your mind if you find all you need with your eyes..."
http://hp8.bydzia.com
http://smiechustudio.bydzia.com
zrobmy taki test
przygotuje sesje pro tools, zgram ja w hd i ktos ja zgra w le
roznica jesli w ogole bedzie slyszalna to przy miksowaniu cichych rzeczy z glosnymi, czyli poglosy, pomieszczenie, etc. - powinno dodatkowo to zostac uwydatnione przy kompresji sumy, gdzie ciche dzwieki naturalnie staja sie nieco glosniejsze
ktos ma jakas fajna sesje, moze np. jakis jazz lub niezbyt ostre granie rockowe ze sladami o bardzo dobrej jakosci?
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
A ja mam i to nawet bardzo dobre ślady, ale musielibyśmy ten test odłożyc o około miesiąc, aż płyta zostanie wydana. Jest tam akurat jeden bardzo spokojny jazzowy numer który powinien nadawać się idealnie.
Zastanawia mnie dlaczego silnik miksujący w HD określany jest jako "fixed point", skoro operuje na wartościach całkowitych (w "The Pro Tools 48-bit Mixer" nie mogę znaleźć żadnej wzmianki o ilości bitów przeznaczonych na tzw. "bity ułamkowe")
edit:
Nie wiem jakie dokładnie informacje Cię interesują, ale próbowałes coś szperać w papierach developerskich? Przykładowo na stronie ADSP-21369 używanego w UAD-2 w manuals->programming reference->numeric formats można znaleźć ciekawe informacje (w kontekście tytułu tego wątku)...
Ostatnio edytowane przez lord_awesomeguy : 31-07-2010 o 23:32
Marcin Sz.: a jaki algorytm sumowania ma Reaper?
Pozwolę sobie odpowiedzieć. Reaper sumuje (umożliwia też definiowanie własnego pan law) liczby zmiennoprzecinkowe o 64-bitowej precyzji (tzw. "podwójnej precyzji"). Cytat z gs, co twórca tego programu twierdzi o precyzji FP w DAW:
Napisał http://www.gearslutz.com/board/1221556-post2.html
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
Chodziło mi raczej o ostatni akapit (który tyczy się Reapera i bodaj Sonara). Z chęcią posłucham porównania tego co oferuje LE vs arytmetyki całkowitoliczbowej w wydaniu HD![]()
Ja tam nie wiem, w czym problem. Wielokrotnie zmieniam wtyczki z tdm na rtas i odwrotnie i nie zauwazam zadnych roznic. IMO to jest dzielenie wlosa na czworo, i to w dodatku w sytuacji gora czterobitowego pliku wynikowego.
W przypadku Sonara... 64 bity są oczywiście tylko na tych wtykach które to obsługują... niestety z przyzwyczajenia nie używam tych 64 bitowych wtyk oferowanych przez Cakewalk prócz kilku... czyli Transient Shapera i Tube Levelera... ten pierwszy jak na razie najbardziej przypadł mi do gustu ze wszystkich wtyk modelujących transienty... czy to kwestia 64bitów?? nie wiem ale jak dla mnie inne produkty przy nim siadają... a tube leveler to całkiem przyjemna saturacja... przełączenie między trybem 32-64 bity... wprowadza bardzo subtelne, wręcz na granicy rozpoznawalności (lub to po prostu autosugestia) złagodzenie dźwięku...
A co do całej tej teorii o zaokrągleniach itd... nikt tu specjalistą nie jest a dyskutujemy o na prawdę skomplikowanych rzeczach... ja pamiętam jedno ze studiów że mimo zaokrągleń arytmetyka zmiennoprzecinkowa jest bez porównania dokładniejsza od stałoprzecinkowej... sumowanie to jedno... a mnożenie, dzielenie i cała masa funkcji złożonych?? W arytmetyce stałoprzecinkowej jeśli 33 podzielisz na 2 otrzymasz 16 reszty 1... czyli dochodzi do ogromnego zaokrąglenia w porównaniu do arytmetyki zmiennoprzecinkowej w której zaokrąglenia pojawiają się daleko daleko za przecinkiem...
Poza tym jest jeszcze jeden bajer... jeśli zamiany ze stałoprzecinkowego 16/24 bitowego zapisu przechodzi się na zmiennoprzecinkowy 32 bitowy przez dodanie zer na początku i końcu wyrazu... to nie ma opcji aby sumowanie w systemie zmiennoprzecinkowym tak otrzymanych liczb dawało jakiekolwiek zaokrąglenia... wyniki sumowania będą identyczne jak w przypadku sumowania w systemie stałoprzecinkowym... prócz miejsc w których wynik wychodziłby poza dostępną skale...
Na koniec wydaje mi się że gdyby arytmetyka zmiennoprzecinkowa powodowała jakiekolwiek straty to nikt z twórców oprogramowania by się w nią nie bawił...
To jest tylko moje gdybanie... z tego co pamiętam ze studiów na temat działania na liczbach w zapisie binarnym
Ostatnio edytowane przez Smiechu : 03-08-2010 o 07:26
"...just close your mind if you find all you need with your eyes..."
http://hp8.bydzia.com
http://smiechustudio.bydzia.com
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
32bit floating point jest uzywany ze wzgledu na to, ze jest optymalnym kompromisem pomiedzy jakoscia i moca obliczeniowa. Specjalisci, lacznie np. z Bobem Katzem zgadzaja sie w kwestii, ze 48bit fixed jest lepszy niz 32bit float. Lepszym rozwiazaniem od obu jest 64bit float (lub fixed), ale na to wspolczesna technologia jeszcze nie pozwala.
Jesli chodzi o to co napisales o dzieleniu i mnozeniu - pamietaj, ze tutaj dzielimy wartosci 24 bitowe majac do dyspozycji rozdzielczosc 48 bitowa, czyli 16.7 miliona razy wieksza. Wiec tutaj przy dzieleniu nie wystapia zadne zaokraglenia. Natomiast 32bit float robi zaokraglenia przy zwyklym sumowaniu, co ma bezposredni wplyw na brzmienie samego miksera.
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge
Wiem, ze chodzi o rozne miksery. Ale wtyczki RTAS pracuja w 32 float, a jak sa po kolei to nie przechodzi to przez mikser tylko idzie caly czas zmiennoprzecinkowo. W dodatku zaokraglenia pojawiaja sie przykazdym wyjsciu z i wejsciu do miksera. W swietle calej dyskusji nie wiem, co gorsze![]()
Zaokraglenia o ktorych mowie pojawiaja sie przy sumowaniu wielu sygnalow, nie chodzi tutaj o redukcje slowa z 32bit float do 24 bit fixed. Obrabiany dzwiek jest i tak zarejestrowany w rozdzielczosci 24 bitowej. W przypadku pojedynczych sygnalow nie ma to praktycznie zadnego znaczenia.
Wazne jest tez zwrocenie uwagi na to, ze bledy kwantyzacji w systemie fixed point maleja wraz ze wzrostem sygnalu, natomiast w systemie floating point rozdzielczosc mantysy jest powielana przez eksponent i bledy kwantyzacji sa takie same dla sygnalow o roznych poziomach. W zwiazku z tym nieprawidlowo zrobiony miks z tlumikami kanalow ustawionymi bardzo nisko i podbitym sygnalem na sumie bedzie zawieral znacznie wieksze bledy kwantyzacji w przypadku fixed point niz floating point. Prawidlowe wykorzystanie miksera 48bit fixed z poprawna struktura sygnalow minimalizuje bledy kwantyzacji. W systemie Float bledy kwantyzacji sa rownomiernie rozlozone w calym zakresie dynamiki, natomiast w systemie fixed sa niewielkie przy silnym sygnale ale zwiekszaja sie przy zblizaniu sie do dolnego zakresu dynamiki.
Rozumiem to tez w taki sposob: Znaczenie bledow kwantyzacji jest proporcjonalne do rozdzielczosci bitowej. 32 bity beda zawieraly wieksze bledy kwantyzacji niz 48 bitow. W przypadku reprezentacji zakresu dynamicznego 1500dB przy pomocy 32 bitow float zakladam, ze bledy kwantyzacji beda znacznie wieksze niz w przypadku reprezentacji zakresu dynamicznego 288dB przy pomocy 48bitow fixed. Dodajac do tego jeszcze rownomierne rozlozenie zaokraglen w systemie float przeciwko proporcjonalnemu spadkowi bledow wraz ze wzrostem dygnalu w systemie fixed - z teoretycznego punktu widzenia przyjmuje, ze 48bit fixed jest znacznie lepszy. W praktyce zrobimy test i bedziemy wiedziec na czym stoimy.
Jacek Miłaszewski - www.chimpstudio.com
You get what you pay for. You pay peanuts, you get monkeys. - Chris Lord Alge