MMLリファレンスマニュアル
https://github.com/onitama/mucom88/wiki/MML%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
●FM+SSG音源ポリ数
FM3ポリ+SSG3ポリ:YM2203(OPN)
FM6ポリ+SSG3ポリ+ノイズリズム+ADPCMリアルドラムセット:YM2608(OPNA/サウンドボードII)
■ MML内部
記述 | 説明 |
---|---|
C | 全音符あたりのクロック(分解能)指定 (デフォルトはC128) |
t | FM音源チップのタイマーBの数値を直接指定するテンポ指定 |
T | テンポ指定 (1分間に演奏する四分音符の数で指定) |
@ | 音色番号指定(FM/SSG/PCM) SSGの場合はプリセット音色(16種)を使用する |
@"..." | [FM] 音色名での音色指定 |
o | [FM/SSG] オクターブ絶対指定(o1~o8, デフォルトo6)、[ADPCM] o1が高音でo2,o3となるほど低音になる。 |
v | [FM/SSG] 音量絶対指定(0~15)、[ADPCM] 音量絶対指定(0~255)、[リズム] vn1,n2,n3,n4,n5,n6,n7 (全体,BD,SD,CY,HH,TM,RY) |
q | 音の長さ全体から、キーオフを早めるタイミングをクロック数で指定。(スタッカート) |
p | パン (0=発音しない, 1=右, 2=左, 3=中央) リズムパートでの指定時は、bit0~3でリズムの種類(0~5)、bit4,5でパン(1:右, 2:左, 3:中央)を指定する。 ($を指定して16進指定可。例: p$12 = シンバルを右に) |
l | デフォルト音長指定 |
cdefgab | 音程の指定 (必要に応じて後ろに調号(+がシャープ,-がフラット)、音長数値で指定します。「.」付点も指定可) |
r | 休符 |
% | 音長をクロック値で指定 ※デフォルト音長指定をクロックで指定したい場合は、前にスペースを入れる。 |
D | ディチューン (-32768~32767) 後ろに+を指定した場合、絶対指定でなく現在値からの相対指定になる |
> | オクターブ相対指定(上げ) |
< | オクターブ相対指定(下げ) |
) | 音量相対指定(上げ) 16段階 )nで一度に変化する量を数値で指定可(ADPCMは256段階) |
( | 音量相対指定(下げ) 16段階 (nで一度に変化する量を数値で指定可(ADPCMは256段階) |
& | タイ/レガート (前後の音のキーオフ/キーオンを省略) |
^ | 音長を繋げる |
{…} | ポルタメント。{c2b} で c→b へのポルタメント 数字は音長指定。オクターブをまたぐことも可。 |
[…]n | ループ開始位置とループ終了位置。後ろに数字を置くことで繰り返し回数を指定 |
/ | ループ内脱出位置指定 [ ]のループ内に記述すると、最後のループで / の位置でループを脱出します。 |
L | 曲全体のループ位置指定 (各パート1箇所のみ指定可能) |
K | 移調絶対指定 (-128~+128) ループ内は繰り返し1回のみ |
V | 音量の相対変化指定(以降のvコマンドの値に増減, コンパイル時に評価) |
¥=n1,n2 | エコーマクロ。n1(0~9)で直前の音符数, n2(省略可能)でボリュームの下げ数を指定 |
¥ | ¥=n1,n2で設定した音に置き換える |
k | (v1.7のみ) 移調相対指定 |
s | (v1.7のみ) キーオンのタイミングを変える。クロック単位で指定し、正で遅らせ負の方向で早める(シャッフル) |
H | [FM] ハードウェアLFO Hn1,n2,n3 n1:速度(0-7),n2:PMS(0-7),n3:AMS(0-3) |
R | [FM/SSG] リバーブ Rn で音量の加減値を指定 (nは負の値も指定可) キーオフ時、キーオフする代わりに現在の音量の約1/3に設定して発音を続ける。(FMとSSGでは音量計算が異なります) |
RF | [FM/SSG] リバーブ ON/OFF (0=off 1=on) |
Rm | [FM] リバーブの効果のかかる部分の指定(0=続く休符も含める 1=qで切られた部分のみ) |
M | ソフトウェアLFO (Mn1,n2,n3,n4) n1:delay n2:クロック単位 n3:振幅 n4:変化の回数) |
MF | ソフトウェアLFO ON/OFF (0=off 1=on) |
MW | ソフトウェアLFOのディレイ(n1)だけを設定 |
MC | ソフトウェアLFOのクロック単位(n2)だけを設定 |
ML | ソフトウェアLFOの振幅(n3)だけを設定 |
MD | ソフトウェアLFOの変化の回数(n4)だけを設定 |
S | [FM3] 効果音モードのスロットディチューン (Sn1,n2,n3,n4) n1=OP4 n2=OP3 n3=OP1 n4=OP2のディチューン順(0~255) |
E | [SSG] ソフトウェアエンベロープ(En1,n2,n3,n4,n5,n6) AL,AR,DR,SL,SR,RR |
P | [SSG] ミキサモード Pn (0:発音しない 1:トーン 2:ノイズ 3:トーン+ノイズ) |
w | [SSG] ノイズ周波数 (0~31) |
s | [SSG] SSGハードウェアエンベロープ・波形指定 (v1.5のみ) |
m | [SSG] SSGハードウェアエンベロープ・周期指定 (v1.5のみ) |
y | レジスタ直接書き込み(yn1,n2) n1=レジスタ番号 n2=データ |
yDM | [FM] DT/ML直接指定 yDM,n1,n2 n1=スロット番号 n2=データ |
yTL | [FM] TL直接指定 yTL,n1,n2 n1=スロット番号 n2=データ |
yKA | [FM] KS/AR直接指定 yKA,n1,n2 n1=スロット番号 n2=データ |
yDR | [FM] DR直接指定 yDR,n1,n2 n1=スロット番号 n2=データ |
ySR | [FM] SR直接指定 ySR,n1,n2 n1=スロット番号 n2=データ |
ySL | [FM] SL/RR直接指定 ySL,n1,n2 n1=スロット番号 n2=データ |
ySE | [FM] SSGEG直接指定 ySE,n1,n2 n1=スロット番号 n2=データ |
vm | [ADPCM] PCMボリュームモード(vmn で n を音量の補正値としてサウンドドライバ側で加算する) |
* | マクロ展開 |
; | これ以降行末までコメント |
: | これ以降コンパイルを行なわない |
! | このパートのこれ以降を全て休符とする(発音しない) |
J | ジャンプコマンド(この位置から演奏開始) |
| | 何もしない スペースと同意 (視認性向上用の区切り) |
※Rコマンド補足、FMの場合:リバーブ時の音量=int((現在の音量+リバーブ値+4)/2)-4、SSGの場合:リバーブ時の音量=int((現在の音量+リバーブ値)/2)
これは本物MMLなので覚えて使うまでが大変そうですが、とりあえずテストのドレミファソラシドだけを鳴らしてみるから始めるw
最も簡単な使い方はサンプルを聴いて、最初の数行をコピーして新規貼り付けして挙動確認をしてみる。
最初のA行のみコードを改造してドレミファソラシドに変更。
t193 C96 @85o3v11p3q4l16 L o4c8d8e8f8g8a8b8o5c8
無事、ドレミファソラシドを鳴らすことができましたが
最初の音色チェンジ ”@85o3v11p3q4l16” の部分がよくわからないw
ただ単に後ろはMMLでしたw
@85プリセット
o3オクターブ
v11ボリューム
p3パン
q4キーオフ
l16長さ
あとSCCI(Sound Chip Common Interface)でMIDI音源も使えるようで、本物FM音源も使える様子。
無事、eVY1 boardの認識はしましたが、ここをチェックすると内臓FM音源ボードEmuは切り離されて鳴らなくなるので、チェックを外してソフトを再起動。
色々と使い方は不明なので、調べてみようとは思うが、まあIchigojamの簡易型も含めてStandard MidiからMMLへの変換ツールを探さないとw