OUT 5 に圧電サウンダを接続して、PWMで音を鳴らします。
曲が長いので2分割しています。
事前にSAVEファイル番号で保存場所を指定しておきます
テンポ・音符の長さはL=で1/60秒を単位として設定します。
N=は音を区切るための無音の時間 P=パルス幅の%
CDEFGAB は音符 cdfgaは半音高い音符
-で音を伸ばします。_は休符
<=> でオクターブ O=10 20 40 を指定します。
演奏中にエンターを押すとOUT5,0で音を止めて終了します。
- NEW
- F=FILE()
- 10 'アカハナノトナカイー1
- 20 CLS:PRINT "アカハナノトナカイ"
- 30 L=6:N=2:P=50:O=20
- 40 M="G_AGE->C-=A-G-----":GSB@PL
- 50 M="GAGAG->C-=B-------":GSB@PL
- 60 M="FG_FD-B-A-G-----":GSB@PL
- 70 M="GAGAG-A-E-------":GSB@PL
- 80 M="GA_GE->C-=A-G-----":GSB@PL
- 90 M="GAGAG->C-=B-------":GSB@PL
- 100 M="F-GFD-B-A-G-----":GSB@PL
- 110 M="GAGAG->D-C-------":GSB@PL
- 120 LRUNFILE()+1
- 130 @PL:I=0
- 140 @RD:C=PEEK(M+I):I=I+1:F=0
- 150 IFC=34OUT5,0:RTN
- 160 IFC=60O=10
- 170 IFC=61O=20
- 180 IFC=62O=40
- 190 IFC=95GSB@RE
- 200 IFC=45GSB@WT
- 210 IFC=67F=3822
- 220 IFC=99F=3608
- 230 IFC=68F=3405
- 240 IFC=100F=3214
- 250 IFC=69F=3034
- 260 IFC=70F=2863
- 270 IFC=102F=2703
- 280 IFC=71F=2551
- 290 IFC=103F=2408
- 300 IFC=65F=2273
- 310 IFC=97F=2145
- 320 IFC=66F=2025
- 330 IFF>0GSB@NT
- 340 GOTO@RD
- 350 @RE:OUT5,0:WAITL:GSB@P:RTN
- 360 @NT:F=F/O:PWM5,F*P/100,F
- 370 @WT:WAITL-N:IFPEEK(M+I)<>45OUT5,0
- 380 WAITN:GSB@P:RTN
- 400 @P:IFINKEY()=10OUT5,0:END:ELSERTN
- SAVE
- NEW
- 10 'アカハナノトナカイー2
- 40 M="=A-A->C-=A-G-EG----":GSB@PL
- 50 M="F-A-G-F-E-------":GSB@PL
- 60 M="D-E-G-A-B-B-B---":GSB@PL
- 70 M=">C-C-=B-A-G-FD----":GSB@PL
- 80 M="GA_GE->C-=A-G-----":GSB@PL
- 90 M="GAGAG->C-=B-------":GSB@PL
- 100 M="FG-FD-B-A-G-----":GSB@PL
- 110 M="GAGAG->D-C-------":GSB@PL
- 120 END
- 130 @PL:I=0
- 140 @RD:C=PEEK(M+I):I=I+1:F=0
- 150 IFC=34OUT5,0:RTN
- 160 IFC=60O=10
- 170 IFC=61O=20
- 180 IFC=62O=40
- 190 IFC=95GSB@RE
- 200 IFC=45GSB@WT
- 210 IFC=67F=3822
- 220 IFC=99F=3608
- 230 IFC=68F=3405
- 240 IFC=100F=3214
- 250 IFC=69F=3034
- 260 IFC=70F=2863
- 270 IFC=102F=2703
- 280 IFC=71F=2551
- 290 IFC=103F=2408
- 300 IFC=65F=2273
- 310 IFC=97F=2145
- 320 IFC=66F=2025
- 330 IFF>0GSB@NT
- 340 GOTO@RD
- 350 @RE:OUT5,0:WAITL:GSB@P:RTN
- 360 @NT:F=F/O:PWM5,F*P/100,F
- 370 @WT:WAITL-N:IFPEEK(M+I)<>45OUT5,0
- 380 WAITN:GSB@P:RTN
- 400 @P:IFINKEY()=10OUT5,0:END:ELSERTN
- SAVEFILE()+1
- LRUNFILE()-1