Saya akan menyarankan bahwa bahkan jika Anda ingin menggunakan tahap penyaringan analog (mereka dapat memberikan kehangatan suara yang bisa sulit dicapai melalui cara lain) mungkin merupakan ide yang baik untuk menghasilkan bentuk gelombang awal secara digital. Banyak mesin arcade Elektronik Williams pada 1980-an menghasilkan suara menggunakan papan yang berisi 6800 mikroprosesor, sejumlah kecil RAM dan ROM, dan sedikit I / O termasuk DAC. Semua efek suara dihasilkan menggunakan loop program ketat yang menghasilkan sampel dan diumpankan ke DAC. Karena prosesor digunakan untuk menghasilkan suara, kecepatan eksekusi loop dapat digunakan untuk pengaturan waktu.
Dalam praktiknya, mikrokontroler yang paling sederhana pun memiliki semacam sumber daya pengatur waktu, yang dapat membantu jika Anda ingin dapat mengubah parameter audio saat memutar suara. Menggunakan sesuatu seperti kode 6805, orang akan mulai dengan menulis jajak pendapat rutin untuk setiap suara; untuk kecepatan rutin ini akan hidup dalam RAM - sesuatu seperti:
poll1:
brclr TMR_CONTROL, TMR_READY, polling; Tunggu dimulainya 'centang' berikutnya
bclr TMR_CONTROL, TMR_READY
FRQ1L: lda #PATCH
PH1L: tambahkan #PATCH
staf PH1L + 1; Nilai patch untuk LSB fase
FRQ1M: lda #PATCH
PH1M: tambahkan #PATCH
PH1M + 1; Kode tambalan
FRQ1H: lda #PATCH
PH1H: tambahkan #PATCH
staf PH1H + 1; Kode tambalan
FETCH + 2; Menambal LSB target
FETCH: lda TABLE_BASE; Alamat 16-bit
CLR DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
staf DAC_ENABLES
rts
Selanjutnya, seseorang akan memiliki loop utama yang akan berulang kali memanggil polling rutin untuk setiap suara secara berurutan dan, di antara panggilan, melakukan apa pun logika lain yang perlu dilakukan (misalnya melihat apakah ada parameter suara yang perlu diperbarui). Dengan menggunakan pendekatan ini, dimungkinkan untuk memperbarui sejumlah suara dengan tingkat sampel yang tinggi.
Meskipun dimungkinkan untuk melakukan pembangkitan gelombang awal sepenuhnya menggunakan sirkuit analog, sulit untuk memiliki beberapa generator analog independen yang karakteristik frekuensinya benar-benar identik dalam sepersekian persen. Telinga manusia sangat sensitif terhadap variasi nada - jauh lebih banyak daripada variasi amplitudo - sehingga apa pun yang digunakan untuk pembangkitan sinyal harus sangat konsisten. Menggunakan mikrokontroler sederhana sebagai titik awal adalah cara yang baik untuk mendapatkan konsistensi seperti itu, bahkan jika seseorang kemudian memberi makan sinyal yang dihasilkan melalui sirkuit pembentukan analog.