しかし、このBEEPをマシン語などで高速にON・OFFすると、なぜかそのON・OFFの周波数に合わせた音階が聞こえるのでした。
このテクニックを1歩進めることで、単音だけでなく、2重和音・3重和音も演奏できるようになります。
その方法とは、「複数ののON・OFFの波を並行して処理する」というものです。例えば2重和音だったら、異なった周波数の2つの波を考え、両方ともONのときはずっとON、両方ともOFFだったらずっとOFF、片方がONで片方がOFFだったらONとOFFを交互に実行、とします。
この簡単な処理で、PC-8001に夢の2重和音・3重和音を演奏させることができます。なお、DMAをストップさせておかないと、和音に聞こえないので注意。(DMAが機能していると、画面の転送時に処理速度が乱れるので、音が汚くなります。)
プログラム例
[BFE0=第1音、BFE1=第2音、BFE2=第3音、BFE3,4=長さ、BFE5,6,7=&h20、 BFE8,9,A=第1〜3音のコピー]として、このルーチンをCALLすると音が出ます。
ccc: LD IX,BFE0h LD DE,BFE5h LD HL,BFE8h LD B,3 bbb: LD A,(DE) OUT 40,A LD C,(HL) DEC C LD (HL),C JR NZ,ccc XOR 20h LD (DE),A LD A,(IX+0) LD (HL),A CP 0 JR NZ,aaa LD A,0 LD (DE),A aaa: INC HL INC DE INC IX DJNZ bbb LD HL,(BFE3h) DEC HL LD (BFE3h),HL LD A,H CP FFh JR NZ,ccc RET