Vorrei suggerire che anche se si desidera utilizzare stadi di filtraggio analogici (possono dare al suono un calore che può essere difficile da raggiungere con altri mezzi), potrebbe essere una buona idea generare digitalmente le forme d'onda di partenza. Molte macchine arcade della Williams negli anni '80 generano suono usando una scheda che conteneva un microprocessore 6800, una piccola quantità di RAM e ROM e un po 'di I / O incluso un DAC. Tutti gli effetti sonori sono stati generati utilizzando loop di programma ristretti che hanno generato campioni e li hanno inviati al DAC. Dal momento che il processore non veniva utilizzato per nient'altro che la generazione del suono, la velocità di esecuzione del loop poteva essere utilizzata per il timing.
In pratica, anche i microcontrollori più semplici dispongono di una sorta di risorsa timer, che potrebbe essere utile se si desidera essere in grado di modificare i parametri audio durante la riproduzione dei suoni. Usando qualcosa come il codice 6805, si inizia scrivendo una routine di sondaggio per ogni voce; per velocità queste routine vivrebbero nella RAM - qualcosa del tipo:
poll1:
brclr TMR_CONTROL, TMR_READY, sondaggio; Attendi l'inizio della prossima "spunta"
bclr TMR_CONTROL, TMR_READY
FRQ1L: lda #PATCH
PH1L: aggiungi #PATCH
sta PH1L + 1; Valore patch per LSB di fase
FRQ1M: lda #PATCH
PH1M: aggiungi #PATCH
sta PH1M + 1; Codice patch
FRQ1H: lda #PATCH
PH1H: aggiungi #PATCH
sta PH1H + 1; Codice patch
sta FETCH + 2; Patch LSB del bersaglio
FETCH: lda TABLE_BASE; Indirizzo a 16 bit
clr DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
sta DAC_ENABLES
rts
Successivamente, si avrebbe un loop principale che chiamerebbe ripetutamente la routine di polling per ciascuna voce in sequenza e, tra le chiamate, eseguirà qualsiasi altra logica necessaria (ad es. Vedere se è necessario aggiornare eventuali parametri vocali). Utilizzando questo approccio, è possibile aggiornare un discreto numero di voci con una frequenza di campionamento elevata.
Sebbene sia possibile eseguire interamente la generazione di onde iniziali utilizzando circuiti analogici, è difficile avere più generatori analogici indipendenti le cui caratteristiche di frequenza siano assolutamente identiche in una frazione di percentuale. L'orecchio umano è molto sensibile alle variazioni di tonalità - molto più che alle variazioni di ampiezza - quindi tutto ciò che viene utilizzato per la generazione del segnale deve essere molto coerente. L'uso di un semplice microcontrollore come punto di partenza è un buon modo per ottenere tale coerenza, anche se uno quindi alimenta il segnale generato attraverso circuiti di modellatura analogici.