
Witam ponownie. Chciałbym wam przedstawić projekt który rozwijałem przez ostanie pół roku. Jest on "rozwinięciem" mojej poprzedniej konstrukcji (https://www.elektroda.pl/rtvforum/topic2198222.html)
Tym razem na warsztat wziąłem 17-letnią kartę AWE64 (swoją drogą jest ona tak samo stara jak ja). Kupiłem ją na Allegro za 20 zł zachęcony lepszymi parametrami takimi jak cyfrowe wyjście czy wyższa częstotliwość próbkowania ale niestety są one nieco oszukane bo dotyczą one tylko wbudowanej syntezy wavetable. Nie czekając zbyt długo podłączyłem nowy sprzęt pod µC i tutaj spotkał mnie pierwszy problem. Poprzednia karta była konfigurowana zworkami, ta posiadała tylko jedną. Okazało się, że jej zasoby ustawiane są za pomocą oprogramowania. Po napisaniu funkcji konfigurujących rejestry PnP karta zaczęła działać. No ale po cóż mi ta lepsza karta skoro robi to samo co poprzednia. Postanowiłem ogarnąć układ EMU8000, który to jest syntezą wavetable czego efektem jest ten projekt.
Pokrótce opiszę co robi to urządzenie: Mikrokontroler po uruchomieniu konfiguruje kartę, ustawia standardowe ustawienia, wczytuje informacje o próbkach z pliku SoundFont i ładuje próbki do pamięci DRAM karty dźwiękowej. W pętli głównej program odbiera komunikaty MIDI przez USB lub jeden z portów UART, przekazuje parametry do odpowiednich funkcji odpowiedzialnych za kontrolę dźwięku (note on, off, odstrojenie, zmiana instrumentu, itp.). Dodatkowo przez USB możliwa jest kontrola miksera, zmiana typu efektów reverb i chorus czy też modyfikacja parametrów kanałów (na razie nie jest to oprogramowane). Do wspomnianej kontroli "napisałem" w Qt mały program. Dzięki temu mogę w wygodny sposób zmieniać ustawienia.
W części sprzętowej zastosowałem złącze ISA, dodałem bufory 74HCT245 i zatrzaski 74HCT573. Pozwoliło mi to oszczędzić 16 wyjść mikrokontrolera.







Wszelkie źródła znajdują się na moim GitHubie:
https://github.com/Polprzewodnikowy/emu8000_synth_usb
https://github.com/Polprzewodnikowy/SynthControl
Próbka dźwięku tutaj:
https://soundcloud.com/korgeaux/timezjg
Cool? Ranking DIY