鍵盤を描いている表示できないキャラクタは ~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 プログラムの終了
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