START
_______________

Atari 8-bit

GAL-MMU

SIO2PC

Atari static RAM

Atari R-Flex

Atari Turbofreezer III

ARC by Pasiu/SSG

Atari Cartridge

Emulator USB Joy

SIDari

YAMari

SONari

SAMari

TIGari

NOMari

I/O Dekoder

CART+ECI expander

Atari Multicart XE

Atari Full S-RAM

Real Safety Gear

 

YAMari

     Wielokanałowy Syntezator FM w Atari - rewelacja... Gdyby nasze komputerki od
samego początku posiadały na pokładzie takie cudo - byłyby nie do pokonania...
Dorzucam kolejny układ do sprzętu dźwiękowego Atari. Nazwa wzięła się od połączenia dwóch wyrazów - YAMAHA i Atari nawiązując do podobnie stworzonej nazwy SIDari...
     Od dłuższego czasu myślałem nad dołączeniem OPL3 do Atari. Posiedziałem trochę
nad tym i złożyłem układ, w zasadzie prawie że będący podstawową aplikacją YMF262.
Znalazłem gdzieś w sieci schematy karty dźwiękowej OPTI82C930. Stamtąd pochodzi
spora część układu z kilkoma modyfikacjami i dostosowaniem całości do wymagań
sprzętowych systemu 6502.
     Czas więc na naprawdę dobrą zabawę z porządną syntezą FM. Kiedyś grałem na YAMAHA DX7, teraz zaś chciałbym zagrać na.............

Galeria:

     Syntezator w formie Cartridge. Obudowa Z-7. Widoczny sprzętowy Reset ponieważ
brak takiej linii w złączu, a może być przydatny, gdy generatory nie dadzą się wyłączyć
chociażby z powodu zawieszenia systemu. Dioda obok Reset jest tylko świecidełkiem.

     Wnętrze carta - strona top - Front

     Wnętrze carta - strona bottom - Back

Opis sprzętu:

     Na początek trochę informacji. Na czym polega synteza FM? W skrócie - polega
na otrzymywaniu dźwięków w oparciu o technikę modulacji częstotliwości. Polecam
zerknięcie na
pl.wikipedia.org/wiki/Synteza_FM Podstawy są dosyć złożone, a także
uzyskanie dobrze brzmiącego dźwięku nie jest proste. Mimo to jest to metoda dająca
naprawdę miłe dla ucha rezultaty. Sztandarowym przykładem syntezatora używającego
syntezy FM jest YAMAHA DX7 - legendarny już sprzęt o niezwykłych możliwościach i
dlatego też bardzo chętnie używany na scenie w latach 80-tych. Potem ten rodzaj
syntezy pojawił się także w komputerach PC a dokładniej - w kartach AdLib w postaci
scalonego syntezatora FM OPL2 na układzie YM3812, który mógł generować
jednocześnie 9 dźwięków albo 6 dźwięków i 5 instrumentów perkusyjnych plus trochę
efektów typu vibrato oraz tremolo, key scaling...Później pojawił się układ OPL3
YMF262-M, który podwoił liczbę kanałów dźwiękowych w stosunku do OPL2 oraz dodał
więcej możliwości kreowania dźwięków. Dla konkurencji, czyli Commodore 64, został
stworzony SFX Sound Expander - pudełko zawierające syntezator FM oparty na
YM3526 OPL - układzie o niezbyt dużej wydajności i możliwościach, jednak w tamtych
czasach (lata 80-te) był to olbrzymi skok jakościowy oferowany za stosunkowo wysoką
cenę (około 100 Funtów) pomimo, że układ ten zaliczany był raczej do segmentu
low-budget.

     Przedmiotem tego projektu został układ OPL3 - YMF262-M wraz z towarzyszącym
mu przetwornikiem zmiennoprzecinkowym D/A - YAC512.

    
To już w zasadzie nie jest prototyp. Układ złożyłem i przetestowałem w real Atari.
Zadziałał bez problemu. Działa również oficjalna procedura rozpoznawania obecności
układu OPL3. Jako, że jest to bardzo świeży moduł - brak w tym momencie software
do obsługi i odgrywania muzyki dla małych Atari.

Po kolei więc przedstawiam:

Schemat YAMari:


PCB YAMari:

 


Omówienie funkcji poszczególnych elementów składowych:

     YAMari składa się z 4 układów scalonych, kwarcowego generatora scalonego oraz
garstki elementów biernych. Na schemacie widoczne są układy:

IC1 - TL084 - układ czterech wzmacniaczy operacyjnych FET  (datasheet)
IC2 - 74HCT00 - cztery bramki logiczne NAND                       
(datasheet)
IC3 - YMF262-M - syntezator OPL3                                       
(datasheet)
IC4 - YAC512 - zmiennoprzecinkowy przetwornik D/A             
(datasheet)

     Układ IC1 pełni funkcje typowo analogowe - źródła napięć odniesienia oraz filtry.
Układ IC2 wytwarza z sygnałów Phi2 oraz R/W sygnały sterujące ~RD oraz ~WR
konieczne do uzyskiwania dostępu do rejestrów syntezatora. IC3 w tandemie z IC4
tworzą właściwy układ syntezy. Generator QG1 - 14,31818 MHz steruje wszystkimi
procesami zachodzącymi w YMF262+YAC512. Dla uniknięcia stanów nieustalonych
został zbudowany układ zerowania po włączeniu zasilania na elementach D1, R6, C11,R7, do którego został dołożony awaryjny przycisk reset. Wyjście audio L,R jest
doprowadzone do gniazda minijack stereo. Płytka została wykonana jako dwustronna
pod elementy SMD. Uwaga - przelotki są wiercone wiertłem 0,3mm pod lutowanie
cynarem i cały projekt jest ustawiony raczej pod precyzyjne wiercenie. Da się i owszem
wykonać otwory większymi średnicami ale tego raczej nie polecam.

     W układzie mozna zastosować dwa przetworniki YAC512. Sposób podłączenia
sygnałów wraz z konfiguracją kanałów A,B,C,D jest opisany w nocie aplikacyjnej.
Mało praktyczne chyba, że zastosuje się zewnętrzny mixer stereo - wtedy można by
pozycjonować dokładniej instrumenty w bazie stereo. Instrument można przypisać
do jednego z czerech kanałów poprzez ustawienie odpowiednich bitów.

     Sterowanie odbywa się przy pomocy trzech rejestrów - $D500, $D501 i $D502.

Rejestr $D500 - (write) LOW address register - dostęp do dolnej strony rejestrów
Rejestr $D502 - (write) HIGH address register - dostęp do górnej strony rejestrów
Rejestr $D501 - (write) DATA register - rejestr danej zapisywanej.
Rejestr $D500 - (read) STATUS register - odczyt statusu Timerów oraz IRQ.

     Proces odbywa się bardzo prosto. Najpierw wybieramy stronę rejestrów poprzez
wpis numeru rejestru pod adres $D500 albo $D502, a potem wpisujemy dane dla
wybranego rejestru pod adres $D501. Na przykład tak:

10 POKE 54528,32:REM WYBRANY REJESTR DOLNY - ADRES $20
20 POKE 54529,1:REM DO REJESTRU $20 WPISANA WARTOSC 1
...
...
...

Cała reszta zrobi się prawie samodzielnie. W praktyce należy zaprogramować kanały
pożądanymi wartościami dla konkretnych instrumentów, obwiednie, skale, modulacje,
itd. a potem wpisywać wartości nut do kanałów i powodować wyzwolenie nuty poprzez
wpis danej do odpowiedniego rejestru...

    W tym miejscu opis hardware się kończy ponieważ jest to zaskakująco prosty układ.
Całość zmieściłem w obudowie cartridge Z-7 a montaż powierzchniowy pozwolił na
znaczącą miniaturyzację urządzenia. Koszt całości szacuję na około 100PLN.
YMF262+YAC512 można u Chińczyków kupić już za 3.5$ więc można zaszaleć...

Pliki Eagle SCH, BRD - bardzo proszę o edycje w razie potrzeby, zwłaszcza
w przypadku posiadania innych gniazd, przycisków, itp. Przy wykonywaniu
wydruku należy sprawdzić czy drukarka prawidłowo skaluje obraz. Może się
okazać, że wymiary zostały zmienione i PCB pójdzie na śmietnik...

Test:

OPLTEST.BAS - program testujący obecność układu OPL wg oficjalnej procedury

YAMATEST.BAS - program testujący syntezę - link z filmikiem powyżej

Software:

     Niestety - w chwili obecnej brak jakiegokolwiek oprogramowania dla Atari choć mam
nadzieję, że to się zmieni. Poniżej zamieszczam linki do plików z informacjami dla
programistów. Sporo informacji znajduje się także w datasheet YMF262 dokąd warto
zajrzeć.

Programmer's Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer
Programming the AdLib/Sound Blaster FM Music Chips
AdLib - Programming Guide

Poza tym w sieci można znaleźć sporo materiałów na temat programowania AdLib FM.
Na stronie
http://www.adlibtracker.net/ znajdują się bardzo dobre materiały na temat
formatów modułów muzycznych a także kod źródłowy playera (Pascal).

     Docelowo planuję także wykonanie wersji wewnętrznej umieszczonej w wydzielonym
obszarze ponad POKEYami, SIDami i innymi dźwiękowymi rozszerzeniami. W każdym
razie zdecydowanie polecam budowę syntezatora OPL3 oraz życzę dobrej rozrywki chociażby przy pisaniu oprogramowania grającego na tym świetnym układzie...

     W razie pytań zapraszam na forum atari.area - nick toriman1, wątek YAMari.

UPDATE

     Zmieniłem trochę projekt aby cartridge był bardziej uniwersalny i obecnie można DIP
switchem wybrać adres YAMari z obszaru $D5xx od $D500 co $20 bajtów. Poniżej
fotka, schemat, pliki. WAŻNE! DIP switch może mieć włączony tylko jeden obszar
w danej chwili. Nie można ustawiać w pozycję ON więcej niż jednego switcha ponieważ
to może uszkodzić dekoder (zwarcie wyjść w różnych stanach)

Projekt PCB:


Schemat:


Zdjęcie PCB:

     Na zdjęciu widoczny jest DIP switch do ustawiania adresu oraz poniżej dekoder
74LS138 (74HCT138)

PLIKI EAGLE wersja 2

     Sprzętowo jest to wersja finalna YAMari. Najpewniej powstanie wersja wewnętrzna
wpleciona w obszar nad POKEYami i SIDami :) Teraz tylko wypadałoby napisać soft aby
wykorzystać możliwości jakie daje synteza FM - na małym Atari.