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

2019/08/25 12:31:34

MixJuice GET URL : kidspod.club/mj/895

MML PLAY MMLを入力してPWMで演奏

鍵盤を描いている表示できないキャラクタは ~16進コードになっています。
OUT5に圧電サウンダを接続し、PWM命令で音を鳴らします。

演奏
CDEFGABH ドレミファソラシドが鳴ります。
cdfga は♯ eb は♭の音が鳴ります。
R _ は休符
-は音を伸ばす
< オクターブダウン > オクターブアップ
16行入力すると先頭に戻る。
連続してENTERを押すと続けて演奏できます。

設定変更
行の先頭に書いてENTER カーソルが移動 ENTERで変数に入力 行を消去
L数字 音符の長さを設定します。1/60秒単位。
N数字 音を鳴らした後の無音時間 1/60秒単位。 Lを超えないこと。
P数字 矩形波のHLのHの割合 1~99 音色が変わります。

編集
行の先頭にコマンドを書く。実行後にコマンド文字は削除される。
X 行削除
Z 以降の行を削除
S 一行上に移動
W 先頭に移動
Q プログラムの終了

  • 1
  • 1

SOURCE CODE

10 'MML PLAY
20 LET[0],2273,2025,3822,3405,3034,2863,2551,1911
30 LET[8],2145,2145,3608,3214,3214,2703,2408
40 CLS
50 ?"MML PLAY"
60 ?"~92<~92c~92~92d~92e~92 ~92f~92~92g~92~92a~92b~92>-~92"
70 ?"~92 ~9A~97~9B~9A~97~9B ~92 ~9A~97~9B~9A~97~9B~9A~97~9B ~92 R~92"
80 ?"~92C ~92D ~92E ~92F ~92G ~92A ~92B ~92H_~92"
90 ?"~9A~91~91~96~91~91~96~91~91~96~91~91~96~91~91~96~91~91~96~91~91~96~91~91~9B"
100 ?
110 L=10:N=2:P=50:Y=6
120 @LP:IFY<6Y=6
130 LC0,Y:INPUT "",A
140 O=20:M=#900+32*Y:GSB@P
150 Y=Y+1:IFY>21Y=6
160 GOTO@LP
170 @P:C=PEEK(M):M=M+1:F=0
180 IFC=0OUT5,0:RTN
190 IFC=60O=O/2:GOTO@P
200 IFC=62O=O*2:GOTO@P
210 IFC=45GOTO@L
220 IFC=95OUT5,0:GOTO@L
230 IFC=82OUT5,0:GOTO@L
240 IF(C>64)*(C<73)F=[C-65]
250 IF(C>96)*(C<104)F=[C-89]
260 IFF=0GOTO@C
270 F=F/O:PWM5,F*P/100,F
280 @L:WAITL-N: IFPEEK(M)<>45OUT5,0
290 WAITN:GOTO@P
300 @C:LC0,Y
310 IFC=76GSB@N:L=A:RTN
320 IFC=78GSB@N:N=A:RTN
330 IFC=80GSB@N:P=A:RTN
340 IFC=90Y=Y-1:?CHR$(12);:RTN
350 IFC=88Y=Y-1:?CHR$(24);:RTN
360 IFC=83Y=Y-2:?CHR$(127):RTN
370 IFC=87Y=5:?CHR$(127):RTN
380 IFC=81?CHR$(127):GOTO@ED
390 GOTO@P
400 @N:LC1,Y:INPUT "",A
410 LC0,Y:?CHR$(24);
420 Y=Y-1:RTN
430 @ED:LC0,22:END

COMMENT