Autor zajął się tym projektem przy okazji zabawy komputerem Apple II. Celem tego odtwarzacza jest osiągnięcie takich samych efektów dźwiękowych jakie osiąga się w Apple II. W tym celu wykorzystany został oryginalny układ scalony z serii AY-3-8910/1/2. Układ ten może generować trzy kanały przebiegów prostokątnych oraz nakładać na nie różne efekty, dając bardzo charakterystyczne brzmienie starych komputerów, takich jak Spectrum czy Atari, ale też Apple II. Scena tworząca muzykę na ten układ jest nadal bardzo szeroka, więc układ z pewnością będzie miał co odtwarzać.
Celem projektu jest skonstruowanie odpowiedniego interfejsu dla komputera Raspberry Pi tak aby był on w stanie odtwarzać pliki *.ym na oryginalnym AY-3-8910 podłączonym do systemu. Dodatkowo autor postanowił do układu dodać proste wizualizacje odtwarzanej muzyki oparte o diody LED.
Projekt
Autor nie spodziewał się, że projekt stanie się tak popularny, dlatego stanowczo nie jest to najlepiej opisany projekt. Zazwyczaj przed publikacją układ jest już gotowy w 100%, z własną płytką drukowaną etc. Tutaj nie jest tak elegancko i autor udostępnia tylko dwa odręcznie narysowane schematy ideowe:
Układ AY-3-8910 jest dosyć prosty. Układ ten generuje trzy przebiegi prostokątne oraz szum. Przebiegi te następnie mogą być wzmacniane zgonie z obwiednią itp. Do układy wystarczy podłączyć zegar (w tym przypadku 1 MHz) i można zapisywać do jednego z 16 (a w zasadzie to 14) rejestrów konfiguracyjnych układów. Wystarczy podać adres i 8 bitów danych, aby dokonać zapisu z pomocą trzech linii kontrolujących komunikację. W typowym pliku *.ym, wszystkie 14 rejestrów zapisywanych jest z częstotliwością 50 Hz.
Zamiast układu AY-3-8910 wykorzystać można AY-3-8912 (z tą różnicą że inaczej rozłożone są wyprowadzenia). Główną różnicą pomiędzy układami jest to, że 8910 wyposażony jest w dwa dodatkowe porty GPIO o szerokości 8 bitów.
Do kontroli naszego syntezatora wystarczy tylko 6 wyprowadzeń Raspberry Pi. Trzy wyprowadzenia podłączone są do rejestru przesuwnego 75HC595, który zmienia dane szeregowe w równoległe 8 bit, a trzy kolejne GPIO 'Maliny' sterują całą komunikacją.
Wizualizacja z wykorzystaniem LEDów zrealizowana została w oparciu o wyświetlacze LED kontrolowane poprzez interfejs I²C RPi.
Za syntezatorem znajduje się wzmacniacz (oryginalnie był to najczęściej LM386), który wzmacnia sygnał pochodzący z syntezatora. Auto wykorzystał moduł z Adafruit oznaczony MAX98306, aczkolwiek zamierza go zmienić na inny z uwagi na problemy z działaniem i jakością tego wzmacniacza.
Plany na przyszłość:
* Dobudowanie drugiego kanału (drugi rejestr przesuwny i ukłąd AY-3-8910), aby system działa w stereo.
* Zamontowanie lepszego wzmacniacza niż LM386.
* Zaprojektowanie i wytrawienie PCB.
* Zrobienie obudowy do urządzenia.
* Sterowanie rejestrem przesuwnym poprzez SPI a nie piny GPIO.
* Optymalizacja oprogramowania - nawet pomimo wykorzystania szybkiej biblioteki libbcm2835 ciężko uzyskać częstotliwość zapisu do układu na poziomie wymaganych 50 Hz - być może praca na niskopoziomowym oprogramowaniu z dużym dostępem do sprzętu i systemu operacyjnego by pomogła. Innym rozwiązaniem jest wykorzystanie w pełni równoległego połączenia z syntezatorem, bez potrzeby instalowania rejestru przesuwnego, co jednakże zajęłoby aż 11 pinów GPIO. Póki co Odtwarzanie ChipTune działa lepiej na Apple II z procesorem 6502 taktowanym 1 MHz niż na Raspberry Pi...
* Zacząć tworzyć własne pliki *.ym.
Oprogramowanie
Całe potrzebne oprogramowanie znaleźć można na GitHubie: https://github.com/deater/vmw-meter.git. Wystarczy sklonować repozytorium autora poleceniem w bashu (o ile na Raspberry Pi mamy zainstalowanego gita):
a pliki z oprogramowaniem do syntezatora znajdziemy w folderze ay-3-8910.
Aby zainstalować oprogramowanie i potrzebne biblioteki musimy przejść kilka kroków:
1. Zainstalować bibliotekę bcm2835 - klasyczne, dostępnie w Linuxie porty GPIO nie są dostatecznie szybkie do działania tego układu. Aby zainstalować tą bibliotek musimy wpisać w terminalu:
2. Dalej zainstalować musimy bibliotekę liblhasa-dev, która pozwala nam na odtwarzanie plików um5, skompresowanych z pomocą LHA - wiekszość plików *.ym zapisywanych jest właśnie w ten sposób. Aby zainstalować bibliotekę wystarczy skorzystać z apt-geta:
Ale w sytuacji gdy chcemy ją skompilować od podstaw albo korzystamy z innego systemu niż Debian warto jest zajrzeć do makefile biblioteki i dokonać koniecznych zmian.
Jeśli nie chcemy bądź nie możemy skompilować opisanej biblioteki to zawsze pozostaje nam manualna dekompresja plików *.ym przed odtwarzaniem wykorzystując narzędzie lhasa, jakie powinno być dostępne w systemie. Wystarczy wtedy w terminalu wpisać tylko:
3. Instalujemy program, wpisując w terminalu make w folderze z plikami pobranymi z GitHuba autora Wygeneruje to plik ym_play. Teraz jeśli wpiszemy:
będzie on odtwarzał plik YM_FILE. Inne opcje programu poznać możemy wpisując w terminalu:
W czasie odtwarzania możemy sterować działaniem programu korzystając z następujących skrótów klawiszowych:
(spacja) pauza/odtwarzanie
, przewinięcie utworu do początku
. przewinięcie do przodu o 5 s
< przejście do poprzedniego utworu
> przejście do kolejnego utworu
l zmiana sposob zapętlania obecnej piosenki
r zmiana powtarzania utowó na playliście
m przejście w tryb wyświetlania 8x16
Uwaga!
Kod ten ciągle jest edytowany - daleko mu do finiszu, szczególnie interfejsowi użytkownika). Autor zaprasza do używania go w stanie obecnym, ale należy się spodziewać, że oprogramowanie ulec może sporym zmianom w przyszłości.
Autor intencjonalnie nie udostępnia plików *.ym - są one do znalezienia w sieci, ale czasami ich rozpowszechnianie ograniczone jest prawami autorskimi. Publikować autor projektu zacznie dopiero własne utwory.
Źródło: http://www.deater.net/weave/vmwprod/hardware/ay-3-8910/
Celem projektu jest skonstruowanie odpowiedniego interfejsu dla komputera Raspberry Pi tak aby był on w stanie odtwarzać pliki *.ym na oryginalnym AY-3-8910 podłączonym do systemu. Dodatkowo autor postanowił do układu dodać proste wizualizacje odtwarzanej muzyki oparte o diody LED.
Projekt
Autor nie spodziewał się, że projekt stanie się tak popularny, dlatego stanowczo nie jest to najlepiej opisany projekt. Zazwyczaj przed publikacją układ jest już gotowy w 100%, z własną płytką drukowaną etc. Tutaj nie jest tak elegancko i autor udostępnia tylko dwa odręcznie narysowane schematy ideowe:
Układ AY-3-8910 jest dosyć prosty. Układ ten generuje trzy przebiegi prostokątne oraz szum. Przebiegi te następnie mogą być wzmacniane zgonie z obwiednią itp. Do układy wystarczy podłączyć zegar (w tym przypadku 1 MHz) i można zapisywać do jednego z 16 (a w zasadzie to 14) rejestrów konfiguracyjnych układów. Wystarczy podać adres i 8 bitów danych, aby dokonać zapisu z pomocą trzech linii kontrolujących komunikację. W typowym pliku *.ym, wszystkie 14 rejestrów zapisywanych jest z częstotliwością 50 Hz.
Zamiast układu AY-3-8910 wykorzystać można AY-3-8912 (z tą różnicą że inaczej rozłożone są wyprowadzenia). Główną różnicą pomiędzy układami jest to, że 8910 wyposażony jest w dwa dodatkowe porty GPIO o szerokości 8 bitów.
Do kontroli naszego syntezatora wystarczy tylko 6 wyprowadzeń Raspberry Pi. Trzy wyprowadzenia podłączone są do rejestru przesuwnego 75HC595, który zmienia dane szeregowe w równoległe 8 bit, a trzy kolejne GPIO 'Maliny' sterują całą komunikacją.
Wizualizacja z wykorzystaniem LEDów zrealizowana została w oparciu o wyświetlacze LED kontrolowane poprzez interfejs I²C RPi.
Za syntezatorem znajduje się wzmacniacz (oryginalnie był to najczęściej LM386), który wzmacnia sygnał pochodzący z syntezatora. Auto wykorzystał moduł z Adafruit oznaczony MAX98306, aczkolwiek zamierza go zmienić na inny z uwagi na problemy z działaniem i jakością tego wzmacniacza.
Plany na przyszłość:
* Dobudowanie drugiego kanału (drugi rejestr przesuwny i ukłąd AY-3-8910), aby system działa w stereo.
* Zamontowanie lepszego wzmacniacza niż LM386.
* Zaprojektowanie i wytrawienie PCB.
* Zrobienie obudowy do urządzenia.
* Sterowanie rejestrem przesuwnym poprzez SPI a nie piny GPIO.
* Optymalizacja oprogramowania - nawet pomimo wykorzystania szybkiej biblioteki libbcm2835 ciężko uzyskać częstotliwość zapisu do układu na poziomie wymaganych 50 Hz - być może praca na niskopoziomowym oprogramowaniu z dużym dostępem do sprzętu i systemu operacyjnego by pomogła. Innym rozwiązaniem jest wykorzystanie w pełni równoległego połączenia z syntezatorem, bez potrzeby instalowania rejestru przesuwnego, co jednakże zajęłoby aż 11 pinów GPIO. Póki co Odtwarzanie ChipTune działa lepiej na Apple II z procesorem 6502 taktowanym 1 MHz niż na Raspberry Pi...
* Zacząć tworzyć własne pliki *.ym.
Oprogramowanie
Całe potrzebne oprogramowanie znaleźć można na GitHubie: https://github.com/deater/vmw-meter.git. Wystarczy sklonować repozytorium autora poleceniem w bashu (o ile na Raspberry Pi mamy zainstalowanego gita):
Kod: Bash
a pliki z oprogramowaniem do syntezatora znajdziemy w folderze ay-3-8910.
Aby zainstalować oprogramowanie i potrzebne biblioteki musimy przejść kilka kroków:
1. Zainstalować bibliotekę bcm2835 - klasyczne, dostępnie w Linuxie porty GPIO nie są dostatecznie szybkie do działania tego układu. Aby zainstalować tą bibliotek musimy wpisać w terminalu:
Kod: Bash
2. Dalej zainstalować musimy bibliotekę liblhasa-dev, która pozwala nam na odtwarzanie plików um5, skompresowanych z pomocą LHA - wiekszość plików *.ym zapisywanych jest właśnie w ten sposób. Aby zainstalować bibliotekę wystarczy skorzystać z apt-geta:
Kod: Bash
Ale w sytuacji gdy chcemy ją skompilować od podstaw albo korzystamy z innego systemu niż Debian warto jest zajrzeć do makefile biblioteki i dokonać koniecznych zmian.
Jeśli nie chcemy bądź nie możemy skompilować opisanej biblioteki to zawsze pozostaje nam manualna dekompresja plików *.ym przed odtwarzaniem wykorzystując narzędzie lhasa, jakie powinno być dostępne w systemie. Wystarczy wtedy w terminalu wpisać tylko:
Kod: Bash
3. Instalujemy program, wpisując w terminalu make w folderze z plikami pobranymi z GitHuba autora Wygeneruje to plik ym_play. Teraz jeśli wpiszemy:
Kod: Bash
będzie on odtwarzał plik YM_FILE. Inne opcje programu poznać możemy wpisując w terminalu:
Kod: Bash
W czasie odtwarzania możemy sterować działaniem programu korzystając z następujących skrótów klawiszowych:
(spacja) pauza/odtwarzanie
, przewinięcie utworu do początku
. przewinięcie do przodu o 5 s
< przejście do poprzedniego utworu
> przejście do kolejnego utworu
l zmiana sposob zapętlania obecnej piosenki
r zmiana powtarzania utowó na playliście
m przejście w tryb wyświetlania 8x16
Uwaga!
Kod ten ciągle jest edytowany - daleko mu do finiszu, szczególnie interfejsowi użytkownika). Autor zaprasza do używania go w stanie obecnym, ale należy się spodziewać, że oprogramowanie ulec może sporym zmianom w przyszłości.
Autor intencjonalnie nie udostępnia plików *.ym - są one do znalezienia w sieci, ale czasami ich rozpowszechnianie ograniczone jest prawami autorskimi. Publikować autor projektu zacznie dopiero własne utwory.
Źródło: http://www.deater.net/weave/vmwprod/hardware/ay-3-8910/
Fajne? Ranking DIY
