SonaMMLはmml2sona用のMML記法です。 このドキュメントはmml2sonaV 0.50用です。 このドキュメントはMMLの標準的な記法は書かれていません。
チャンネルは以下の通りに割り当てられています。
チャンネル番号 | 説明 |
---|---|
A-F | FM チャンネル 1~6 |
G-I | PSG チャンネル 1~3 |
J | PSG ノイズ |
K-L | PCM チャンネル 1~2 |
Z | コントロール用 |
チャンネルZは普通のチャンネルには割り当てられていませんが、全体的に作用するようなコマンド (例えばテンポとかループとか)をほかのチャンネルに作用することなく入れることができます。
スペースはオプションで入れることができます。(曖昧にならなかったら)
コマンド | 説明 |
---|---|
@$ |
[SFXのみ] チャンネルをロックする。サウンドエフェクト用にチャンネルをロックすることができる。 |
@ <音色番号> |
音色番号をセットする。 |
l <長さ> |
音符のデフォルトの長さをセットする。 (後述) |
<音符> または <音符> <長さ> |
音符を配置する。 +で半音上げ、-で半音下げできる。 +と-は二重に書ける。 PSGはnコマンドを使用するべき。 |
n <値> または n <値>,<長さ> |
音程をを直接指定する。 FMチャンネルは<0-95>、PSGチャンネルは<24-95>までの値を指定できる。 PSGチャンネル4で使用した時は、値はノイズモード。PCMチャンネルで使用した場合は音色番号。 |
r または r <長さ> |
休符を入れる。長さはオプション。 |
s または s <長さ> |
キーオンキーオフせずに待ち時間を入れる。 長さはオプション。 |
o <オクターブ> |
オクターブを指定する。 FMチャンネルは<0-7>、PSGは<1-6>。 |
< |
オクターブを1つ下げる |
> |
オクターブを1つ上げる |
k <セミトーン> |
トランスポーズを<セミトーン>分だけする。 このコマンドは絶対値を取る。 <セミトーン>はマイナス値も取る。 k0でリセット。 |
K <セミトーン> |
トランスポーズを<セミトーン>分だけする。 このコマンドは相対値を取る。 <セミトーン>はマイナス値も取る。 |
v <ボリューム> |
音量をセットする。 範囲は<0-15>、0がミュート、15が最大音量。 |
( または ( <値> |
音量を1上げる。<値>でいくつ上げるかをセットできる。 |
) または ) <値> |
音量を1下げる。<値>でいくつ下げるかをセットできる。 |
- |
次の音符はキーオンをしないようにする。 |
& |
次の音符は待ち時間にする。 (sコマンドで同様の動作が可能) |
p <設定> |
パンを指定する。(後述) |
L |
ループポイントをセットする。 |
[ |
ループポイントをセットする。 (回数指定) |
] <カウント> |
ループを<カウント>分する。 |
t <テンポ> |
[BGMのみ] テンポを指定する。デフォルトは120(60Hz)。(l1は128ティック) |
y <レジスタ>, <値> |
YM2612レジスタ直接書き込み。バンク1は<0-255>、バンク2は<256-511>でアクセスできる。 |
yFB <値> |
チャンネルのFBレジスタに<値>を書き込む。 |
yDM <オペレーター> , <値> |
<オペレーター>のDMレジスタに<値>を書き込む。 |
yTL <オペレーター> , <値> |
<オペレーター>のTLレジスタに<値>を書き込む。 |
yKA <オペレーター> , <値> |
<オペレーター>のKAレジスタに<値>を書き込む。 |
yDA <オペレーター> , <値> |
<オペレーター>のDAレジスタに<値>を書き込む。 |
ySR <オペレーター> , <値> |
<オペレーター>のSRレジスタに<値>を書き込む。 |
ySL <オペレーター> , <値> |
<オペレーター>のSLレジスタに<値>を書き込む。 |
ySE <オペレーター> , <値> |
<オペレーター>のSEレジスタに<値>を書き込む。 |
@# <バイト1> , <バイト2> , <バイト3> ... |
ストリームに直にバイト羅列を書く。 SonaMML未実装コマンドを使うのに便利。 |
@ { <書き込み先> = <読み込み元> } |
VM |
@ { <書き込み先> += <読み込み元> } |
VM |
@ { <書き込み先> -= <読み込み元> } |
VM |
@ { <書き込み先> &= <読み込み元> } |
VM |
@ { <書き込み先> |= <読み込み元> } |
VM |
@ { <書き込み先> ^= <読み込み元> } |
VM |
| |
バーセパレーター。何もしない。 |
!<A-Z> または !<a-z> または !<0-255> |
マクロコマンド |
### 長さコマンドについて 長さは 1,2,4,8,16,32,64,128を取る。(実際には1/<長さ>の値がセットされる)