아날로그 필터링 단계를 사용하려는 경우에도 (다른 방법으로는 달성하기 어려운 따뜻한 소리를 줄 수 있음) 시작 파형을 디지털 방식으로 생성하는 것이 좋습니다. 1980 년대 많은 윌리엄스 일렉트로닉스 아케이드 머신은 6800 마이크로 프로세서, 소량의 RAM 및 ROM, DAC를 포함한 약간의 I / O를 포함하는 보드를 사용하여 사운드를 생성합니다. 모든 음향 효과는 샘플을 생성하고 DAC에 공급하는 엄격한 프로그램 루프를 사용하여 생성되었습니다. 프로세서는 사운드 생성에만 사용 되었기 때문에 타이밍에 루프 실행 속도를 사용할 수 있습니다.
실제로 가장 간단한 마이크로 컨트롤러에도 일종의 타이머 리소스가있어 사운드를 재생하는 동안 오디오 매개 변수를 변경하려는 경우 유용 할 수 있습니다. 6805 코드와 같은 것을 사용하면 각 음성에 대한 폴 루틴을 작성하는 것으로 시작합니다. 속도를 위해 이러한 루틴은 다음과 같은 RAM에 있습니다.
poll1 :
brclr TMR_CONTROL, TMR_READY, 폴; 다음 '틱'의 시작을 기다립니다
bclr TMR_CONTROL, TMR_READY
FRQ1L : lda # 패치
PH1L : # 패치 추가
sta PH1L + 1; 위상의 LSB에 대한 패치 값
FRQ1M : lda # 패치
PH1M : # 패치 추가
sta PH1M + 1; 패치 코드
FRQ1H : lda # 패치
PH1H : # 패치 추가
sta PH1H + 1; 패치 코드
sta FETCH + 2; 대상의 패치 LSB
FETCH : lda TABLE_BASE; 16 비트 주소
clr DAC_ENABLES
sta DAC_OUTPUT
lda # ENABLE_1
sta DAC_ENABLES
rts
다음으로, 각각의 음성에 대해 폴 루틴을 반복적으로 호출하는 메인 루프가 있으며, 호출 사이에 다른 로직을 수행해야합니다 (예 : 음성 파라미터를 업데이트해야하는지 확인). 이 방법을 사용하면 샘플링 속도가 높은 상당한 수의 음성을 업데이트 할 수 있습니다.
아날로그 회로를 사용하여 초기 파 생성을 수행 할 수는 있지만, 주파수 특성이 몇 퍼센트 내에서 완전히 동일한 여러 개의 독립적 인 아날로그 발생기를 갖는 것은 어렵습니다. 사람의 귀는 진폭의 변화보다 피치의 변화에 매우 민감하므로 신호 생성에 사용되는 것은 매우 일관되어야합니다. 간단한 마이크로 컨트롤러를 시작점으로 사용하면 아날로그 쉐이핑 회로를 통해 생성 된 신호를 공급하더라도 이러한 일관성을 얻는 좋은 방법입니다.