NDP - ヘルプ

## 基本的な使い方

docsフォルダ内の「1_基本説明.txt」をご参照ください。
また、MMLエディタ上で知りたいコマンドの先頭にカーソルを合わせてF1キーを押すと、そのコマンドの説明にジャンプします。
※2文字以上のコマンド名の場合、先頭以外にカーソルを合わせると正しく解釈されませんので、ご注意ください。
（たとえば「@RM」を調べたいときは「R」や「M」ではなく「@」にカーソルを合わせる必要があります）

## MMLリファレンス

- ヘッダ
- ノーマルトラック
- リズムトラック
- 音色定義1（フレーム方式ソフトエンベロープ）
- 音色定義2（ADSR方式ソフトエンベロープ）
- リズム音色定義
- ビブラート定義
- ピッチエンベロープ定義
- ノートエンベロープ定義・数値指定
- ノートエンベロープ定義・音名指定
- 音量シーケンス定義
- Q/@Qシーケンス定義
- マクロ定義
- ステップマクロ定義

### ヘッダ

曲データ全体を通しての設定です。
何行目に記述しても、曲データ全体に対して機能します。
行頭にて「#ヘッダ名（空白またはタブ）データ」の形式で定義してください。

    #TEMPO	150
    ;テンポを150に設定する

ヘッダ | パラメータ | 機能
--- | --- | ---
#TEMPO ＜値＞ | テンポ (BPM) (1～999) | 全トラックのテンポを設定 小数点以下も指定できます。
#TIMEBASE ＜値＞ | フレーム数 (4～100) | タイムベースで全トラックのテンポを設定 値は4分音符のフレーム数です。 【例】「32」を指定すると「t112.5」相当になります。
#TIMEBASE ＜値＞,＜値＞ | 音長,フレーム数 (1～64, 1～100) | 音長とタイムベース値で全トラックのテンポを設定 音長の値は〇分音符です。 【例】「16,8」を指定すると「t112.5」相当になります。
#TRANSPOSE ＜値＞ | 移調する値 (-84～84) | 移調（トランスポーズ） 値は半音単位です。負数で低く、正数で高くなります。
#KEYSHIFT ＜値＞ | 〃 | 〃
#KEY-SIGN ＜文字列＞ | 調号指定 (+/-/#/音名) | 調号指定 最初に「-」「+」「#」のいずれかを記述し、調号指定したい音名を並べます。
    #KEY-SIGN +cf
    ; ファとドに自動的にシャープを付ける指定
#OCTAVE-REV |  | 相対オクターブ反転 「 > 」が -1、「 < 」が +1 になります。
#MUTE ＜文字列＞ | トラック名 (1/2/3/R) | 指定トラックをミュート 値は 1,2 や 12 など複数指定も可能です。
#SOLO ＜文字列＞ | トラック名 (1/2/3/R) | 指定トラックをソロ再生 値は 1,2 や 12 など複数指定も可能です。
#RHYTHM-ATOZ |  | リズム音色名として全アルファベットを使用可能に 既存のコマンドと重複するアルファベット（LやVなど）にもリズム音色を定義できるようにします。 定義したリズム音色名と重複したコマンドは 「'」 を付けると実行可能です。
    #RHYTHM-ATOZ
    @R:V=*1 v15 :400 / :600 / :800 ; Vにタムを定義
    R  'V13 ;音量13
    R  V16  ;音量16ではなく、Vに定義したタムを16分音符で演奏
#TRACK-REV ＜文字列＞ | トラック名 (1/2/3/R) | 指定トラックを入れ替え 1,2 など必ず2つのトラックを指定してください。 常にリズムトラックはトラック3に割り込まれるため、割り込まれるパートを変更したい時などに有用です。
#REPEAT-MODE ＜値＞ | モード番号 (0～3) | リピートモード設定
0 | コンパイラで展開 最も確実だがデータは大きくなる
1 | ドライバで処理、コンパイラで補正 1フレーム未満の端数は退避し、リピート終了直後の音符に加算
2 | ドライバで処理 1フレーム未満の端数は切り捨て（その際は演奏がずれる）
3 | ドライバで処理 1フレーム未満の端数が生じるとエラー
#SHARP-FRAME |  | 「#」をフレーム指定コマンドに変更 MML中の「#」がシャープではなくなり、「%」と等価になります。
#SEED ＜値＞ | シード値 (0～9999) | 乱数の種を指定 0にするとコンパイルのたびにシード値が変化します。
#RANDOM-SEED ＜値＞ | 〃 | 〃
#JUMP-OFFSET ＜値＞ | 補正値 (ミリ秒) | Jコマンドのシーク先を補正 値はミリ秒単位で、初期値は -150 です。
#FAST-FORWARD |  | Jコマンドを早送りに 一瞬のシークではなく音を出しながら早送りするようになります。
#SEEKTIME ＜値＞ | 開始時間 (秒) | 頭出し再生 指定した秒数から再生します。 ただし、JコマンドやShift+F5キーのほうが優先されます。
#V-OFFSET ＜値＞ | オフセット値 (-15～15) | Vコマンドのオフセット値を指定 Vコマンドの実行時に、ここで指定した値が加減算されます。
#RV-OFFSET ＜値＞ | オフセット値 (-15～15) | リリース音量のオフセット値を指定 @Rコマンドや@RVコマンドの実行時に、ここで指定した値が加減算されます。
#RESET-VIB |  | キーオフ時にビブラートを効果オフ キーオフ時、ビブラートの効果をオフにします。 @Mコマンドの第2パラメータに1を設定したときと同じ動作です（@Mコマンドの値が優先されます）。
#RESET-PITCHENV |  | キーオフ時にピッチエンベロープを効果オフ キーオフ時、ピッチエンベロープの効果をオフにします。 @Pコマンドの第2パラメータに1を設定したときと同じ動作です（@Pコマンドの値が優先されます）。
#DEFAULT-OFF |  | 省略値の無効化 各コマンドの値を省略した際、エラーを検出するようになります。
#INCLUDE-VOICE "＜文字列＞" #INCLUDE-NDV "＜文字列＞" #INCLUDE-V "＜文字列＞" | ファイル名 （フルパス可） | 音色ファイル読み込み 音色エディタ上のデータには影響せず、曲データにのみ反映されます。 パスを省略するとMMLファイルと同じフォルダが対象となりますが、フルパスでの指定も可能です。
#INCLUDE-RHYTHMVOICE "＜文字列＞" #INCLUDE-NDR "＜文字列＞" #INCLUDE-RV "＜文字列＞" | ファイル名 （フルパス可） | リズム音色ファイル読み込み リズム音色エディタ上のデータには影響せず、曲データにのみ反映されます。 パスを省略するとMMLファイルと同じフォルダが対象となりますが、フルパスでの指定も可能です。
#BSAVE-NAME "＜文字列＞" #BSAVE-FILE "＜文字列＞" #BSAVE-FILENAME "＜文字列＞" | ファイル名 （フルパス不可） | BSAVEファイル名指定 BSAVE形式のファイル名を指定します。 ファイル保存ダイアログの入力ボックスに反映されるだけなので、強制的に上書きされることはありません。 拡張子を省略すると「.NDP」になります。
#SKIP-DEFINE |  | 重複定義の許可 音色などの各種定義の重複を許可します。 重複した場合、最後の定義が有効となります。
#SKIP-F |  | @Fコマンドをスキップ MML内に含まれる@Fコマンドを実行せずにスキップします。
#SKIP-SE |  | !Sコマンドをスキップ MMLトラック内に含まれる!Sコマンドを実行せずにスキップします。 効果音の定義自体は行われます。
#ADDRESS-DEFINE ＜値＞ | 絶対アドレス （16進数） | 定義データの絶対アドレスを指定 通常、定義データ（音色や各種エンベロープ）は曲データに内包されていますが、このヘッダで絶対アドレスを指定すると曲データから切り離され、指定アドレスに配置されます。 ゲームなどへの組み込み時、複数の曲で同じ音色データを流用する時に有用です。
#ADDRESS-SE ＜値＞ | 絶対アドレス （16進数） | 効果音データの絶対アドレスを指定 通常、効果音データは曲データに内包されていますが、このヘッダで絶対アドレスを指定すると曲データから切り離され、指定アドレスに配置されます。 曲データやドライバ本体のアドレスと被らないようにご注意ください。 このヘッダを設定せずに効果音データを保存すると、ファイルの先頭に効果音の個数（1バイト）と各効果音の相対アドレス（2バイト×個数）が出力されます。 具体的な内容は、効果音データのアセンブリソースファイルをご参照ください。
#ADJUST-PIANOROLL ＜値＞ | 補正値 | ピアノロール補正 ピアノロールの表示位置を補正します。 再生していて徐々にスクロール位置がずれていく場合はご指定ください。 表示が遅れる場合は正数、早まる場合は負数を指定すると合うようになります。 小数点も使用できます。
#LOOP-PIANOROLL ＜値＞ | ループ回数 | ピアノロール表示とシークバーへのループ展開 通常、無限ループの曲は1ループ目の終端でピアノロールのスクロールが停止してしまいますが、このヘッダでループ数を指定するとその回数分までスクロールするようになります。 ループ部分での各トラックのずれの確認などに有用です。 値の省略時は2ループとなります。
#SCROLL-TRACK ＜トラック名＞ | トラック名 | スクロール追従トラック選択 再生中にMMLエディタのスクロール位置を追従するトラックを指定します。 メニューの [再生中のスクロール追従トラック] を [MMLの指定に従う] にした時のみ有効です。
#EXPAND-MEMORY |  | 使用可能メモリ拡張 曲データに使用可能なメモリを最大28KBまで拡張します。 但し、自動的に「#ADDRESS-DEFINE 0B000H」と「#ADDRESS-SE 0BE00H」が設定されますので、音色定義やエンベロープ定義は最大3584バイト、効果音定義は最大512バイトに制限されます（ユーザー自身による再設定も可能です）。 定義データは曲データから切り離されますので、外部プログラムで再生する際はご注意ください。
#TITLE "＜文字列＞" | 曲名 | 曲名を格納 ※エディタの設定により、出力を抑制できます。
#COMPOSER "＜文字列＞" | 作曲者名 | 作曲者名を格納 ※エディタの設定により、出力を抑制できます。
#ARRANGER "＜文字列＞" | 編曲者名 | 編曲者名を格納 ※エディタの設定により、出力を抑制できます。
#PROGRAMMER "＜文字列＞" | 制作者名 | データ制作者名を格納 ※エディタの設定により、出力を抑制できます。
#MEMO "＜文字列＞" | メモ | メモを格納 ※エディタの設定により、出力を抑制できます。

### ノーマルトラック

メロディやベースなど、通常パートのシーケンスデータを定義するトラックです。
行頭の1文字目にトラック名（1～3）を記述し、続けてMMLを入力していきます。

    1 cde
    2 efg
    ;トラック1で「ドレミ」、トラック2で「ミファソ」を鳴らす

    1 o5	 ;トラック1をオクターブ5にする
    2 o4	 ;トラック2をオクターブ4にする
    12 cde ;トラック1と2のユニゾンで「ドレミ」を鳴らす

コマンド | パラメータ | 機能
--- | --- | ---
T＜値＞ | テンポ (1～999) | テンポを設定 小数点以下も指定できます。 #TEMPOヘッダと異なり、他のトラックは設定されません。
@T＜値＞ | フレーム数 (4～100) | タイムベースでテンポを設定 値は4分音符のフレーム数です。
    1 @t32
    ; t112.5 相当
#TEMPOヘッダと異なり、他のトラックは設定されません。
@T＜値＞,＜値＞ | 音長,フレーム数 (4～64, 1～100) | 音長とタイムベースでテンポを設定 音長の値は〇分音符です。
    1 @t16,8
    ; 1 t112.5 相当
#TEMPOヘッダと異なり、他のトラックは設定されません。
C～B＜値＞ | 音長など | 音符 音長は標準では〇分音符ですが、「%」を付けるとフレーム数で設定可能です。 「+」と「-」を音名の直後に付けると臨時記号、それ以降に付けると音長の加減算になります。 音長を省略すると、後述のLコマンドで指定した値になります。
    1 c32d2-32e4
    ; c32d4...e4 と等価
R＜値＞ | 音長 | 休符 音長の条件は音符コマンドと同じです。
L＜値＞ | 音長 | 音長省略時のデフォルト音長 音符や休符で音長を省略した時の音長を設定します。 「%」を付けるとフレーム数で設定可能です。 付点や加減算にも対応しています。
L＜値＞,＜値＞,…＜値＞ | 音長,音長,…音長 | 音長シーケンス 音符や休符で音長を省略した時の音長を順番に設定します（最大16個）。 値を省略すると、1音目は4分音符、2音目以降は直前の音長が再設定されます。 シーケンスを最後まで演奏、または「L-」で最初にループします。 シーケンスを解除するときは、Lコマンドでデフォルト音長を再設定してください。
    l8,16,,4 cccc dddd
    ; l16 c8ccc4 d8ddd4 と等価
    1 l16,,8,16,,, ccc cccc ddd l- ddd
    ; l16 ccc8 cccc ddd8 ddd8 と等価
L- |  | 音長シーケンス・カウンタリセット 音長シーケンスの読み込み位置を先頭に戻します。
. |  | 付点 直前の音符の音長を1.5倍にします（複付点も可）。
^＜値＞ | 音長 | タイ 音長を加算します。 合計255フレームを超えても使用可能です。
&＜値＞ |  | スラー 2音をなめらかに繋げます。
( |  | レガート開始 複数の音符をなめらかに繋げます。
) |  | レガート終了 複数の音符をなめらかに繋げます。
    1 (cdef)g
    ; c&d&e&f&g と等価
+ |  | シャープ／音長加算 音名の後に付けるとシャープ（++でダブルシャープ等も可）、その後に付けると音長加算になります。
- |  | フラット／音長減算 音名の後に付けるとフラット（--でダブルフラット等も可）、その後に付けると音長減算になります。
= |  | ナチュラル 音名の後に付けるとナチュラル（調号指定の一時解除）になります。
# |  | シャープ／フレーム音長 通常時、音名の後に付けるとシャープ（##でダブルシャープ等も可）になります。 #SHARP-FRAMEヘッダを使用すると、フレーム音長（「%」と等価）になります。
O＜値＞ | オクターブ値 (1～8) | オクターブ指定
< |  | 相対オクターブダウン #OCTAVE-REVヘッダで逆にできます。
> |  | 相対オクターブアップ #OCTAVE-REVヘッダで逆にできます。
\＜値＞ | レジスタ加算値 (-4000～4000) | デチューン ピッチをずらします。 周波数レジスタに対して指定値がそのまま加減算されるため、同じ値でも高音ほど大きく変動します。
\＜値＞+ | レジスタ加算値 (-1000～1000) | 相対デチューン 現在のデチューン値から相対的に加減算します。
    1 [ \-10+ c ]4
    ; \-10 c \-20 c \-30 c \-40 c と等価
K＜値＞ | 半音単位の加算値 (-84～84) | トランスポーズ（移調） 半音単位でトランスポーズします。 曲全体の移調には#TRANSPOSEヘッダが便利です。
@K＜値＞ | 半音単位の加算値 (-24～24) | 相対トランスポーズ 半音単位で相対トランスポーズします。Kコマンドとも併用可能です。 @K0で初期値に戻ります。 コンパイラ内で音程を置換しますので、#REPEAT-MODE 1以上では意図通りの音程にならないことがあります。
Q＜値＞ | ゲートタイム (1～8) | ゲートタイム 音を伸ばす長さを割合で設定します。 処理系によってはクオンタイズとも呼ばれる機能です。1でスタッカート、8でテヌート、0でレガートになります。 「Q」だけを記述すると「Q8 @Q0」が設定されます。
@Q＜値＞ | フレーム数 (0～128) | フレーム減算ゲートタイム 指定したフレーム数だけ発音を短くします。 Qコマンド同様、こちらも処理系によってはクオンタイズと呼ばれています。 Qコマンドとの併用も可能です。
@Q+＜値＞ | フレーム数 (0～126) | フレーム加算ゲートタイム Q1～7のとき、指定したフレーム数だけ発音を長くします。 音長を超えて長くすることはできず、Q8のときは無効です。
Q＜値＞,＜値＞ | ゲートタイム,回数 (1～8, 0～10) | ゲートタイム・回数指定 指定回数分だけ発動し、次回からは回数を省略しても指定回数分だけ効くようになります。 回数を0にすると効果オフです。
@Q＜値＞,＜値＞ | フレーム数,回数 (0～255, 0～10) | フレーム減算ゲートタイム・回数指定 指定回数分だけ発動し、次回からは回数を省略しても指定回数分だけ効くようになります。 回数を0にすると効果オフです。
@Q+＜値＞,＜値＞ | フレーム数,回数 (0～126, 0～10) | フレーム加算ゲートタイム・回数指定 指定回数分だけ発動し、次回からは回数を省略しても指定回数分だけ効くようになります。 回数を0にすると効果オフです。
@Q%＜値＞ | フレーム数 (0～128) | 固定ゲートタイム 音長に関係なく常に同じフレーム数で発音するようになります。 「@Q0」や「@Q%」、またはQ/@Qコマンドを実行すると効果オフです。
%＜値＞ | フレーム数 | フレーム音長 音長をフレーム数で指定します。
@＜値＞ | 番号 (0～15) | 音色指定 音色（ソフトエンベロープ）を選択します。 あらかじめプリセット音色が用意されていますが、同じ番号で自作音色を定義すると編集中のデータにのみ適用されます。
@E | 〃 | 音色指定 @コマンドと等価です。
@＜値＞,＜値＞ | 番号1,番号2 (0～15, 0～15) | セルフディレイ用音色指定 番号1は通常時、番号2はセルフディレイ中の音色番号となります。 @Dコマンドによるセルフディレイ発動時に有効です（@RDコマンドによるリリースディレイ時は無効）。 番号1は省略できます。
@- |  | セルフディレイ用音色指定を解除 セルフディレイ中も通常の音色になります。
V＜値＞ | 音量 (0～15) | 音量指定 ソフトエンベロープも加味して発音されます。
V+＜値＞ | 相対音量 (0～15) | 音量加算 現在の音量からの加算です。 値を省略すると +1 になります。 加算量は符号を複数並べても指定可能です。
    1 v9 cd v+ ef v+2 gf v+++ ed
    ; v9 cd v10 ef v12 gf v15 ed と等価
V-＜値＞ | 相対音量 (0～15) | 音量減算 現在の音量からの減算です。 値を省略すると -1 になります。 減算量は符号を複数並べても指定可能です。
    1 v15 cde v-3 def v-- efg
    ; v15 cde v12 def v10 efg と等価
VO＜値＞ | 音量オフセット値 (-15～15) | 音量オフセット指定 このコマンド以降、Vコマンドを使用した時点で反映されます。 トラックごとのバランスを取る際などに有用です。
VI+＜値＞,＜値＞ | フレーム数,到達音量 (0～127, 0～15) | 音量加算インターバル指定 キーオンのたびに指定フレームずつ音量が加算されます（0でオフ）。 到達音量を0にすると、Vコマンドの音量まで加算します（デフォルト）。 到達音量を省略した場合、前回の設定値を引継ぎます。
VI-＜値＞ | フレーム数 (0～127) | 音量減算インターバル指定 キーオンのたびに指定フレームずつ音量が減算されます（0でオフ）。 ソフトエンベロープ自体は持続系にしておいて、このコマンドで減衰させると、たとえばトレモロをかけながら減衰させる表現などを手軽に行うことができます。
VS＜値＞ | 番号 (0～31/255/-) | 音量シーケンス指定 音符ひとつずつに対してVコマンドを自動的に追加する機能を有効にします。 0～31でシーケンス番号を選択、255または「-」で機能オフです（VAも解除されます）。 また、パラメータなしの「VS」を実行すると、機能は有効にしたままカウンタだけを先頭に戻すことができます。
    VS1=14 L -3 +3
    1 VS1 cdefga VS b>c
    ; v14c v-3d v+3e v-3f v+3g v-3a v14b v-3>c と等価
QS＜値＞ | 番号 (0～31/255/-) | Qシーケンス指定 音符ひとつずつに対してQコマンドを自動的に追加する機能を有効にします。 0～31でシーケンス番号を選択、255または「-」で機能オフです（QAも解除されます）。 また、パラメータなしの「QS」を実行すると、機能は有効にしたままカウンタだけを先頭に戻すことができます。
    QS1=8 L 4 3
    1 QS1 cdefga QS b>c
    ; q8c q4d q3e q4f q3g q4a q8b q4>c と等価
@QS＜値＞ | 番号 (0～31/255/-) | @Qシーケンス指定 音符ひとつずつに対して@Qコマンドを自動的に追加する機能を有効にします。 0～31でシーケンス番号を選択、255または「-」で機能オフです（@QAも解除されます）。 また、パラメータなしの「@QS」を実行すると、機能は有効にしたままカウンタだけを先頭に戻すことができます。
    @QS1=0 L 4 3
    1 @QS1 cdefga @QS b>c
    ; @q0c @q4d @q3e @q4f @q3g @q4a @q0b @q4>c と等価
KS＜文字列＞ | 調号指定 (+/-/#/音名) | 調号指定 最初に「-」「+」「#」のいずれかを記述し、調号指定したい音名を並べます。
    1 KS-eab cdefgab b=ag
    ; cde-fga-b- ba-g と等価
@P＜値＞,＜値＞ | 番号,キーオフ時リセット (0～15, 0～1) | ピッチエンベロープ指定 0～15でピッチエンベロープ選択、255または「-」で効果オフです。 ビブラートとの同時使用はできません。 また、第2パラメータは省略できますが、「1」を指定するとキーオフ時に効果をオフにします。 第2パラメータ省略時、ピッチエンベロープの遷移中にリリースディレイが発動するとピッチがずれます（前フレームからの相対変化となっているため）。 問題が生じる場合は第2パラメータを1にしてください。
@M＜値＞,＜値＞ | 番号,ピッチリセット (0～15, 0～1) | ビブラート指定 0～15でビブラート選択、255または「-」で効果オフです。 ピッチエンベロープjとの同時使用はできません。 また、第2パラメータは省略できますが、「1」を指定するとキーオフ時に効果をオフにします。
@MD＜値＞ | ディレイ値 (2～255) | ビブラート・ディレイ再設定 使用中のビブラートのディレイ値を書き換えます。 定義されているパラメータ自体を書き換えますので、@Mコマンドを再び実行しても元の値には戻らない点にご注意ください。
@N＜値＞ | 番号 (0～15) | ノートエンベロープ指定 0～15でノートエンベロープ選択、255または「-」で効果オフです。
@A | 〃 | ノートエンベロープ指定 @Nコマンドと等価です。
@R＜値＞,＜値＞ | 音量,フレーム数 (0～15, 0～255) | リリース指定 第1パラメータでリリース音量、第2パラメータでリリース時間を指定します。 パラメータの意味は後述の@RVおよび@RRと等価です。 「@R-」で効果オフです。 ハードエンベロープとの併用時 ・Vコマンドは影響せず、第1パラメータの値が直接反映されます。 ・リリース処理中は自動的にトーンON、ノイズOFF、ハードエンベロープOFFとなります。 ・10番および12番のハードエンベロープはオクターブが異なりますが、MK12 などの指定により対処可能です。 ・Sコマンドの第2パラメータ（音量半減）設定時、リリース中のビブラートとピッチエンベロープは無効となります。
@RV＜値＞ | 音量 (0～15/-1～15/+1～15) | リリース音量指定 キーオフ時、減衰を開始する音量となります。 相対値で、15が最大、0が最小（効果なし）です。 音量を絞ると疑似リバーブ的な効果も表現可能です。 （以上、@Rコマンドの第1パラメータと等価です） また、@RV+、@RV-で相対的に設定値を上下できます。 ハードエンベロープとの併用時 Vコマンドは影響せず、指定値が直接反映されます。
@RR＜値＞ | フレーム数 (0～255) | リリース時間指定 キーオフ後、指定したフレーム数ごとに音量が1ずつ減衰していきます。 0で効果オフとなります。 （以上、@Rコマンドの第2パラメータと等価です） リリース音量が設定されていないと効果はありません。 ハードエンベロープとの併用時 ・リリース処理中は自動的にトーンON、ノイズOFF、ハードエンベロープOFFとなります。 ・10番および12番のハードエンベロープはオクターブが異なりますが、MK12 などの指定により対処可能です。 ・Sコマンドの第2パラメータ（音量半減）設定時、リリース中のビブラートとピッチエンベロープは無効となります。
@RL＜値＞ | リリース音量 (0～15) | リリース音量を即座に変更 遷移中のリリース音量を即座に指定値で上書きします。 @Rコマンドや@RVコマンドでの設定値には影響せず、発音中の音にのみ有効です。 リリースを伸ばして後述の@RNコマンドにより複数トラックで分散和音を鳴らす際、コードチェンジ時に音が濁るのを防ぎたい場合などに有用です。
@RA＜値＞ | リリース音量 (0～15) | 直後の1音のみリリース音量を変更 コマンド実行直後の1音のみリリース音量を変更します。 @Rコマンドや@RVコマンドでの設定値には影響せず、直後の音にのみ有効です。
@RD＜値＞,＜値＞ | スイッチ,フレーム数 (0～1/-/+/-1, (L)1～255) | リリースディレイ指定 1または「+」にすると、リリース時の音程がひとつ手前のものになります。 ドライバで処理しますので、休符を入れなくてもQコマンド等でキーオフした瞬間に発動します。 0または「-」で効果オフです。 また、第2パラメータで長さを指定すると、その長さで次の音程へと進みます。 無視定時のデフォルト値は255フレームです。 数値のみを記述するとフレーム数での指定、頭に「L」を付けて記述すると音長での指定となります。
    1 @r12,12 @rd1,L4 q3 l4 cde
    ; 「e」をキーオフした直後のリリースでは「d」が鳴り、
    ; 4分音符ぶんの時間が経過すると「e」に変化する
第1パラメータを-1にすると、リリースディレイの音程のみリセットできます。
    1 q4 l8 @r13,5
    1 @rd1 [ceg>c<]
    1 @rd-1 [dfa>d<]
    ; 1回目の「d」の直後のみリリースディレイのピッチを
    ; リセットして「>c」の音を残さないようにする
@RN＜値＞,＜値＞ | 間隔,開始音数 (0～7/-, 0～7) | 指定間隔で音符を休符に置換 何音おきに何音目から発音するかを設定します（発音しない音符は休符に置換されます）。 間隔に0または「-」にすると効果オフ、開始音数に0を設定すると間隔のみ設定となります。 値を適切に設定すると各トラックで交互に発音できますので、通称「くし抜き」と呼ばれるような、リリースを伸ばしながら複数のトラックで分散和音を鳴らして余韻を残す手法などの表現に有用です。
    1  @RN1,1  ; 1音おきに発音 (1音目から)
    2  @RN1,2  ; 1音おきに発音 (2音目から)
    12 @R14,9  ; リリース音量=14、リリース時間=9

    ; 上記設定によりトラック1と2で交互に発音
    12 l8 q6cegb>e<bge @RL5 dfa>cfc<af @RL5
    12 egb>dgd<bg @RL5 fa>ceaec<a @RL5
    ; ( @RL5 = コードチェンジの瞬間だけリリース音量を5に )
@D＜値＞,＜値＞ | 音数,音量 (0～2/255/-, 0～15) | セルフディレイ指定 休符で発動するタイプの1chディレイ（エコーマクロ）です。 指定した音数分だけ戻した音符を指定した音量で鳴らすように休符を置換します。 効果の解除は「@D-」です。 @D255、または音量の指定を0にしても解除できます。 なお、コンパイラ内部で置換処理しているため、Qコマンドで短くした音の隙間には発動しません。 Qコマンドによる隙間にディレイ成分を付加したい場合は、@Rコマンドと@RDコマンドを使用してください。
    1 l16 v15 @D1,12 crdrerfrgr
    ; l16 v15 crdv-3cv+3ev-3dv+3fv-3ev+3gv-3f と等価
@D>＜値＞ | 音数 (1～3) | セルフディレイのバッファを進める 値は進める音数で、省略時は1です。 長い音符のあとにバッファが残るのを回避できます。
@D+＜値＞ | 〃 | 〃
@D<＜値＞ | 音数 (1～3) | セルフディレイのバッファを戻す 値は戻す音数で、省略時は1です。 途中でキーオンを挟む場合などに使用します。
@DR＜値＞ | 音数 (0～1, -/+) | セルフディレイの休符処理 セルフディレイが休符になる場合、直前の音で埋めるかどうかを指定します。 1または「+」で効果オン（デフォルト）、0または「-」で効果オフです。
@C＜値＞ | トラック番号 (1～3) | リズム割り込みトラック選択 リズムを割り込ませるトラックの指定です。 値を省略すると実行トラックが選択されるため、リズムを割り込ませたいトラックに「@C」を書くだけでそのトラックに割り込ませられるようになります。 キーオンしている最中に切り替えると発音が乱れるため、区切りの良いところでご使用ください。
    1 o5 @c c2 e2
    2 o3 l8 cccc @c cccc
    3 o3 g1
    r l8 [ bhsh ]
    ; 前半2拍はトラック1、後半2拍はトラック2にリズム割り込み
P＜値＞ | 加算値 (0～255) | ポルタメント1 音符を鳴らすたびに前回の音程から遷移するタイプのポルタメントです。 1フレームごとに指定値ずつ周波数レジスタに加減算します。
    1 c p10 ge>d<b
P_＜音程＞ |  | ポルタメント1の開始音程 Pコマンドによるポルタメント1の開始音程を設定します。 ポルタメント有効時にのみ設定可能です。
    1 p10 p_o5c <e2 p_<g >c4
    ; o5cからo4eまで2分音符でポルタメントした後、
    ; o3gからo4cまで4分音符でポルタメント
＜音程＞_＜音程＞ |  | ポルタメント2 音程1から音程2に遷移するタイプのポルタメントです。 1フレームあたり周波数レジスタ±1未満になる遅い遷移は表現できません。
    1 g_>c2
    ; ソから1オクターブ上のドまで2分音符かけて遷移
＜音程＞_\＜音程＞ |  | ポルタメント3（疑似ポルタメント） 音程1から音程2に遷移するタイプのポルタメントです。 1フレームあたり周波数レジスタ±1未満の遷移も表現できますが、コンパイラ内で1フレーム単位の音符、スラー、デチューンに変換して出力していますので、データサイズが非常に膨らむ点にご注意ください。
    1 d_a1^1
    ; レからラまで2小節かけて遷移
P_Q＜値＞ | モード (0～1/+/-) | ポルタメント・クオンタイズ 「音程1_音程2」によるポルタメント時にQコマンドや@Qコマンドを考慮するかどうかの設定です。 1（または「+」）でオンにすると、キーオフの時点で音程が到達するようになります。 0（または「-」）でオフにすると、Q/@Qの設定にかかわらず音長に応じた遷移となります。
    1 P_Q- q4 c_g2 ;ソまで遷移しない (デフォルト)
    1 P_Q+ q4 c_g2 ;ソまで遷移する
P_R＜値＞ | モード (0～1/+/-) | ポルタメント・リバース 「音程1_音程2」によるポルタメントの始点と終点を反転させるかどうかの設定です。 1（または「+」）でオンにすると、始点と終点が反転します。 0（または「-」）でオフにすると、通常の動作になります。
P_W＜値＞ | フレーム数 (0～254) | ポルタメント・ウェイト 通常、ポルタメントとノートエンベロープは併用できませんが、ノートエンベロープでアタック部分にニュアンスを付けながらポルタメントをかけたい場合、このコマンドでアタック部分のフレーム数を指定することで疑似的に併用できます。 （指定フレーム以降でノートエンベロープからポルタメントに切り替わるため）
    @N0=0 12 0
    1 P_W2 @N0 c_g4

    ; アタックの2フレーム分には「0 12」のノートエンベロープが効き、
    ; 3フレーム目からポルタメントが掛かりはじめる
＜音程＞'＜音程＞ |  | グリッサンド 音程1から音程2に半音単位でスライドします。 @Gコマンドにより、グリッサンド中の音符をスラ―で繋げるかどうかを選択できます。
    1 f'>e2
    ; ファから1オクターブ上のミまで2分音符かけて半音ずつ遷移
    1 @g1 c'g4
    ; ドからソまで4分音符かけて音を繋ぎながら半音ずつ遷移
@G＜値＞ | モード (0～1) | グリッサンドモード 「 ' 」によるグリッサンド中の音符をスラ―で繋げるかどうかを選択できます。 0で通常、1でレガートです。
"…/…/…"＜値＞,＜値＞ | 音長,パターン | アルペジオ（アルペジエーター） 「 " 」で括った複数の音符を、全体で指定音長になるように展開します。
    1 LA8 "ceg"1
    ; LA8 cegcegce と等価
    ; (全体で全音符の長さになる)
    1 LA16,8 "ceg"2
    ; c16e8g16c8e16g16 と等価
    ; (全体で2分音符の長さになる)
また、第2パラメータ（音長の後）でパターンを指定できます。
0 | ノーマル
1 | リバース
2 | オルタネート（ノーマル）
3 | オルタネート（リバース）
4 | ランダム
    1 L2 LA16
    1 "cegb",0 r ; cegb cegb r2 と等価
    1 "cegb",1 r ; bgec bgec r2 と等価
    1 "cegb",2 r ; cegb gece r2 と等価
    1 "cegb",3 r ; bgec egbg r2 と等価
    1 "cegb",4   ; c、e、g、bのいずれかをランダムで8音鳴らす
さらに、パターン0に限り、「 / 」でアルペジオ内のループポイントを2箇所まで設定できます。 アルペジオの最初だけ違う音程を鳴らす時などに有用です。 「 /＜ループ回数＞」でループ回数も指定できます。
    1 "ce / df"
    ; ce dfdfdf… と等価
    1 "ce /2 df"
    ; cece dfdfdf… と等価
    1 "ce / df /2 eg"
    ; ce dfdf egegeg… と等価
LA＜値＞ | 音長 | アルペジオ用デフォルト音長 アルペジオ内の音符1個あたりの音長を設定します。 「%」を付けるとフレーム数で設定可能です。 加減算には対応していません。 付点は定義できますが、付点使用時のみ内部でフレーム数に変換していますので、LAコマンド実行時のテンポに依存する点にご注意ください。 Lコマンドとは独立しています。
LA＜値＞,＜値＞,…＜値＞ | 音長,音長,…音長 | アルペジオ用音長シーケンス 音符や休符で音長を省略した時の音長を順番に設定します（最大16個）。 値を省略すると、1音目は16分音符、2音目以降は直前の音長が再設定されます。 シーケンスを最後まで演奏、または「LA-」で最初にループします。 シーケンスを解除するときは、LAコマンドでデフォルト音長を再設定してください。
LA- |  | 音長シーケンス・カウンタリセット（アルペジオ用） 音長シーケンス（アルペジオ用）の読み込み位置を先頭に戻します。
VA＜値＞,＜値＞ | 番号,終端処理 (0～31/255/-,0～15) | アルペジオ用音量シーケンス指定 アルペジオで自動的に音量シーケンスを毎回設定する機能です。 アルペジオ開始時にオン、アルペジオ終了時にオフします。 第1パラメータはアルペジオ開始時の音量シーケンス番号で、0～31で設定します。 第2パラメータはアルペジオ終了時の処理です。下記の機能を選択できます。
0（省略） | 何もしない
1 | アルペジオ開始前の音量に戻す
2～15 | V2～15を設定
両パラメータを省略するか「VA-」で機能オフです（VSも解除されます）。
    vs0=15 12 9

    1 va0 LA32 L4 "ceg" e "cfa" f
    ; ↑ LA32 vs0 "ceg"4 e4 vs0 "cfa"4 f4 と等価

    1 va0,13 "dfb" g "eg<c>" c
    ; ↑ vs0 "dfb" v13 g vs0 "eg<c>" v13 c と等価

    1 v12 va0,1 "dg+b" e "cea" a
    ; vs0 "dg+b" v12 e vs0 "cea" v12 a と等価
QA＜値＞,＜値＞ | 番号,終端処理 (0～31/255/-,0～8/255) | アルペジオ用Qシーケンス指定 アルペジオで自動的にQシーケンスを毎回設定する機能です。 アルペジオ開始時にオン、アルペジオ終了時にオフします。 第1パラメータはアルペジオ開始時のQシーケンス番号で、0～31で設定します。 第2パラメータはアルペジオ終了時の処理です。下記の機能を選択できます。
0、255、省略 | 何もしない
1～8 | Q1～8を設定
両パラメータを省略するか「QA-」で機能オフです（QSも解除されます）。
    qs0=8 4 3

    1 qa0 LA32 L4 "ceg" e "cfa" f
    ; ↑ LA32 qs0 "ceg"4 e4 qs0 "cfa"4 f4 と等価

    1 qa0,7 "dfb" g "eg<c>" c
    ; ↑ qs0 "dfb" q7 g qs0 "eg<c>" q7 c と等価
@QA＜値＞,＜値＞ | 番号,終端処理 (0～31/255/-,0～255) | アルペジオ用@Qシーケンス指定 アルペジオで自動的に@Qシーケンスを毎回設定する機能です。 アルペジオ開始時にオン、アルペジオ終了時にオフします。 第1パラメータはアルペジオ開始時の@Qシーケンス番号で、0～31で設定します。 第2パラメータはアルペジオ終了時の処理です。下記の機能を選択できます。
255、省略 | 何もしない
0～254 | @Q0～254を設定
両パラメータを省略するか「@QA-」で機能オフです（@QSも解除されます）。
    @qs0=0 4 3

    1 @qa0 LA32 L4 "ceg" e "cfa" f
    ; ↑ LA32 @qs0 "ceg"4 e4 @qs0 "cfa"4 f4 と等価

    1 @qa0,7 "dfb" g "eg<c>" c
    ; ↑ @qs0 "dfb" q7 g @qs0 "eg<c>" q7 c と等価
@AS＜値＞ | モード | アルペジオ・レガートモード アルペジオの各音符をスラ―で繋げるかどうかを選択できます。 0で通常、1でレガート（スラ―）です。
@AR＜値＞ | 音数 (-100～100) | アルペジオ音数 アルペジオの音数を設定します。 正数を指定すると最初から発音する音数、負数を指定すると最後から休符にする音数となります。 0で指定オフです。
    1 LA16 @ar5 "ceg"2
    ; L16 cegcerrr と等価
    1 LA16 @ar-2 "ceg"2
    ; L16 cegcegrr と等価
[＜値＞…/…]＜値＞ | リピート回数 (0～255) | リピート [ ] の範囲内を指定回数ぶん繰り返し演奏します。 リピート回数は最初か最後のいずれか片方でのみ指定してください。値の省略時は2で、0は演奏スキップです。 リピート内に「/」を含めると、最後のリピートをそこで抜けます。 ネスト（入れ子）は4重まで可能です。
@RM＜値＞ | モード番号 (0～2) | リピートモード設定 トラック内でリピートモードを切り替えます。他のトラックには影響しません。 値の意味は#REPEAT-MODEと同じです。
*＜値＞ | モード (0～3) | ミックスモード指定 トーンとノイズを切り替えます。 0: オフ（無音） 1: トーン 2: ノイズ 3: トーン+ノイズ（時分割）
N＜値＞ | 周波数 (0～31) | ノイズ周波数 ノイズ周波数を指定します。 値が小さいほど高くなります。
＜値＞~＜値＞ | コマンド次第 | ランダムパラメータ 指定した範囲内の乱数を発生させます。 リピート等と組み合わせると有用です。
    1 [ v9~13 c16 ]10
    ; v9～13をランダムに設定しながらドを10回発音
＜音程＞~＜音程＞ |  | ランダムノート 指定した範囲内の音程をランダムで発音します。 リピート等と組み合わせると有用です。
    1 [ o3c~o5b16 ]10
    ; o3cからo5bの範囲でランダムな音符を10回発音
S＜値＞,＜値＞ | タイプ,フレーム数 (0～15, (L)0～255) | ハードエンベロープ指定 第1パラメータはエンベロープタイプ（形状）です。 下図のパターンから選択できます。 第2パラメータを設定すると非矩形波（ブザーエフェクト）モードが有効になり、なおかつ指定したフレーム数で音量が半減するようになります。 数値のみを記述するとフレーム数での指定、頭に「L」を付けて記述すると音長での指定となります。 （このモードを有効にするとコンパイラ側でエンベロープ周期が自動的に設定されるようになるため、M+コマンドを使う必要はありません） 第2パラメータを省略すると、通常モードになります。 第1パラメータを省略して第2パラメータだけ設定すると、現在のタイプを維持したまま音量半減フレーム数だけ設定できます。 【参考】エンベロープタイプ
M＜値＞ | 周期 (0～65535) | ハードエンベロープ周期 値が大きいほど遅い遷移となります。
M+ |  | ハードエンベロープ周期・自動追従オン 周期が音符に自動で追従するようになり、ハードエンベロープで非矩形波（ブザーエフェクト）を発音できます。 （オクターブ5以上は鳴らせる音程に制限があります） Sコマンドの第2パラメータを設定する場合、このコマンドを指定する必要はありません。 「S8,0」と「S8 M+」は等価です。
M- |  | ハードエンベロープ周期・自動追従オフ 通常の数値での設定などができる状態に戻ります。
MO＜値＞ | オクターブ値 (1～8) | ハードエンベロープ周期・音階指定用オクターブ設定 下記のM＜音名＞実行時に反映されます。 Sコマンドの第2パラメータを設定する場合、このコマンドを指定する必要はありません。
M＜C～B/+/-＞ | 音名 (c～b/+/-) | ハードエンベロープ周期・音階指定 ハードエンベロープ周期を音階で指定でき、ハードエンベロープで非矩形波（ブザーエフェクト）を発音できます。 （オクターブ5以上は鳴らせる音程に制限があります） Sコマンドの第2パラメータを設定する場合、このコマンドを指定する必要はありません。
MK＜値＞ | 移調値 (-84～84) | ハードエンベロープ周期・音階指定用トランスポーズ M＜音名＞、M+コマンド、またはSコマンドの第2パラメータ有効時に反映されます。
M\＜値＞ | デチューン値 (-1000～1000) | ハードエンベロープ周期デチューン PSGの仕様上、ブザーエフェクトは周期を±1させるだけでもピッチが大きく変わります。
TS＜値＞ | 再生速度 (0～7) | スロー再生 値が大きいほど遅くなります。0で本来のテンポです。 割り込み周期自体を変更するため、ソフトエンベロープなどの遷移も遅くなります。
Y＜値＞,＜値＞ | レジスタ,データ (0～15, 0～255) | PSGレジスタ書き込み PSGのレジスタに任意のデータを書き込みます。 （ドライバに上書きされて、意図しない結果になることがあります）
J＜値＞ | マーカー番号 (0～5) | ジャンプマーカー（番号） 0～5がF5～F10キーに相当し、この位置までシークまたは早送りを行います（#FAST-FORWARDの有無で動作が変わります）。 値を省略すると0と等価になり、「J」とだけ書いてF5キーを押すという使い方も想定されています。
J="＜文字列＞" | マーカー名 (任意) | ジャンプマーカー（文字列） 任意の名前でマーカーを定義でき、シークバー上のマーカーをクリックするとその位置までシークできます。 長いマーカー名は、マウスカーソルをマーカーに合わせるとすべて表示されます。 同じマーカー名を複数の位置で定義した場合、最後に定義したものが有効です。 また、半角小文字のマーカー名は常に大文字になりますのでご注意ください。
    1 cdef j="テスト" gab>c
    ; g の付近に「テスト」のマーカー名でマーカーを定義
@ON |  | キーオン有効 @OFFでミュートしたトラックの発音を再開します。
@OFF |  | キーオン無効 オフにしている間、すべての音符を休符に置換します。
@L |  | 無限ループ指定 トラックを最後まで演奏した後、この位置まで戻ります。
@FO＜値＞,＜値＞ | フレーム数,ループ回数 (1～255, 1～255) | フェードアウト 指定フレーム数ごとに音量を-1していきます。 第2パラメータは省略可能です。
$＜文字列＞ | マクロ名 | マクロ展開 定義しておいたマクロを展開します。 ネスト（入れ子）も可能です。
    $HOGE=cde
    $FUGA=gab
    $PIYO=$HOGE d
    1 l8 $PIYO $HOGE f $FUGA:4 >c
    ; l8 cde d cde f gab4 >c と等価
?＜文字列＞,＜文字列＞,… | マクロ名 | ステップマクロ選択 Xコマンド実行時に展開されるマクロを選択します。 カンマでマクロ名を並べると、同時に展開されるマクロを最大3個まで選択できます。
    1 ?TEST1,TEST2
    ; ステップマクロ「TEST1」と「TEST2」を選択
X＜値＞,＜値＞,＜値＞ | ステップ番号 | ステップマクロ展開 ?コマンドで選択したステップマクロから、任意のステップ番号のMMLを展開します。 ステップ番号はXコマンドを実行するたびに自動で加算されますので、番号を省略して「X」を並べるだけで連続したステップを最初から順番に呼び出せます（最後まで呼び出すと最初に戻ります）。 カンマでステップ番号を並べると、最大3つのステップマクロの各ステップ番号を指定できます。
    ?TEST1 = o4 / o5 / o3
    ?TEST2 = c  / d  / e
    ?TEST3 =    / &  /

    1 ?TEST1,TEST2,TEST3
    1 x x x
    ; o4c o5d& o3 e と等価

    1 x2,,1 g
    ; o3c& g と等価
    ; (x2,,1 = TEST1のステップ2とTEST3のステップ1を選択)
!S＜値＞ | 効果音番号 (1～99) | 効果音発音 指定した番号の効果音を発音します。 シーケンスに割り込んで発音しますので、トラックのタイミングがずれることはありません。 なお、現状では効果音よりもリズムトラックが常に優先されますので、リズムの割り込まれるトラック（デフォルトではトラック3）を効果音で使用する場合はリズムトラック側を休符にしてください。
@F＜値＞ | 機能の指定 0 : 合計フレーム始点 1 : 合計フレーム終点 2: トラック先頭から 3: この箇所から8個分の音符 | フレーム数表示 トラックごとに、@F0～@F1で指定した範囲の合計フレーム数を表示します。 値を省略、または2にするとトラックの先頭から@Fまでの総フレーム数を表示します。 また、@F3でそこから8個分の音符および休符の各フレーム数を表示できます。 複数トラックで同時に使用可能です。
    1 cde @f0 fg @f1 ab
    ; fg の範囲のフレーム数を表示
    1 cdef @f ga
    ; cdef の範囲のフレーム数を表示
    1 cdef @f3 gab
    ; gab の各音符のフレーム数を表示
@I |  | デバッグ用パラメータ表示 このコマンドを実行した位置での各パラメータの内容をサブウィンドウに出力します。
@NO＜音程＞=＜値＞ | 音程 (o1c～o8a+) 周波数レジスタ値 (0～4095) | 周波数テーブル書き換え 任意の音程の周波数テーブルを書き換えます。 周波数レジスタ値に「+」や「-」を付けると相対指定です。 複数の周波数レジスタ値をカンマで並べると、指定した音程を起点として半音ずつ設定できます。 実行は各トラック内から行いますが、全トラックに影響します。 このコマンドを使用する場合、ドライバの周波数テーブルがRAM上に配置されている必要があります。
    1 @no5e-=178
    ; オクターブ5のミ♭の周波数レジスタ値を178に
    1 @no4c=+3
    ; オクターブ4のドの周波数レジスタ値を+3する
    1 @no5d=+3,-1,,+2
    ; オクターブ5のレは+3、レ♯は-1、ミは変更なし、ファは+2
{ ＜MML＞ } |  | 改行可能エリア この範囲内は改行しても同じトラックとして扱われます。
    1 {
     cde
     fga
    }
    ; 1 cde fga と等価
| |  | 縦ライン表示／区切り記号 各トラック内のMMLに記述すると、その位置のピアノロール上に縦ラインを表示します。 また、区切り記号としても使用可能です。 空白やタブと同じく、マクロ名とコマンドが繋がってしまう場合などに使用します。
: |  | 区切り記号 空白やタブと等価です。 マクロ名とコマンドが繋がってしまう場合などに使用します。
; // |  | コメント 行末までをコメントとして扱います。
/* ～ */ |  | 範囲指定コメント 指定範囲内をコメントとして扱います。 複数行も可能です。

### リズムトラック

リズムパートを定義するトラックです。
行頭の1文字目にトラック名（R）を記述し、続けてMMLを入力していきます。

    R b4s4b8b8s4
    ;トラックRで「ドッタンドドタン」を鳴らす

コマンド | パラメータ | 機能
--- | --- | ---
任意の1文字＜値＞ | 音長など | 指定リズム音を発音 プリセット音色として下記の10種類が定義されています。 B=バスドラム S=スネアドラム K=ハイタム M=ミドルタム N=ロータム H=クローズハイハット I=ペダルハイハット O=オープンハイハット C=クラッシュシンバル D=バスドラム+クラッシュシンバル
'＜コマンド＞ | コマンド名 | コマンドモード #RHYTHM-ATOZヘッダにより、リズム音色名とコマンド名が重複した際にコマンド側の機能を呼び出すために使用します。
    #RHYTHM-ATOZ
    @R:V=*1 v15 :400 / :600 / :800 ; Vにタムを定義
    R  'V13 ;音量13
    R  V16  ;音量16ではなく、Vに定義したタムを16分音符で演奏
V＜値＞ | 音量 (0～15) | 音量指定（全リズム音） 音色データの音量指定も加味して発音されます。
V+＜値＞ | 相対音量 (0～15) | 音量加算（全リズム音） 現在の音量からの加算です。 値を省略すると +1 になります。
V-＜値＞ | 相対音量 (0～15) | 音量減算（全リズム音） 現在の音量からの減算です。 値を省略すると -1 になります。
    1 v15 b [v- b]3
    ; v15 b v14 b v13 b v12 bと等価
V＜音名＞＜値＞ | 音量 (0～15) | 音量指定（指定リズム音） リズム音ごとに別々の音量を設定します。
    R vb15 vs14 vh11
    ; バスドラム音量15、スネア音量14、ハット音量11に
V＜音名＞+＜値＞ | 相対音量 (0～15) | 音量加算（指定リズム音） 現在の音量からの加算です。 値を省略すると +1 になります。
    R v15 s vs11 s vs+ ss vs+ ss
    ; v15 s vs11 s vs12 ss vs13 ss と等価
V＜音名＞-＜値＞ | 相対音量 (0～15) | 音量減算（指定リズム音） 現在の音量からの減算です。 値を省略すると -1 になります。
T＜値＞ | テンポ (1～999) | テンポを設定 （ノーマルトラックと同等）
@T＜値＞ | フレーム数 (4～100) | タイムベースでテンポを設定 （ノーマルトラックと同等）
@T＜値＞,＜値＞ | 音長,フレーム数 (4～64, 1～100) | 音長とタイムベースでテンポを設定 （ノーマルトラックと同等）
@C＜値＞ | トラック番号 (1～3) | 割り込みトラック選択 リズムを割り込ませるトラックの指定です。 リズムトラックの場合、値を省略するとトラック3が選択されます。 キーオンしている最中に切り替えると発音が乱れるため、区切りの良いところでご使用ください。
R＜値＞ | 音長 | 休符 （ノーマルトラックと同等）
L＜値＞ | 音長 | 音長省略時のデフォルト音長 （ノーマルトラックと同等）
. |  | 付点 （ノーマルトラックと同等）
^＜値＞ | 音長 | タイ （ノーマルトラックと同等）
+ |  | 音長加算 音長を加算します。タイと等価です。
- |  | 音長減算 音長を減算します。
[＜値＞…/…]＜値＞ | リピート回数 (0～255) | リピート （ノーマルトラックと同等）
@RM＜値＞ | モード番号 (0～2) | リピートモード設定 （ノーマルトラックと同等）
TS＜値＞ | 再生速度 (0～7) | スロー再生 （ノーマルトラックと同等）
Y＜値＞,＜値＞ | レジスタ,データ (0～15, 0～255) | PSGレジスタ書き込み （ノーマルトラックと同等）
J＜値＞ | マーカー番号 (0～5) | ジャンプマーカー （ノーマルトラックと同等）
@ON |  | キーオン有効 （ノーマルトラックと同等）
@OFF |  | キーオン無効 （ノーマルトラックと同等）
@L |  | 無限ループ指定 （ノーマルトラックと同等）
@FO＜値＞,＜値＞ | フレーム数,ループ回数 (1～255, 1～255) | フェードアウト （ノーマルトラックと同等）
$＜文字列＞ | マクロ名 | マクロ展開 （ノーマルトラックと同等）
@F |  | フレーム数表示 （ノーマルトラックと同等）
@I |  | デバッグ用パラメータ表示 （ノーマルトラックと同等）
{ ＜MML＞ } |  | 改行可能エリア （ノーマルトラックと同等）
| |  | 縦ライン表示／区切り記号 （ノーマルトラックと同等）
: |  | 区切り記号 （ノーマルトラックと同等）
; // |  | コメント （ノーマルトラックと同等）
/* ～ */ |  | 範囲指定コメント （ノーマルトラックと同等）

### 音色定義1（フレーム方式ソフトエンベロープ）

基本的には音色エディタ上の音色パラメータが転送されますが、下記の書式によりMMLでの定義も可能です。
「@＜音色番号＞=＜データ＞」の形式で定義してください。

    @3=FEDDCCCB
    ;3番に音色を定義する

音色番号は0～15で、後述の音色定義2（ADSR方式ソフトエンベロープ）と共用です。
後から定義したデータで上書きされます。

#### データ書式

データ | 動作
--- | ---
0～9 | 音量 V0～9にして1フレーム維持
A～F | 音量 V10～15にして1フレーム維持
0～F:＜フレーム数＞ | 音量 指定音量を指定フレームぶん維持
0～F=＜フレーム数＞ | 音量遷移 指定音量まで指定フレームかけて遷移
I+＜フレーム数＞ | 音量加算インターバル（データ展開タイプ）を設定 0～Fの遷移と並行で指定フレーム数ずつ音量加算
I-＜フレーム数＞ | 音量減算インターバル（データ展開タイプ）を設定 0～Fの遷移と並行で指定フレーム数ずつ音量減算
VI+＜フレーム数＞ | 音量加算インターバル（トラックのVIコマンドと共用）を設定 0～Fの遷移と並行で指定フレーム数ずつ音量加算
VI-＜フレーム数＞ | 音量減算インターバル（トラックのVIコマンドと共用）を設定 0～Fの遷移と並行で指定フレーム数ずつ音量減算
*＜モード＞ | ミックスモード指定 0: オフ 1: トーン 2: ノイズ 3: トーン+ノイズ
N＜周波数＞ | ノイズ周波数（0～31） ※通常トラックと同様の書式
S＜番号＞ | ハードエンベロープ形状（0～15） 形状をセットして1フレーム待機
H- （「-」は省略可） | ハードエンベロープ・音量半減 周波数レジスタに0を設定し、トーン有効・ノイズ無効にします。 先頭で「*0 S14」のようにしておき、途中で「H-」を実行するとブザーエフェクトの音量が半減します。 先頭で「H- S14」のようにすると、最初から音量を半減させた状態でのキーオンも可能です。 このコマンドを含めた音色の使用時は自動で音程追従（M+）が有効になります。 また、@M、@P、ポルタメントは併用できないため、強制的に解除されます。
H+ | ハードエンベロープ・ユニゾン復帰 トーン有効・ノイズ無効にして、周波数レジスタを元の値に戻します。 ハードエンベロープの音量だけを戻すときは、このコマンドではなく「*0」を実行してください。
R | 1フレーム待機
R:＜フレーム数＞ | 指定フレーム待機 内部的には指定個数の「R」に展開しているため、1フレームにつき1バイト消費します。
@P＜番号＞ | ピッチエンベロープ（0～15/255/-） ※通常トラックと同様の書式
@M＜番号＞ | ビブラート（0～15/255/-） ※通常トラックと同様の書式
@N＜番号＞ | ノートエンベロープ（0～15/255/-） ※通常トラックと同様の書式
@A＜番号＞ | 〃
[＜回数＞ ＜…＞]＜回数＞ | リピート コンパイラ内で展開、ネスト不可
    @0 = [FD] [CA]3 [4 B9]8

    ; @0 = FDFD CACACA B9B9B9B9 8 と等価
    ; (最後は8回リピートにはならない)
L | 無限ループ 最後まで鳴らしたら、この位置まで戻る。最大15バイト手前まで
, . / | （いずれも使用可） | 区切り記号 （音量とフレーム数などが繋がるのを防ぐため）

    @0=F 8=10

    ; 1フレーム目はV15、そこから10フレームかけてV8まで下げる

    @0=A:8

    ; V10で8フレーム維持 (AAAAAAAA と同じ)

    @0=FED L C:4 D:4

    ; V15 V14 V13と1フレームずつ下げてから、
    ; V12を4フレーム→V13を4フレームのループ

    @0=*2 I0 N31 FF N15 D:5 N10 I-8

    ; ノイズ周波数31/音量15で2フレーム
    ; ↓
    ; ノイズ周波数15/音量13で5フレーム
    ; ↓
    ; 以降ノイズ周波数10で8フレームずつ音量減衰

    @n0 = 12 0
    @0 = @n0 fed
    @1 = @n- edc
    1 @0,1 @d1 l8 frerdr

    ; このように音色定義内でノートエンベロープを指定することによって、
    ; セルフディレイ時のみノートエンベロープをオフにするような表現も可能

    @0 = *0 S8 RRR *1 FDC
    1 @0 m+ cder

    ; 疑似ノコギリ波を4フレーム鳴らした後、通常トーンのソフトエンベロープに移行

    @0 = L S8 R
    1 *0 @0 m+ cder

    ; 2フレームごとにSコマンドを実行して意図的に音を濁らせる

### 音色定義2（ADSR方式ソフトエンベロープ）

「@E＜番号＞=＜AR＞,＜DR＞,＜SR＞,＜SL＞」の形式で定義してください。

    @E5=28,25,8,10
    ; 5番に音色を定義する

音色番号は0～15で、音色定義1（フレーム方式ソフトエンベロープ）と共用です。
後から定義したデータで上書きされます。
便宜的にADSR方式と呼んでいますが、リリースに関してはこの方法では定義できません、
演奏データ側から@Rコマンドで設定してください。

#### 各パラメータについて

パラメータ | 意味
--- | ---
＜AR＞ | アタックレート 音が立ち上がる速度（0～31）
＜DR＞ | ディケイレート SLで指定した音量になるまでの減衰速度（0～31）
＜SR＞ | サスティンレート ディケイ処理後から音量0になるまでの減衰速度。31が最速、0で持続音（0～31）
＜SL＞ | サスティンレベル DRの到達音量（0～15）

### リズム音色定義

基本的にはリズム音色エディタ上の音色パラメータが転送されますが、下記の書式によりMMLでの定義も可能です。
「@R:＜音名＞=＜データ＞」の形式で定義してください。
音名は任意のアルファベット1文字で、最大26個です。

    @R:B=V15 :1000 / V14 :2000
    ; Bにリズム音色を定義する

次の10音色がプリセット定義済みです。
プリセットと同じ音名を指定すると、その曲データの中でのみ自作音色で上書きされます。
B=バスドラム
S=スネアドラム
K=ハイタム
M=ミドルタム
N=ロータム
H=クローズハイハット
I=ペダルハイハット
O=オープンハイハット
C=クラッシュシンバル
D=バスドラム+クラッシュシンバル

#### データ書式

データ | 動作
--- | ---
V＜値＞ | 音量 (0～15)
:＜値＞ | 音程 (0～8191) ※周波数レジスタの値
*＜値＞ | ミックスモード (0=オフ　1=トーン　2=ノイズ　3=トーン+ノイズ)
N＜値＞ | ノイズ周波数 (0～31)
S＜値＞ | ハードエンベロープタイプ (0～15)
M＜値＞ | ハードエンベロープ周期 (0～65535)
[＜回数＞ ＜…＞]＜回数＞ | リピート ※コンパイラ内で展開、ネスト不可
/ . , | （いずれも使用可） | 1フレーム進める ※各コマンドは1フレーム内で複数指定でき、これらの記号でフレームを進める

    ;【参考】プリセットに準ずる音色定義（一部）

    @R:B = *1 :800 V15 / :2000 V14
    @R:S = *1 :450 V15 / *2 N4 / N1
    @R:M = *1 :500 V15 / :630 V14 / :760 V13
    @R:C = *2 V15 N3 / V14 N2 / V13 N2 / N1
    @R:H = *2 N1 V15

### ビブラート定義

「@M＜番号＞=＜Delay＞,＜Frame＞,＜Depth＞,＜Type＞,＜AddDepth＞,＜AddCount＞,＜LoopMode＞」の形式で定義してください。
後半の3パラメータは省略できます。

    @M0=20,3,8,2
    ; (0番のビブラートを定義する)
    ; ビブラートをかけはじめるまで20フレーム伸ばす
    ; 片方の振幅に3フレームかける
    ; ピッチの深さは8
    ; タイプ2番 (上方向から始まる三角波)

    @M0=20,3,6,0,8,5
    ; (ビブラート2周期目から5周期分かけて+8ずつ振幅を深くしていく設定)
    ; 1周期目は深さ6
    ; 2周期目は深さ14
    ; 3周期目は深さ22
    ; 4周期目は深さ30
    ; 5周期目は深さ38
    ; 6周期目は深さ46 (以降この深さを維持)

ビブラート番号は0～15ですが、ビブラートとピッチエンベロープで同じ番号は指定できません。
（内部処理をピッチエンベロープと共用しているため）

#### 各パラメータについて

パラメータ | 意味
--- | ---
＜Delay＞ | ディレイ ビブラートが掛かるまでのフレーム数（0～255）
＜Frame＞ | フレーム 速さ。1振幅あたりのフレーム数（1～63）
＜Depth＞ | デプス 深さ。1振幅あたりのピッチ変化量（1～127）
＜Type＞ | タイプ ビブラートの種類（0～11） 0 = 三角波 (下方向から) 元の音程を中心に上下 1 = 矩形波 (下方向から) 〃 2 = 三角波 (上方向から) 〃 3 = 矩形波 (上方向から) 〃 4 = 三角波 (下方向のみ) 元の音程を上端とする 5 = 矩形波 (下方向のみ) 〃 6 = 三角波 (上方向のみ) 元の音程を下端とする 7 = 矩形波 (上方向のみ) 〃 8 = サイン波 (下方向から) 元の音程を中心に上下 9 = サイン波 (上方向から) 〃 10 = サイン波 (下方向のみ) 元の音程を上端とする 11 = サイン波 (上方向のみ) 元の音程を下端とする 【参考】ビブラート一覧
＜AddDepth＞ | デプス加算値 【省略可】 2周期目以降、この値ずつ深さを加減算する（-30～30、省略時は加減算しない） ※三角波・サイン波タイプでのみ設定可
＜AddCount＞ | デプス加減算の回数 【省略可】 深さを加減算する周期の回数（1～10、省略時は4回） ※三角波・サイン波タイプでのみ設定可
＜LoopMode＞ | ループモード 【省略可】 0なら最後の振幅の深さを維持、1なら最初の深さに戻る（省略時は0） ※三角波・サイン波タイプでのみ設定可

### ピッチエンベロープ定義

行頭にて「@P＜番号＞=＜データ＞」の形式で定義してください。

    @P1 = -30 6 6 6 6 6 0
    ; 1番のピッチエンベロープを定義する

ピッチエンベロープ番号は0～15ですが、ピッチエンベロープとビブラートで同じ番号は指定できません。
（内部処理をビブラートと共用しているため）

#### データ書式

データ | 動作
--- | ---
W＜値＞ | ウェイト数 最初のみ使用可能（1～255）
数値 | 相対ピッチ 1フレーム前からの相対値（-127～127）
_＜値＞ | 相対ピッチ繰り返し 指定フレーム分、相対ピッチ指定を繰り返す (1～127)
    @P0 = 1_6 -2_3 0
    ; @P0 = 1 1 1 1 1 1 -2 -2 -2 0 と等価
[＜回数＞ ＜…＞]＜回数＞ | リピート コンパイラ内で展開、ネスト不可
L | ループポイント ピッチ指定を最後まで反映した後、この位置まで戻る （無視定時は最後の値を無限ループ）
, . / | または空白 （いずれも可） | 区切り記号 1区切り=1フレームとなります。

### ノートエンベロープ定義・数値指定

行頭にて「@N＜番号＞=＜データ＞」の形式で定義してください。

    @N2 = L,0,3,7
    ; 2番のノートエンベロープを定義する

    1 @N2 E1  ; EGBの高速アルペジオが鳴る

ノートエンベロープ番号は0～15で、@A（ノートエンベロープ定義・音名指定）と共用です。

#### データ書式

データ | 動作
--- | ---
数値 | 相対音程 1フレーム前からの相対値（-127～127）。半音単位です。 たとえば「4」を定義して「C」の音符を鳴らすと「E」の音程が鳴ります。
[＜回数＞ ＜…＞]＜回数＞ | リピート 指定範囲を指定回数で繰り返します。 ※コンパイラ内で展開、ネスト不可
    @N0=[ 7, 0 ]
    ; 7,0,7,0 ではなく 0,0,0,0,0,0,0 と解釈されてしまう
    @N0=[, 12, 0 ]
    ; 12,0,12,0 と等価
L | ループポイント ピッチ指定を最後まで反映した後、この位置まで戻ります。 無視定時は最後の値を無限ループします。
, . / | または空白 （いずれも可） | 区切り記号 1区切り=1フレームとなります。

### ノートエンベロープ定義・音名指定

行頭にて「@A＜番号＞=＜データ＞」の形式で定義してください。

    @A2=LCCEEGG
    ; 2番のノートエンベロープを定義する

    1 @A2 D1  ; 2フレームずつDF+Aの高速アルペジオが鳴る

ノートエンベロープ番号は0～15で、@N（ノートエンベロープ定義・数値指定）と共用です。

#### データ書式

データ | 動作
--- | ---
C～B、<、> | 音程 Cを基準値とした相対的な音程で指定します。
[＜回数＞ ＜…＞]＜回数＞ | リピート 指定範囲を指定回数で繰り返します。 ※コンパイラ内で展開、ネスト不可
L | ループポイント ピッチ指定を最後まで反映した後、この位置まで戻ります。 無視定時は最後の値を無限ループします。
, . / | または空白 （いずれも可） | 区切り記号 1区切り=1フレームとなります。

### 音量シーケンス定義

音符ひとつずつに対してVコマンドを自動的に追加する機能です。
行頭にて「VS＜番号＞=＜データ＞」の形式で定義してください。
シーケンス番号は0～31です。

    VS3=15 12 0 +2
    ; 3番の音量シーケンスを定義する

    1 VS1 cdefga
    ; v15 c v12 de v+2 fga という演奏になる

    VS1=14 L -3 +3
    1 VS1 cdefga VS b>c
    ; v14c v-3d v+3e v-3f v+3g v-3a v14b v-3>c と等価

#### データ書式

データ | 動作
--- | ---
1 ～ 15 | 音量 Vコマンドと等価です。
-1 ～ -15 | 相対音量（減算） V-コマンドと等価です。
+1 ～ +15 | 相対音量（加算） V+コマンドと等価です。
0 | スキップ Vコマンドを追加せずにスキップします。
[＜回数＞ ＜…＞]＜回数＞ | リピート 指定範囲を指定回数で繰り返します。 ※コンパイラ内で展開、ネスト不可
    VS2=[ 7, 15 ]
    ; 7,15,7,15 ではなく 15,15,15,15,15,15,15 と解釈されてしまう
    VS3=[ 3, 15, 12 ] 10
    ; 15,12,15,12,15,12,10 と等価
    ; (10回リピートにはならない)
L | ループポイント 音量を最後まで反映した後、この位置まで戻ります。 無視定時は「VS」が実行されるまでループしません。
, . / | または空白 （いずれも可） | 区切り記号 連続で複数の区切り記号を入れても1音分となります。

### Q/@Qシーケンス定義

音符ひとつずつに対してQコマンドを自動的に追加する機能です。
行頭にて「QS＜番号＞=＜データ＞」または「@QS＜番号＞=＜データ＞」の形式で定義してください。
シーケンス番号は0～31です。

    QS3=8 4 3
    ; 3番のQシーケンスを定義する

    1 QS3 cdefg
    ; q8 c q4 d q3 efg という演奏になる

    QS1=7 L 2 4
    1 QS1 cdefga QS b>c
    ; q7c q2d q4e q2f q4g q2a q7b q2>c と等価

#### データ書式

データ | 動作
--- | ---
（QSの場合） 1 ～ 8 （@QSの場合） 0～128 +1～126 %1～255 | ゲートタイム Q/@Qコマンドと等価です。
0（QSの場合のみ） | スキップ QSの場合、Qコマンドを追加せずに1音スキップします。 @QSの場合は「@Q0」を設定します。
[＜回数＞ ＜…＞]＜回数＞ | リピート 指定範囲を指定回数で繰り返します。 ※コンパイラ内で展開、ネスト不可
    QS2=[ 7, 4 ]
    ; 7,4,7,4 ではなく 4,4,4,4,4,4,4 と解釈されてしまう
    QS3=[ 3, 8, 3 ] 6
    ; 8,3,8,3,8,3,6 と等価
    ; (6回リピートにはならない)
L | ループポイント ゲートタイムを最後まで反映した後、この位置まで戻ります。 無視定時は「QS」が実行されるまでループしません。
, . / | または空白 （いずれも可） | 区切り記号 連続で複数の区切り記号を入れても1音分となります。

### マクロ定義

行頭にて「$＜マクロ名＞=＜MML＞」の形式で定義してください。
マクロ名には任意の文字列を指定できます。
文字数に制限はありません。

    $HOGEHOGE = cde
    1 $HOGEHOGE efg $HOGEHOGE agf

    ; cde efg cd agf という演奏になる

マクロはコンパイル時に展開されるため、音長などをマクロの直後に書けます。

    $KICK = o3c
    1 $KICK:4 $KICK:8 $KICK:8

    ; o3c4 o3c8 o3c8 という演奏になる

マクロの入れ子も可能です。

    $HOGE = cde
    $FUGA = $HOGE ga
    1 $HOGE fg $FUGA

    ; cde fg cde ga という演奏になる

### ステップマクロ定義

行頭にて「?＜マクロ名＞=＜定義文字列＞」の形式で定義してください。
マクロ名には任意の文字列を指定できます。
文字数に制限はありません。
定義文字列は 「 / 」 または 「 | 」 で区切って、各ステップのMMLを定義します。
「 / 」を連続で並べるとコメント扱いになってしまいますので、その場合は空白などを入れてください。

    ?TEST = c / d / / e8f8
    ; ステップマクロ「TEST」の
    ; ステップ 0 に「c」、
    ; ステップ 1 に「d」、
    ; ステップ 2 に空文字列、
    ; ステップ 3 に「e8f8」を定義

定義したMMLをトラック上で展開する際は、「?＜マクロ名＞」でステップマクロを選択してから「X」で展開します。
展開するステップマクロは最大3個までカンマで並べて同時に指定可能です。
「X＜ステップ番号＞」で任意のステップ番号を指定することもできます。
カンマで並べて任意のステップマクロのステップ番号を指定可能です。
なお、ステップ番号はXコマンドを実行するたびに自動で加算されますので、番号を省略して「X」を並べるだけで連続したステップのMMLを展開できます（最後まで展開すると最初に戻ります）。

    ?TEST1 = o4 / o5 / o3
    ?TEST2 = c  / d  / e
    ?TEST3 =    / &  /

    1 ?TEST1,TEST2,TEST3
    1 x x x
    ; o4c o5d& o3 e と等価

    1 x2,,1 g
    ; o3c& g と等価

### 効果音定義

行頭にて「!S＜効果音番号＞」で定義開始です。
これ以降のトラックデータはすべて効果音データとして認識されるようになります（そのため、必ず曲データの後に記述する必要があります）。
効果音番号は1～99です。
曲データ内で「!S＜効果音番号＞」を実行すると、その番号の効果音データを割り込ませて発音できます。
なお、使用にあたっては諸々の制限などがあります。 下記の点にご注意ください。

- 音色データは曲データと共用となります。
- @Cコマンド、@RMコマンドは使用できません。
- リズムトラックは使用できません。
- 効果音よりもリズムトラックが常に優先されますので、リズムの割り込まれるトラック（デフォルトではトラック3）を効果音で使用する際はリズムトラック側を休符にしておく必要があります。

    ; キックの音を効果音として定義し、曲に割り込ませる

    ; ---- 曲データ
    1 t150 l4
    1 !S1 cd !S1 ef !S1 ga !S1 b>c

    ; ---- 効果音
    !S1
    1 t120 o4b_<c24

    ; 和音を効果音として定義し、曲に割り込ませる

    ; ---- 曲データ
    1 t150 l4 o5
    1 !S1 cd !S2 ef !S3 ga !S1 b>c

    ; ---- 効果音
    !S1
    123 t120 l24 o4
    1 c
    2 e
    3 g

    !S2
    123 t120 l24 o4
    1 c
    2 f
    3 a

    !S3
    123 t120 l24 o4
    1 d
    2 g
    3 b