1 Ostatnio edytowany przez seban (2018-03-02 23:55:58)

Hej!

SoTe poprosił mnie o umieszczenie następującej wiadomości w jego imieniu na forum Atari Area, niniejszym to czynię:

SoTe napisał/a:

Zauważyłem, że na ASMA jest mój player w wersji 2.0 podczas gdy ja u siebie od dłuższego czasu słucham muzyczek na wersji 2.3. Wersja 2.3 jest wzbogacona o filtr dolnoprzepustowy oraz układ różniczkujący. Układ ten odpowiada za przesunięcie sygnału z zakresu 0V...5V na -2.5V...2.5V (usunięta składowa stała sygnału) oraz jednocześnie wprowadza pewne zniekształcenia do sygnału prostokątnego. Te zniekształcenia są oczywiście ważne żeby uzyskać dźwięk zbliżony do Atari.

Dodatkowo mogłem pozbyć się pewnego "hack-a" używanego w emulatorach. Atari800 jak i ASAP wycinają wszelkie dźwięki jeśli do AUDFx jest wpisane coś mniej niż 3 (czyli 0...2). To powoduje usunięcie losowych pisków. W SAP 2.3 ten "hack" jest usunięty, a za usuwanie niepożądanych dźwięków odpowiada filtr dolnoprzepustowy. Dzięki temu zabiegowi, lepiej odwzorowane są niektóre utwory, jak np. muzyka z M.U.L.E która na Atari miała dość charakterystyczne pykanie (a które jest "brutalnie" usunięte w emulatorach), oraz np. prawidłowe odtwarzanie utworu Composers/Tegethoff_Sven/Roller.asp . W tym utworze, w przypadku użycia ASAP jeden kanał na początku jest zupełnie wyłączony, podczas gdy SAP gra to prawidłowo.

Tak więc, co jest nowego:

- filtr dolnoprzepustowy
- usunięty "hack" usuwający bardzo wysokie częstotliwości
- układ różniczkujący

Dla porównania, można sprawdzić utwór gry M.U.L.E oraz Composers/Tegethoff_Sven/Roller.asp

Plik można brać tutaj: Sap Player v.2.3

2

Brawo SoTe. Cieszę się, że ASAP ma konkurencję. Można prosić kod źródłowy?

https://www.youtube.com/watch?v=jofNR_WkoCE

3

proxy mode: ON ... ;)

SoTe napisał/a:

Filtr dolnoprzepustowy to dość "prosty" FIR (suma N wcześniejszych próbek). Nie wiem jaki jest oryginalny filtr w Atari i zresztą jego odwzorowanie łatwe by nie było. Ten sam problem mają z C64. Filtrów jest pełno, ich realizacji również (algorytmów i teorii jak cyfrowo odwzorować filtr analogowy). Wszystko, to jest jakaś tam aproksymacja.

Ja do tweak-owania filtra użyłem tej strony http://arc.id.au/FilterDesign.html . Można tam sobie wygenerować "coefficienty" i wkleić do kodu.

Kod do filtra jest w funkcji fir_basic. Wyżej jest tabela coefficient-ów. Ale z tego co widziałem w źródłach ASAP, to też tam jest jakiś filtr, więc żadna nowość.

Przed filtrem jeszcze jest układ różniczkujący. On też jest robiony na "oko". Seban kiedyś pokazywał mi na oscyloskopie że "tak k**** ma to wyglądać", więc starałem się tak dobrać parametr żeby odwzorować oryginalny sygnał z Atari. Układ jest dość banalny. Kondensator się ładuje i rozładowuje. Parametrem sterującym jest prędkość rozładowywania.

Całość, układ różniczkujący i filtr, są w funkcji "OutputFunction_Atari".

Wszystko to trochę błądzenie we mgle, bo żaden ze mnie specjalista od cyfrowej obróbki dźwięku ;) Wychodzę z założenia, że jeśli wszystko będzie cycle-exact + każdy najmniejszy element toru analogowego, to jakoś da się zbliżyć do oryginału. ASAP ma też filtr, nie wiem czy ma układ różn. (chyba nie?). Nie wiem skąd się dokładnie bierze różnica między SAP a ASAP. SAP ma też oversampling 4x. Może to coś daje. W sumie, ciekaw jestem jak by brzmiał player grający 192kHz albo 384kHz (może Ci się (Fox) będzie chciało przetestować w ASAP'ie ? ;) ). Oprócz problemu z graniem całego kanału w Roller.sap, ASAP ma też problem z pykaniem na początku dźwięków. Nie wiem skąd się to bierze. Słychać to np. w utworze "Duksap_1" Liebicha. Filtr? Oversampling? Nie mam pojęcia. Dodałem do archiwum "Comparison.wav", żeby to pokazać. Na początku gra ASAP a potem SAP. Na początku bassu 0xC0 słychać to pykanie.

BTW. ASAP mógłby grać trochę głośniej ;)

do pobrania:  Sap LIB v.2.3 Source Code

4

Gdyby SoTe zapomniał hasła, to przekaż proszę, że może sobie je zresetować :)

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

5

Dodałem niusa.

Btw. fajne cacko.
Chociaż jeszcze "Dimension_X" - SoTe-go nadal nie gra...

Niemniej - brawo!

I Ty zostaniesz big endianem...