Je suggère que même si vous souhaitez utiliser des étages de filtrage analogiques (ils peuvent donner au son une chaleur qui peut être difficile à obtenir via d'autres moyens), il peut être judicieux de générer les formes d'onde de départ numériquement. De nombreuses machines d'arcade Williams dans les années 80 génèrent du son à l'aide d'une carte qui contenait un microprocesseur 6800, une petite quantité de RAM et de ROM et un peu d'E / S, y compris un DAC. Tous les effets sonores ont été générés à l'aide de boucles de programme serrées qui ont généré des échantillons et les ont transmis au CAD. Étant donné que le processeur n'était utilisé que pour la génération de sons, la vitesse d'exécution de la boucle pouvait être utilisée pour le chronométrage.
En pratique, même les microcontrôleurs les plus simples ont une sorte de ressource de minuterie, ce qui pourrait être utile si vous voulez pouvoir changer les paramètres audio pendant la lecture des sons. En utilisant quelque chose comme le code 6805, on commencerait par écrire une routine de sondage pour chaque voix; pour la vitesse, ces routines vivraient dans la RAM - quelque chose comme:
poll1:
brclr TMR_CONTROL, TMR_READY, poll; Attendez le début du prochain "tick"
bclr TMR_CONTROL, TMR_READY
FRQ1L: lda #PATCH
PH1L: ajoutez #PATCH
sta PH1L + 1; Valeur de patch pour LSB de phase
FRQ1M: lda #PATCH
PH1M: ajoutez #PATCH
sta PH1M + 1; Code de patch
FRQ1H: lda #PATCH
PH1H: ajoutez #PATCH
sta PH1H + 1; Code de patch
sta FETCH + 2; Patch LSB de la cible
FETCH: lda TABLE_BASE; Adresse 16 bits
clr DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
sta DAC_ENABLES
rts
Ensuite, on aurait une boucle principale qui appellerait à plusieurs reprises la routine d'interrogation pour chaque voix en séquence et, entre les appels, effectuerait toute autre logique à faire (par exemple, voir si des paramètres vocaux devaient être mis à jour). En utilisant cette approche, il est possible de mettre à jour un bon nombre de voix avec un taux d'échantillonnage élevé.
Bien qu'il soit possible de faire la génération d'ondes initiale entièrement à l'aide de circuits analogiques, il est difficile d'avoir plusieurs générateurs analogiques indépendants dont les caractéristiques de fréquence sont absolument identiques dans une fraction de pour cent. L'oreille humaine est très sensible aux variations de hauteur - bien plus qu'aux variations d'amplitude - donc tout ce qui est utilisé pour la génération du signal doit être très cohérent. L'utilisation d'un simple microcontrôleur comme point de départ est un bon moyen d'obtenir une telle cohérence, même si l'on alimente ensuite le signal généré via des circuits de mise en forme analogique.