Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2018/11/28 18:31:06

MixJuice GET URL : kidspod.club/mj/677

赤鼻のトナカイ PWM_MUSIC

OUT 5 に圧電サウンダを接続して、PWMで音を鳴らします。
曲が長いので2分割しています。
事前にSAVEファイル番号で保存場所を指定しておきます

テンポ・音符の長さはL=で1/60秒を単位として設定します。
N=は音を区切るための無音の時間 P=パルス幅の%

CDEFGAB は音符 cdfgaは半音高い音符
-で音を伸ばします。_は休符
<=> でオクターブ O=10 20 40 を指定します。

演奏中にエンターを押すとOUT5,0で音を止めて終了します。

SOURCE CODE

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

COMMENT