参考資料:MSX BASICのMMLの仕様

出典:「MSX2 パーソナルコンピュータBASIC説明書」(昭和60年11月、編集:株式会社アスキー、発行:松下電器産業株式会社 情報機器部)

例と、PSG for Webで対応していない部分は省略しています。

音の高さ

A〜G

CDEFGがハ長調のド〜ソ、AとBがラとシにそれぞれ対応します。またA〜Gの後に#や+記号を付けると半音上がった音になり、逆に-記号を付けると半音下がった音になります。

O <数値>

前項で説明した音階の音域を1〜8の数値で指定します。初期値はO4で、1点ハ音から始まるオフターブを指します。この様にしてO5はO4の1オクターブ上の音階を、また、O3はO4の1オクターブ下の音階を指します。なお、1度オクターブの指定をすると、そのチャンネルで次のオクターブ指定をするまで有効です。

N <数値>

音の高さを0〜96の数値で表現します。N1はO1のC#と同じ高さで、N2、N3……と半音ずつ上がって行き、N95はO8のBと同じになります。また、N0はR(休符)と同じ働きをします。

高さ

オクターブ
CC+
D-
DD+
E-
EFF+
G-
GG+
A-
AA+
B-
B
O11234567891011
O2121314151617181920212223
O3242526272829303132333435
O4363738394041424344454647
O5484950515253545556575859
O6606162636465666768697071
O7727374757677787980818283
O8848586878889909192939495
N <数値>と音階
引用者註

原典の表では、O1のCが「0」となっているが、「N0」その上の文章の通り、0は休符を表すため、本表では「-」とした。

音の長さ

L <数値>

音の長さを1/<数値>にします。<数値>の範囲は1〜64までです。L1を全音としますと、L2以降の長さは次のようになります。

L1全音符(4拍)
L22分音符(2拍)
L31/3音符(4/3拍)
L44分音符(1拍)
L88分音符(1/2拍)
L6464分音符(1/16拍)

初期値はL4です。1度音の長さを指定しますと、そのチャンネルで次に音の長さを指定するまで有効です。また、1音についてだけ長さを変えたいときは、音階名の後ろに音の長さを表す<数値>を付け加えます。たとえばL16CはC16と同じです。

.(ピリオド)

ちょうど付点音符のように音階名や休符の後ろに付け加えて、本来の音の長さの3/2倍にします。また、2個並べて書きますと9/4倍、3個並べて書くと27/8倍になります。

R〔<数値>〕

休符を表します。<数値>はL命令での指定方法を同じです。<数値>を省略するとR4とみなされます。この命令はL命令で指定した長さに影響されません。

速さ(テンポ)

T <数値>

テンポを指定します。<数値>は1分間に演奏する4分音符の数を指定します。<数値>の範囲は32〜255です。初期値はT120です。なお、1度速さの指定をすると、そのチャンネルで次に長さの指定をするまで有効です。

音の大きさ

V <数値>

音量を指定します。<数値>の範囲は0〜15で、数が大きいほど音も大きくなります。なお、1度音量の指定をすると、次に音量の指定をするまで有効です。

音色

音色はエンベロープ周期(M命令)とエンベロープ形状(S命令)とで決まります。

S <数値>

エンベロープ形状(音量変化の波形)を指定します。一音ごとに、<数値>で指定したエンベロープ形状で音の振幅が変化します。<数値>と波形は次項の図の様に対応しています。S命令使用時は、次項のM命令の指定も必要です。なお1度エンベロープ形状を指定すると、別のエンベロープ形状を指定するか、音量(V命令)指定するまで有効です。

補足

Sの値の各ビットは次のような意味を持つ。

ビット3:1なら同じ波形を繰り返す。0なら1周期で終わり。
ビット2:0なら振幅が高→低、1なら低→高。
ビット1:0ならビット2のとおり、1なら振幅の向き(上下)が逆になる。ただし、ビット3とビット2がそれぞれ00、01の時は機能しない。
ビット0:波形の1周期の最後の状態(高低)を維持する。ビット3に優先する。そのため、9(10)は0〜3(10)と、10(10)は4〜7(10)とそれぞれ同じ意味になる。

※ビットの番号は右(LSB)から数える。文中下付き(10)は10進数であることを示す。

M <数値>

エンベロープ周期を指定します。エンベロープ周期は1〜65535までの<数値>で指定しますが、あまり大きすぎるとエンベロープ形状の特徴が出ません。(一般的には100〜10000)

エンベロープ周期
T=0.000143×(数値)(単位:秒)

エンベロープ形状とエンベロープ周期の組み合わせでいろいろな音を出すことができますので試してみるとよいでしょう。

タイトルとURLをコピーしました