ฉันขอแนะนำว่าแม้ว่าคุณต้องการใช้ขั้นตอนการกรองแบบอะนาล็อก (พวกเขาสามารถให้ความอบอุ่นที่ยากที่จะบรรลุด้วยวิธีอื่น) มันอาจเป็นความคิดที่ดีที่จะสร้างรูปคลื่นเริ่มต้นในรูปแบบดิจิทัล เครื่องอาร์เคดอิเล็กทรอนิกส์ของวิลเลียมส์หลายแห่งในปี 1980 สร้างเสียงโดยใช้บอร์ดที่มีไมโครโปรเซสเซอร์ 6800, RAM และ ROM จำนวนเล็กน้อยและ I / O เล็กน้อยรวมถึง DAC เอฟเฟกต์เสียงทั้งหมดถูกสร้างขึ้นโดยใช้ลูปโปรแกรมที่แน่นซึ่งสร้างตัวอย่างและป้อนเข้า DAC เนื่องจากตัวประมวลผลไม่ได้ใช้อะไรนอกจากการสร้างเสียงจึงสามารถใช้ความเร็วในการประมวลผลแบบวนซ้ำได้ตามกำหนดเวลา
ในทางปฏิบัติแม้แต่คอนโทรลเลอร์ไมโครคอนโทรลเลอร์ที่ง่ายที่สุดก็มีทรัพยากรตัวจับเวลาบางประเภทซึ่งอาจมีประโยชน์หากคุณต้องการเปลี่ยนพารามิเตอร์เสียงในขณะที่เล่นเสียง การใช้บางอย่างเช่นรหัส 6805 จะเริ่มต้นด้วยการเขียนขั้นตอนการสำรวจความคิดเห็นสำหรับแต่ละเสียง สำหรับความเร็วการปฏิบัติเหล่านี้จะอยู่ใน RAM - สิ่งที่ชอบ:
poll1:
brclr TMR_CONTROL, TMR_READY, แบบสำรวจ; รอการเริ่มต้นของ 'ติ๊ก' ถัดไป
bclr TMR_CONTROL, TMR_READY
FRQ1L: lda #PATCH
PH1L: เพิ่ม #PATCH
sta PH1L + 1; ค่า Patch สำหรับ LSB ของเฟส
FRQ1M: lda #PATCH
PH1M: เพิ่ม #PATCH
sta PH1M + 1; รหัสโปรแกรมแก้ไข
FRQ1H: lda #PATCH
PH1H: เพิ่ม #PATCH
sta PH1H + 1; รหัสโปรแกรมแก้ไข
sta FETCH + 2; Patch LSB ของเป้าหมาย
FETCH: lda TABLE_BASE; ที่อยู่ 16 บิต
clr DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
sta DAC_ENABLES
RTS
ถัดไปจะมีลูปหลักซึ่งจะเรียกรูทีนการสำรวจซ้ำสำหรับแต่ละเสียงตามลำดับและระหว่างการโทรให้ดำเนินการตามตรรกะอื่น ๆ ที่ต้องทำ (เช่นการดูว่าจำเป็นต้องมีการปรับปรุงพารามิเตอร์เสียงใด) การใช้วิธีการนี้เป็นไปได้ที่จะอัปเดตจำนวนเสียงที่เป็นธรรมด้วยอัตราตัวอย่างสูง
ในขณะที่เป็นไปได้ที่จะสร้างคลื่นเริ่มต้นทั้งหมดโดยใช้วงจรอนาล็อกมันเป็นเรื่องยากที่จะมีเครื่องกำเนิดไฟฟ้าแบบอะนาล็อกอิสระหลายตัวที่มีลักษณะความถี่เหมือนกันภายในเสี้ยวหนึ่งเปอร์เซ็นต์ หูของมนุษย์นั้นไวต่อการเปลี่ยนแปลงระดับเสียงมากไปกว่าการเปลี่ยนแปลงความกว้างดังนั้นสิ่งที่ใช้ในการสร้างสัญญาณจะต้องสอดคล้องกันมาก การใช้ไมโครคอนโทรลเลอร์อย่างง่ายเป็นจุดเริ่มต้นเป็นวิธีที่ดีในการรับความสอดคล้องเช่นนั้นแม้ว่าจะส่งสัญญาณที่สร้างผ่านวงจรอนาล็อกรูปร่าง