Sugerowałbym, że nawet jeśli chcesz zastosować analogowe stopnie filtrujące (mogą one dać dźwiękowi ciepło, które trudno jest osiągnąć innymi sposobami), dobrym pomysłem może być wygenerowanie początkowych przebiegów cyfrowo. Wiele automatów arkadowych Williamsa z lat osiemdziesiątych generuje dźwięk za pomocą płyty zawierającej mikroprocesor 6800, niewielką ilość pamięci RAM i ROM oraz trochę I / O, w tym DAC. Wszystkie efekty dźwiękowe zostały wygenerowane przy użyciu ciasnych pętli programowych, które wygenerowały próbki i doprowadziły je do przetwornika. Ponieważ procesor był używany wyłącznie do generowania dźwięku, do wykonania taktowania można wykorzystać szybkość wykonywania pętli.
W praktyce nawet najprostsze mikrokontrolery mają jakiś zasób timera, który może być pomocny, jeśli chcesz mieć możliwość zmiany parametrów audio podczas odtwarzania dźwięków. Używając czegoś takiego jak kod 6805, można zacząć od napisania procedury głosowania dla każdego głosu; dla szybkości te procedury będą żyły w pamięci RAM - coś w stylu:
ankieta1:
brclr TMR_CONTROL, TMR_READY, ankieta; Poczekaj na rozpoczęcie następnego „tyka”
bclr TMR_CONTROL, TMR_READY
FRQ1L: lda #PATCH
PH1L: dodaj #PATCH
sta PH1L + 1; Wartość poprawki dla LSB fazy
FRQ1M: lda #PATCH
PH1M: dodaj #PATCH
sta PH1M + 1; Kod poprawki
FRQ1H: lda #PATCH
PH1H: dodaj #PATCH
sta PH1H + 1; Kod poprawki
STA FETCH + 2; Łata LSB celu
FETCH: lda TABLE_BASE; 16-bitowy adres
clr DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
sta DAC_ENABLES
rts
Następnie miałaby główną pętlę, która wielokrotnie wywoływałaby procedurę odpytywania dla każdego głosu w sekwencji i, między połączeniami, wykonywałaby każdą inną logikę, którą należało zrobić (np. Sprawdzając, czy jakieś parametry głosu wymagają aktualizacji). Korzystając z tego podejścia, możliwe jest zaktualizowanie sporej liczby głosów przy wysokiej częstotliwości próbkowania.
Chociaż generowanie fali początkowej jest możliwe całkowicie przy użyciu obwodów analogowych, trudno jest mieć wiele niezależnych generatorów analogowych, których charakterystyka częstotliwości jest absolutnie identyczna w ułamku procentu. Ludzkie ucho jest bardzo wrażliwe na zmiany wysokości - o wiele bardziej niż na zmiany amplitudy - więc wszystko, co jest wykorzystywane do generowania sygnału, musi być bardzo spójne. Użycie prostego mikrokontrolera jako punktu wyjścia jest dobrym sposobem na uzyskanie takiej spójności, nawet jeśli następnie doprowadza on generowany sygnał przez analogowe obwody kształtujące.