マイクをフーフー吹いて鳴らすオカリナ
4穴オカリナの運指でドレミファソラシドの8音を鳴らします。
PWMを使い、正確な平均律で鳴ります。
タクトスイッチはOUT1,2,3,4 を IN 5,6,7,8 に設定して使用
BTNをANA(9)として用いて、マイクの出力からアナログ値を得ています。
音が入力されると、0~1024の数値が、無音では500前後の数値が得られるので、3回分を合計して判定しています。
リストの ~16進数はPCで表示できない●○です。
10 'IchiRina 20 FORI=1TO4:OUTI,-1:NEXT 30 LET[0],191,170,152,143,128,114,101,96 40 CLS:LC5,0:?"IchiRina" 50 LC5,3:?"~E9 ~E9 ~E9 ~E8 ~E9 ~E9 ~E9 ~E8" 60 LC5,4:?" ド レ ミ ファ" 70 LC5,5:?"~E9 ~E9 ~E9 ~E9 ~E9 ~E8 ~E9 ~E8" 80 LC5,9:?"~E8 ~E8 ~E8 ~E8 ~E8 ~E9 ~E8 ~E8" 90 LC5,10:?" ソ ラ シ ド" 100 LC5,11:?"~E9 ~E9 ~E9 ~E8 ~E8 ~E8 ~E8 ~E8" 110 @LP 120 D=!IN(5)+!IN(6)*2+!IN(7)*4+!IN(8)*8 130 IFD=15E=0 140 IFD=14E=1 150 IFD=13E=2 160 IFD=12E=3 170 IFD=10E=4 180 IFD=8E=5 190 IFD=1E=6 200 IFD=0E=7 210 V=ABS(ANA(9)-500):C=B:B=A:A=V:V=A+B+C 220 IF(F=0)AND(V>800)PWM5,[E]/2,[E]:F=1 230 IF(F=1)AND(V<300)OUT5,0:F=0 240 GOTO@LP