Eu sugeriria que, mesmo que você queira usar os estágios de filtragem analógica (eles podem fornecer um som que pode ser difícil de alcançar por outros meios), pode ser uma boa ideia gerar as formas de onda iniciais digitalmente. Muitas máquinas de arcade da Williams, na década de 1980, geram som usando uma placa que continha um microprocessador 6800, uma pequena quantidade de RAM e ROM e um pouco de E / S, incluindo um DAC. Todos os efeitos sonoros foram gerados usando loops apertados de programa, que geraram amostras e as alimentaram com o DAC. Como o processador foi usado apenas para geração de som, a velocidade de execução do loop pode ser usada para cronometrar.
Na prática, mesmo os microcontroladores mais simples possuem algum tipo de recurso de timer, o que pode ser útil se você quiser alterar os parâmetros de áudio enquanto reproduz sons. Usando algo como o código 6805, começamos escrevendo uma rotina de pesquisa para cada voz; para velocidade, essas rotinas viveriam na RAM - algo como:
poll1:
brclr TMR_CONTROL, TMR_READY, pesquisa; Aguarde o início do próximo 'tick'
bclr TMR_CONTROL, TMR_READY
FRQ1L: lda #PATCH
PH1L: adicione #PATCH
sta PH1L + 1; Valor do patch para LSB da fase
FRQ1M: lda #PATCH
PH1M: adicione #PATCH
sta PH1M + 1; Código de correção
FRQ1H: lda #PATCH
PH1H: adicione #PATCH
sta PH1H + 1; Código de correção
sta FETCH + 2; Patch LSB do destino
FETCH: lda TABLE_BASE; Endereço de 16 bits
clr DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
sta DAC_ENABLES
rts
Em seguida, haveria um loop principal que chamaria repetidamente a rotina de pesquisa para cada voz em sequência e, entre as chamadas, executaria qualquer outra lógica necessária (por exemplo, ver se algum parâmetro de voz precisava ser atualizado). Usando essa abordagem, é possível atualizar um número razoável de vozes com uma alta taxa de amostragem.
Embora seja possível fazer a geração inicial de ondas inteiramente usando circuitos analógicos, é difícil ter vários geradores analógicos independentes cujas características de frequência são absolutamente idênticas em uma fração de um por cento. O ouvido humano é muito sensível a variações de afinação - muito mais do que a variações de amplitude -, portanto, o que for usado para geração de sinal deve ser muito consistente. Usar um microcontrolador simples como ponto de partida é uma boa maneira de obter essa consistência, mesmo que se alimente o sinal gerado por meio de circuitos analógicos de modelagem.