D2D
From Atariki
Napisany przez KMK, eksperymentalny program na ośmiobitowe Atari do odtwarzania sampli z plików zapisanych pod DOS-em na twardym dysku. Najchętniej działa ze SpartaDOS X na komputerach XL lub XE z co najmniej 128k pamięci RAM (DOS trzeba skonfigurować w trybie USE BANKED). Program zasadniczo wymaga też procesora 65C816, ale istnieje starsza wersja przeportowana na 6502 przez Lizarda.
W bieżącej wersji program jest w stanie odtwarzać zarówno zwykłe sample (tzw. RAW-y) jak i pliki *.WAV. W każdym przypadku plik do odtworzenia musi zawierać próbki ośmiobitowe, mono, bez znaku. Przewaga pliku *.WAV nad "gołym" samplem jest tylko taka, że program odczytuje żądane parametry odtwarzania z nagłówka pliku i automatycznie wybiera je jako domyślne. Wielkość sampla do odtworzenia jest ograniczona tylko maksymalną wielkością pliku, jaki da się zapisać na dysku małego Atari - w chwili obecnej jest to 16 MB.
Program ma kilka trybów odtwarzania:
- na POKEY-u, z konwersją dokonywaną "w locie" z próbek ośmiobitowych na czterobitowe.
- na POKEY-u, z konwersją do pięciu bitów (jest mniej szumów, ale komputer jest bardziej obciążony)
- na POKEY-u z konwersją do sześciu bitów (obciążenie procesora jest jeszcze większe przy wątpliwej poprawie jakości)
- na Covoksie
Przy zastosowaniu KMK/JŻ IDE, szybkiego dysku (np. Toshiba MK2103MAV) i partycji z 256-bajtowymi sektorami program pozwala na odtwarzanie ośmiobitowych sampli w pierwszym trybie (czyli z konwersją w locie na 4 bity) z częstotliwością 12-16 kHz. Jest nadzieja, że na "nowym" filesystemie SPartaDOS X 4.39, który jest szybszy od starego o około 1,5 raza, parametry odtwarzania polepszą się na tyle, żeby można było osiągnąć 22 kHz.
Wady programu
Istotną wadą D2D jest słyszalna niestabilność dźwięku wynikająca głównie z nieregularności występowania zegarowych przerwań IRQ układu POKEY - liczniki te nie mają "samowyzwalacza", po zliczeniu do zera muszą być uruchamiane na nowo przez procedurę przerwania. Skutkuje to kumulowaniem się opóźnień mających źrodło w różnym czasie wykonywania się różnych rozkazów 6502 (jak wiadomo, przerwanie może być obsłużone dopiero po zakończeniu wykonywania pojedynczego rozkazu, w związku z czym tzw. interrupt latency waha się w zakresie od 0 do 7 cykli maszynowych), a to z kolei daje efekt słyszalnego "pływania" dźwięku w zalezności od tego, co komputer w danej chwili, poza odtwarzaniem sampla, robi: czyta dane z dysku, czy czeka na zwolnienie się następnego bufora.