notemdx.exe 0.8 — 日本語説明書
この説明書について
notemdx.exe 0.8 は、X68000のMXDRV2用MDXを生成するMMLコンバータです。note.docの技術説明を、索引付きで整理しました。現在の仕様との差は各項の補足を優先してください。原版全文は同梱のnote.doc(CP932テキスト)で確認できます。
↑ 目次へ使用方法と原版スイッチの対応
現在の使い方
notemdx.exe [options] input.mml
notemdx.exe -c -z STAGE5.mus
notemdx.exe --encoding utf8 --output song.mdx song.mus
拡張子省略時は.mml、.musの順に探します。出力省略時は入力名の拡張子を.mdxに変更します。原版同様、引数なしのスイッチは-xprのように併記できます。-i、-z、-t、-wの文字列引数は、そのスイッチ以降の文字列を引数として読み取ります。
| オプション | 内容 |
|---|---|
--output FILE | MDXの出力先。旧版の-o FILEも判別可能な場合は受け付けます。引数なし-oは原版のPCMマップ指定です。 |
--encoding auto / utf8 / cp932 | 既定autoはBOM付きUTF-8、それ以外はCP932。includeにも適用。 |
-x / --reverse-octave | <と>の初期方向を反転。 |
-p / --ex-pcm | PCMをP〜Wの8トラックに拡張。 |
-iCHANNELS / --mute CHANNELS | 変換しないトラック。例-iABPQ。小文字可。 |
-c / --compress rests | 休符の圧縮。 |
-cn / --compress notes | 休符と、タイで連続した同音程の圧縮。 |
--compress none | 圧縮を無効化。 |
-z / --opt "*" | 全項目の最適化。 |
-zSELECTORS / --opt SELECTORS | dvqpt012から選択。--opt noneで無効化。 |
--help / --version | ヘルプ/版表示。 |
圧縮・最適化は既定では無効です。CLIまたはAPIで明示した設定は、MMLの#compress/#optに優先します。終了コードは成功0、変換エラー1、引数・入出力エラー2です。通常の変換エラーでは既存MDXを維持します。-r指定時は旧MDXを削除し、-e指定時は登録済みバンクを保存します。タイトルとPDX名はCP932に保存し、表現できない文字はエラーです。
原版スイッチとの対応
| 原版のスイッチ | 現在の対応 |
|---|---|
-mSIZE | ファイル全体の上限をKiB単位で指定。1〜65536、既定64。-m256で67,488バイトの元MDXと一致。トラック・音色開始位置の16bit制限は別途検査。 |
-x / -p | オクターブ方向反転/EX-PCM。対応済み。 |
-iCHANNELS | 原版形式を復元。--mute CHANNELSは別名として維持。 |
-r | 変換エラー時に既存MDXを削除。入力・include・読込バンクと同じファイルは削除しません。 |
-b | 変換エラー時にビープ。WindowsはBeep、他環境は端末BEL。可聴かどうかは環境によります。 |
-l / 引数なし-o | 認識して未対応警告。pcmuse.mapの生成/読込/論理和は行いません。-o単独では-lが必要なことも表示。 |
-c[n] / -z[dvqpt012] | 圧縮/最適化。対応済み。 |
-t[name] / -w[name] | 音色/波形バンクを保存。省略時tone.bin/wave.bin。CLI指定は#save-tone/#save-waveに優先。相対名は実行カレント基準。 |
-v / -v0 | 変換中トラックを表示。エラー行は対応端末で位置以降を赤色表示し、非対応端末・リダイレクトではASCII矢印。 |
-v1 | 変換中トラックとエラー行を表示し、位置の直前にASCIIの -> を挿入。 |
-1 | 最初の致命的エラーで中止。現実装は指定なしでも最初の致命的エラーで中止。 |
-e | エラー時にも要求された音色/波形バンクを保存。不完全なMDXは保存しません。最初のエラーまでの登録内容であり、エラー後の解析継続は未対応。 |
-t/-wのファイル名はスイッチに続けて書きます(例-wcustom.bin)。別引数に分ける形式ではありません。-oの曖昧さを避け、MDX出力先には--outputを使用してください。互換用-o FILEは、入力指定後、次の名前が.mdx/.MDXの場合、または出力名・入力名が連続する場合に受け付けます。原版のPCM指定は-loの併記が明確です。
#remove/#beep/#verは引き続き警告して無視します。上記のCLIスイッチを指定してください。#playは実行しません。各スイッチの検査結果と対応限界はCLI_COMPATIBILITY.mdに記録しています。
原版使用方法の説明(対応表を優先)
以下は原版仕様の記録です。未対応スイッチは上表を参照してください。
notemdx.exe 0.8 [switch] <mml file[.mml|.mus]> 読み込みファイル名は、拡張子を省略した場合、 ~.mml の方が優先されます。 switch: -m<buffer size> 書き出し mdx ファイル用バッファサイズ指定 単位は Kbytes で、既定値は 64 Kbytes です。 -x オクターブ上下コマンド < , > の上下を反転 #octave-rev を指定したのと同じです。 -p ex-pcm モード指定 #ex-pcm を指定したのと同じです。 -r エラーが発生した時に、mdx ファイルを削除 #remove を指定したのと同じです。 -i<channel> チャンネル・マスク コンバートしないチャンネルを指定します。 具体的には、A ~ H、P ~ W を指定しますが、 小文字でも構いません。 -b エラーが発生していた場合、コンバート終了後に ビープ音を鳴らす #beep を指定したのと同じです。 -l pcm 使用状況ファイル(pcmuse.map)を出力 -o 以前の pcmuse.map と新しい pcmuse.map とで 論理和をとる(-l スイッチ指定が必要) -c[n] 音長を圧縮する 繋げられる休符(音符)について、音長の 圧縮を行ないます。既定では休符のみ圧縮しますが、 -cn とした場合は、音符も対象とします。 ただし、音符の場合はクオンタイズのかかり具合いが 変化する場合があるので、注意が必要です。 また、圧縮は条件によってはうまくいかない場合があります。 連符中や波形エフェクト中、'_' の付いた音符、 グライド加工中などは、圧縮は行なわれません。 -z[dvqpt012] 最適化 D v @v q @q p @ MD MP MA コマンドについて、不要と思われる コマンドの削除及び移動を行ないます。 引数無しの場合は、上記コマンド全てが最適化の 対象となりますが、d(D), v(v @v),q(q @q), p, t(@) 0(MD) 1(MP) 2(MA) を引数として指定することにより、 最適化対象コマンドを指定することが可能です。 -t[name] 音色データ(バイナリ)をセーブ コンバート完了時点での、音色の登録状況及び 音色データを指定のファイル名でセーブします。 ファイル名を省略した場合は、カレントに tone.bin というファイルが作成されます。 -w[name] 波形データ(バイナリ)をセーブ コンバート完了時点での、波形の登録状況及び 波形データを指定のファイル名でセーブします。 ファイル名を省略した場合は、カレントに wave.bin というファイルが作成されます。 -v[0|1] バーボーズ・モード コンバート進行状況及びエラー箇所を、ある程度 判別出来るようにします。 引数無し、もしくは 0 を指定した場合は、 エラー発生箇所以降の色を変更して表示します。 1 を指定した場合は、エラー箇所の直前に '→' を 表示します。 -1 1回目のエラー発生で、コンバートを中止する -e エラーを無視してファイルを書き出す コンバートエラーが発生していても -t -w -l スイッチによるファイル書き出しを 行うようにします。 引数を持たないスイッチについては、-xpr などといった併記が可能です。
変換結果の表示
変換成功時、曲名、FM使用音色番号、使用中のPCMバンクごとの使用番号、OPM A〜H・PCM P〜Wの総ステップ数とL/Cからのステップ数を、桁を揃えた英語ラベルで表示します。曲名・ファイル名自体は原文を保持します。
FMはMDXに収録する選択音色を、範囲に省略せず個別に列挙します。PCMは発音するバンク内番号0〜95です。FM・PCMとも未使用番号は表示しません。音符のないバンクは表示しません。PDX内のサンプルの存在を調べる機能ではありません。
1ステップは四分音符の1/48。有限ループ・入れ子・最終回の/を反映します。Lは初回の終端までを総数として数え、L/Cから終端までをループ数とします。Cは最初に実行される位置を採用し、到達しないCはループ点なしです。ループ点なしは「-」、未使用・無効・ミュートトラックは0です。Wの同期待ちは含めません。ゲートで発音を短縮しても経過ステップ数は変わりません。64bit超過はoverflowと表示します。
PCMのL反復でバンクが持ち越される場合も使用番号に含めます。項目名の幅はTotal stepsの11文字に揃え、半角空白1つの後に:を置きます。PCM番号の連続範囲のみ0-3のように省略表示します。PCMバンク名はPCM bank0〜PCM bank255です。同じ情報はResult::statisticsから取得できます。
Title : [ Gray Visibility (Boss)] for Illumination Laser Composed by I.C.KaZe
FM voices : 0, 1, 2, 4, 10, 11, 13, 14, 15, 80, 82, 83, 84, 85, 87, 100, 102, 103, 104, 105, 120
OPM track : A B C D E F G H
Total steps : 13848 13824 13777 13778 13779 13776 13824 13824
Loop steps : 12288 12288 12288 12288 12288 12288 12288 12288
PCM track : P Q R S T U V W
Total steps : 0 0 0 0 0 0 0 0
Loop steps : - - - - - - - -
↑ 目次へ○ 識別子
各行の先頭1文字は、特殊な場合を除いて、その行の識別子と みなされます。識別子の種類は、 A ~ H opm パートの mml 行 P ~ W pcm パートの mml 行 #文字列 疑似命令(文字列の内容により動作が異なる) @番号 音色定義 @w番号 波形定義 @k番号 音色番号マップ定義 @@番号 音色マクロ定義 マクロ変数名 マクロ定義 となっています。 mml 行の識別子に限り、連続して複数記述した場合は、 記述したチャンネル全てに、同じ内容の mml が定義されて いるとみなされます。 例) ABC c4 d4 e4 → A.ch B.ch C.ch に「c4 d4 e4」 ただし、同一識別子を複数書いても、1つの場合と 同じになります。 例) AAA ceg → A ceg と同じ↑ 目次へ
○ mml
コマンド索引
mml 行でのコマンドは以下のとおりです。
※[] 内は省略可能、<> 内は省略不可
a~g 音符、詳細は後述
n<音程番号>[,音長] 音符(音程番号表記)
音程番号範囲は -24(o-2d+) ~ 119(o10d)
r[音長] 休符
{}[音長] 連符
指定した音長を{}内の音符の数で等分し、{}内の音符に
割り振ります。{} 内の音符・休符の最大数は32個です。
この時に限り、%256 より長い音長が指定可能。
{}内ではループ関連のコマンド、及び、波形エフェクト、
グライド、ポルタメント後の音長指定が使用出来ません。& タイ
前後の音符を繋げます。 音符・休符の直後でのみ使用可能。 前後関係が正しければ、行頭に表記しても構いませんが、 波形エフェクト中のみ、行頭に & が来た場合、無視 されます。
_[o|<|>]<音程>[音長] ポルタメント
音符の直後に指定します。 直前の音符の音長で、指定した音程まで、 直線的に音程を変化させます。 音程の前には、o < > のみ表記出来ます。 ここで指定した音長が、直前の音符の音長より 短い場合は、直前の音長が採用されます。 長い場合は、直前の音長で音程を変化させた後、 残りの音長の間、最終音程を維持します。 波形エフェクト中に使用した場合、波形エフェクトが 一旦中断されます。
_D<数値> ポルタメント
音符の直後に指定します。 直前の音符の音長で、指定した数値の分だけ 直線的に音程を変化させます。 数値の単位は、半音の 1/64 で、設定範囲は -6144 ~ 6144 です。 波形エフェクト中に使用した場合、波形エフェクトが 一旦中断されます。
|~[:~[:~..]]| チャンネル別指定
各チャンネル別に mml を割り振ります。 チャンネル識別子を複数書いた場合に有効です。 詳細は後述。
「」[音長] コード入力
``[音長] 「」 内の音符・休符を、各チャンネルに別々に
割り振ります。詳細は、後述。
#[音長] コード入力
以前に使用したコードを、そのまま使用します。 これ以前にコードが使用されていない場合は、 空になります。
[]回数 ループ
[] 間を指定回数だけ繰り返します。 ループ回数は省略可(省略時は2)。
/ ループ最後の回に、これ以降の内容を無視します。
[] 中でのみ使用可能。
L 無限ループポイント指定
無限ループの始点を指定します。 C と同時には使用できません。
C 疑似ループポイント指定
疑似的に、マーク位置から終端までを 無限ループ範囲として、ステップ数を カウントします。実際にはループしません。 L と同時には使用できません。
t<テンポ> テンポ(1分間に演奏する4分音符の数)設定
設定範囲は、19 ~ 4882
@t<テンポ> テンポ(opm timer-B の値)設定
設定範囲は、0 ~ 255
@<音色番号> 音色設定(opm パート)
音色番号範囲は、0 ~ 255 初期値は不定
@<バンク番号> pcm バンク設定(pcm パート)
バンク番号範囲は、0 ~ 255 初期値は @0
SMON 音色マクロ有効(デフォルト)
音色マクロ定義内容を有効にします。
SMOF 音色マクロ無効
音色マクロ定義内容を無効にします。
KS<マップ番号> 音程による音色自動切り替え
指定した音色番号マップに従って、音色を 自動的に変更するモードにします。 この機能で定義された音色では、音色マクロの 展開は行なわれません。また、この機能が 有効な区間では、強制的に'@'コマンドの 最適化が行なわれます。 音色番号マップの定義方法は後述。 マップ番号範囲は、0 ~ 7 です。
KSON 音色自動切り替え再開
KSOF 音色自動切り替え停止
o<オクターブ> オクターブ設定
オクターブ範囲は、-2 ~ 10 初期値は o4
< オクターブを1下げます
> オクターブを1上げます
TR<数値> 各チャンネル別トランスポーズ
出力される音程(キーコード)に補正を加えます。 設定範囲は、-48 ~ 48 です。 pcm パートで指定した場合も、作用します。 また、#tps での補正も加味されます。 初期値は TR0
$FLAT{音符} フラット指定
音符 cdefgab のうち、常にフラットを付ける音符を 指定します。
$SHARP{音符} シャープ指定
音符 cdefgab のうち、常にシャープを付ける音符を 指定します。
$NORMAL{音符} フラット・シャープ指定解除
$NATURAL{音符} $FLAT/$SHARP 指定を解除する音符を指定します。
特に、{音符}指定を省略した場合は、全ての
音符が解除対象になります。D<数値> ディチューン設定
音程を半音の 1/64 単位でずらします。 設定範囲は、-32768 ~ 32767 初期値は D0
l<音長> 基本音長設定
初期値は l4
q<割合> クオンタイズ指定
全音長のうち8分の何だけ発音するかを決めます。 設定範囲は、1 ~ 8 初期値は q8
@q<ステップ> クオンタイズ指定
全音長より指定したステップ数分だけ、 キーオフを早めます。 特に 0 を指定した場合は、q8 となります。 設定範囲は、0 ~ 192 q @q は、後に指定した方の設定が有効となります。
Q<割合> 波形エフェクト中のクオンタイズ指定
波形エフェクト中のみ有効なクオンタイズ指定です。
0: q/@q による制御に戻す
1~256: 全音長の 1/256 単位のクオンタイズ
-256~-1: 絶対値を、実際に発音するステップ数とする
全音長が絶対値以下の場合は、全音長が
実際に発音する音長になるk<ステップ> キーオンディレイ
ステップ数分だけ、キーオンを遅らせます。 設定範囲は、0 ~ 255 初期値は k0
v<音量> 音量設定(16 段階)
音量範囲は、0 ~ 15 初期値は v8
@v<音量> 音量設定(128 段階)
音量範囲は、0 ~ 127 v @v は、後に指定した方の設定が有効となります。
x<音量> 音量設定(16 段階)
直後の1音符の音量を設定します。2音符目以降は、 元の音量に戻ります。 音量範囲は、0 ~ 15
@x<音量> 音量設定(128 段階)
直後の1音符の音量を設定します。2音符目以降は、 元の音量に戻ります。 音量範囲は、0 ~ 127
(数値 音量を数値分下げます
数値は省略可能。
)数値 音量を数値分上げます
数値は省略可能。
V<数値> 音量を数値分変化させます
( ) 同様、相対ボリューム指定ですが、 現在の値に数値を足して、v もしくは @v を 書き込みます。ただし、( ) による音量の変化は 考慮されません。音量は自動的にクリッピング されるので、音量範囲オーバーなどのエラーが 発生することはありません。
VO<数値> 音量コマンド用オフセット
v @v x @x に対するオフセットを指定します。 設定範囲は -127 ~ 127 初期値は VO0
p<数値> パンポット設定
0: カット 1: 左 2: 右 3: 左右(中央) 初期値は p3
y<レジスタ番号>,<値> opm レジスタ書き込み
opm のレジスタに直接値を書き込みます。 レジスタ番号、値とも設定範囲は、0 ~ 255 レジスタ番号、値には、16 進数及び 2 進数が 使用でき、それぞれ $<数値>、%<数値> により 指定可能です。レジスタ番号については、 桁数に制限はありませんが、値については、 16 進数の場合、最高 2 桁。2 進数の場合、 最高 8 桁まで認識します。 特に 2 進数の場合、%11_000_101 のような 表記が可能です。
w[数値] ノイズ
opm のノイズ周波数を設定します。 設定範囲は、0 ~ 31 数値省略時は、ノイズを止めます。
S<チャンネル> 同期信号送出
指定したチャンネルに同期信号を送ります。 設定範囲は、0 ~ 15 もしくは、A ~ H、P ~ W
W 同期信号待ち
同期信号が来るまで演奏を停止します。
K 残響カット
opm パートにおいて、即時に残響を カットします。
F<数値> サンプリング周波数設定
pcm パートのサンプリング周波数を設定します。 0: 3.9 KHz 1: 5.2 KHz 2: 7.8 KHz 3: 10.4 KHz 4: 15.6 KHz 初期値は F4 特に数値が 5 ~ 6 の場合、 5: 16bit pcm / 15.6 KHz 6: 8bit pcm / 15.6 KHz となります。ただし、演奏時に pcm8 v0.46 以上が 組み込まれている必要があります。 また、pcm8++ 用に、7 ~ 31 の値も設定出来ます。
MH%1,%2,%3,%4,%5,%6,%7 opm ハードウェア LFO 設定
(このコマンド自体、MHON も兼ねています。) %1: LFO 波形番号 0 = 鋸歯状波 1 = 矩形波 2 = 三角波 3 = サンプル&ホールド(ランダム) %2: LFO FREQUENCY(LFO 周波数) 設定範囲は、0 ~ 255 %3: LFO PITCH MODULATION DEPTH LFO 音程最大振幅を設定 設定範囲は、0 ~ 127 %4: LFO AMPLITUDE MODULATION DEPTH LFO 音量最大振幅を設定 設定範囲は、0 ~ 127 %5: LFO PITCH MODULATION SENSITIVITY %3: LFO-PMD の感度を設定します。 設定範囲は、0 ~ 7 %6: LFO AMPLITUDE MODULATION SENSITIVITY %4: LFO-AMD の感度を設定します。 設定範囲は、0 ~ 3 %7: LFO SYNCHRONIZE LFO 波形の位相を、キーオンに同期して リセットするかしないかを設定します。 0 = 非同期(リセットしない) 1 = 同期(キーオン毎にリセット)
MHOF opm ハードウェア LFO を 停止する
MHON opm ハードウェア LFO を 再開する
MHR opm ハードウェア LFO 位相リセット
ハードウェア LFO の位相を、強制的に リセットします。
MP%1,%2,%3 ソフトウェア音程 LFO 設定
(このコマンド自体、MPON も兼ねています。) %1: LFO 波形番号 0 = 鋸歯状波 1 = 矩形波 2 = 三角波 3 = ランダム 特に、波形番号に 4 を足すと、音程振幅が 256 倍になります。 %2: LFO 1/4 周期のステップ数 LFO 波形の 1/4 周期に要する ステップ数を設定します。 %3: LFO 最大振幅 LFO 音程最大振幅を設定します。 単位は、半音の 1/64(= D1)
MPOF ソフトウェア音程 LFO を停止する
MPON ソフトウェア音程 LFO を再開する
MA%1,%2,%3 ソフトウェア音量 LFO 設定
(このコマンド自体、MAON も兼ねています。) %1: LFO 波形番号 0 = 鋸歯状波 1 = 矩形波 2 = 三角波 3 = ランダム %2: LFO 1/4 周期のステップ数 LFO 波形の 1/4 周期に要する ステップ数を設定します。 %3: LFO 最大振幅 LFO 音量最大振幅を設定します。 単位は、@v1
MAOF ソフトウェア音量 LFO を停止する
MAON ソフトウェア音量 LFO を再開する
MD<ステップ数> ソフトウェア LFO ディレイ設定
ソフトウェア LFO の開始を、キーオンから 指定のステップ数だけ遅らせます。 0 を指定した場合、キーオンと LFO 開始は 同期しません。
GL<数値>,<ステップ> グライド
(このコマンド自体、GLON も兼ねています。) 音符の先頭部分を加工します。 音符の音長のうち、先頭から指定したステップ数分だけ 指定した数値から0まで直線的に音程が変化し、 残りの音長は元々の音程を維持します。 数値の単位は、半音の 1/64 で、設定範囲は -6144 ~ 6144 です。ステップ数の設定範囲は、 1 ~ 255 です。 pcm パートおよび、連符中、ポルタメント付き 音符には作用しません。また、音程番号表記を 用いた場合も作用しません。 グライド加工中は、波形エフェクトが中断されます。
GLOF グライド加工を停止する
GLON グライド加工を再開する
AP%1,%2,%3 オートパン(波形メモリを使用)
%1: 波形番号
%2: 1要素のステップ数・音符数
%3: 0 = 非同期1
1 = 同期
2 = 非同期2
pcm パートでは、音符の途中でのパンの変更は無効です。APD<ステップ数> ディレイ
オートパンがかかり始めるまでのディレイ値を 設定します。 設定範囲は -255 ~ 32767 で、初期値は 0 です。
APL<ステップ数> ステップ数・音符数変更
状態を保持したまま、波形1要素のステップ数や 音符数を変更します。現在カウント中のステップの 終了後に値が更新されるので、効果を発揮するまでに 少し時間がかかる場合があります。
APON オートパン再開
APOF オートパン停止
DT%1,%2,%3 ディチューン(波形メモリを使用)
%1: 波形番号
%2: 1要素のステップ数・音符数
%3: 0 = 非同期1
1 = 同期
2 = 非同期2
現在の D の値にデータが加算されます。DTD<ステップ数> ディレイ
波形メモリによるディチューンがかかり始めるまでの ディレイ値を設定します。 設定範囲は -255 ~ 32767 で、初期値は 0 です。
DTS<数値> ディチューン倍率
ディチューンデータの倍率を設定します。 0 は、1 を指定したのと同じになります。 あまり大きな値を指定するとオーバーフローを起こすので 注意して下さい。 初期値は 0
DTL<ステップ数> ステップ数・音符数変更
状態を保持したまま、波形1要素のステップ数や 音符数を変更します。現在カウント中のステップの 終了後に値が更新されるので、効果を発揮するまでに 少し時間がかかる場合があります。
DTON ディチューン再開
DTOF ディチューン停止
TD%1,%2,%3 ディチューン2(波形メモリを使用)
名称が 'DT*' -> 'TD*' になったもので、その他の 関連命令も、'TD*' で同様に使用出来ます。 'DT*' との同時使用も可能ですが、その場合は コマンドの書き出しに無駄が多くでますので、 なるべく -z スイッチを指定するようにして下さい。
VM%1,%2,%3 音量(波形メモリを使用)
最後に使用された音量コマンドにより、
v 相対と @v 相対に動作が変わります。
%1: 波形番号
%2: 1要素のステップ数・音符数
%3: 0 = 非同期1
1 = 同期
2 = 非同期2VMD<ステップ数> ディレイ
波形メモリによる音量変化がかかり始めるまでの ディレイ値を設定します。 設定範囲は -255 ~ 32767 で、初期値は 0 です。
VMS<数値> 音量変化倍率
音量変化データの倍率を設定します。 0 は、1 を指定したのと同じになります。 あまり大きな値を指定するとオーバーフローを起こすので 注意して下さい。 初期値は 0
VML<ステップ数> ステップ数・音符数変更
状態を保持したまま、波形1要素のステップ数や 音符数を変更します。現在カウント中のステップの 終了後に値が更新されるので、効果を発揮するまでに 少し時間がかかる場合があります。
VMON 音量再開
VMOF 音量停止
MV%1,%2,%3 音量2(波形メモリを使用)
名称が 'VM*' -> 'MV*' になったもので、その他の 関連命令も、'MV*' で同様に使用出来ます。 'VM*' との同時使用も可能ですが、その場合は コマンドの書き出しに無駄が多くでますので、 なるべく -z スイッチを指定するようにして下さい。
KM%1,%2,%3 PMS/AMS(波形メモリを使用)
PMS/AMS を同時に変化させます。
OPM レジスタ($38~$3F)に書き込む値を指定するので注意。
事前に MH の設定で、PMD/AMD が設定されていないと
意味がありません。
%1: 波形番号
%2: 1要素のステップ数・音符数
%3: 0 = 非同期1
1 = 同期
2 = 非同期2KMD<ステップ数> ディレイ
波形メモリによる PMS/AMS 変化がかかり始めるまでの ディレイ値を設定します。 設定範囲は -255 ~ 32767 で、初期値は 0 です。
KML<ステップ数> ステップ数・音符数変更
状態を保持したまま、波形1要素のステップ数や 音符数を変更します。現在カウント中のステップの 終了後に値が更新されるので、効果を発揮するまでに 少し時間がかかる場合があります。
KMON PMS/AMS 再開
KMOF PMS/AMS 停止
TL%1,%2,%3 トータルレベル(波形メモリを使用)
指定オペレータのトータルレベル値を変化させます。
非常に特殊なエフェクトで、かなり制限があります。
詳細は後述。
%1: 波形番号
%2: 1要素のステップ数・音符数
%3: 0 = 非同期1
1 = 同期
2 = 非同期2TLD<ステップ数> ディレイ
波形メモリによる TL 変化がかかり始めるまでの ディレイ値を設定します。 設定範囲は -255 ~ 32767 で、初期値は 0 です。
TLM<マスク値> オペレータ・マスク
変化対象となるオペレータを指定します。 値は音色定義データのオペレータ・マスク値と同じく、 0 ~ 15 で、0 ~ 3 ビットがオペレータ 1 ~ 4 に 対応しています。対応するビットを 1 とすることで、 変化対象となります。 特に -1 を指定した場合は、自動的にモジュレータを 選出しますが、命令解析時に音色データを参照するため、 この命令以前に音色が定義されている必要があります。 また、キャリアを変化対象とした場合、このエフェクトが 音色データの TL 値相対にかかるものであるため、 v @v などでの変化が考慮されません。特殊な場合を除いて モジュレータのみを変化対象とした方が良いでしょう。 初期値は -1 です。
TLT<音色番号> 音色番号設定
TL 用に疑似的に音色番号を設定します。 実際に音色の設定は行ないません。 TLM 同様に、この命令以前に対象となる番号の音色が 定義されている必要があります。 音色を切り替えずにエフェクト状況を変化させる時に 使用します。
TLL<ステップ数> ステップ数・音符数変更
状態を保持したまま、波形1要素のステップ数や 音符数を変更します。現在カウント中のステップの 終了後に値が更新されるので、効果を発揮するまでに 少し時間がかかる場合があります。
TLON TL 再開
TLOF TL 停止
YA%1,%2,%3 y コマンド(波形メモリを使用)
%1: 波形番号
%2: 1要素のステップ数・音符数
%3: 0 = 非同期1
1 = 同期
2 = 非同期2
波形データの上位バイトをレジスタ番号、下位バイトを
データとして y コマンドを書き込みます。YAD<ステップ数> ディレイ
エフェクトがかかり始めるまでのディレイ値を 設定します。 設定範囲は -255 ~ 32767 で、初期値は 0 です。
YAL<ステップ数> ステップ数・音符数変更
状態を保持したまま、波形1要素のステップ数や 音符数を変更します。現在カウント中のステップの 終了後に値が更新されるので、効果を発揮するまでに 少し時間がかかる場合があります。
YAON y 書き込み再開
YAOF y 書き込み停止
$FO<数値> フェードアウト
指定数値に基づいて全チャンネルを フェードアウトします。 数値が小さい程、フェードアウトは 早くなります。
zc<数値> #cont 制御
#cont 疑似命令の値を mml 行中で制御します。 設定範囲は 0 ~ 2 です。
zw<数値> #wcmd 制御
#wcmd 疑似命令の値を mml 行中で制御します。 設定範囲は 0 ~ 2 です。
$<マクロ変数名> マクロ
定義されたマクロが展開されます。 事前にマクロ内容が定義されていなかった場合、 内容は空になります。 例外的に、I J N O X Z h i j m s u 及び、 。 ー ゙ ゚ 「 」 ・ 、 を除く半角カナ全部については、 先頭の'$'を書かなくても、マクロと認識されます。
! これ以降の mml をスキップする
対象チャンネルの '!' 以降の mml をスキップし、 コンバートを行ないません。
? 範囲指定型 mml スキップ
'?' でくくった範囲中で、実体を持つコマンド について、データの書き出しを行ないません。 実体を持たないコマンド(o < > l など)については、 状態が保持されますが、実体を持つコマンドは、 音源ドライバ側に状態が伝わらないので、範囲終了後、 再設定してやる必要があります。 また、この範囲中では、文法解釈が甘くなるので、 注意が必要です。 さらに、L C などは、そのままコンバートされるので、 '?' を使用するポイントにも注意が必要です。
// /* * ; これ以降の行端までの mml を無視する
その行の終端まで有効な注釈指定です。↑ 目次へ
○ 疑似命令
コマンド索引
疑似命令には、以下のものがあります。
(大文字・小文字の区別はありません)
#title "タイトル" タイトル設定
mdx のタイトルを設定します。
#pcmfile "ファイル名" pcm ファイル名設定
演奏時に使用する pcm ファイル名を設定します。
#include "ファイル名" ファイル・インクルード
この位置に、指定ファイルを挿入します。 ファイルのネストは16段までです。
#play "<cmd> [arg.[arg..]]" 実行コマンド設定
コンバート終了後に実行するコマンドを 設定します。 #play "mxp sample" などとしておくと、 コンバート後に、曲が演奏されます。 コンバートエラーが発生していた場合や、 シフトキーが押されている場合は実行されません。 コマンドはパスに沿って検索されますが、 フルパスで記述した方が検索時間が省かれる分、 起動までの時間が短くなります。
#ex-pcm ex-pcm モード設定
Q ~ W のチャンネルを有効にします。
#octave-rev < > 上下反転
< > コマンドの上下を反転します。
#tps 数値 トランスポーズ
出力される音程(キーコード)に補正を加えます。 設定範囲は、-24 ~ 24 です。 設定後は、全パートに等しく作用しますが、 pcm パートには作用しません。
#tps-all トランスポーズが全パートに作用するようにする
この行以降は、pcm パートにも #tps 補正が 作用します。
#detune 数値 D コマンド用オフセット設定
D コマンドの数値に、設定した数値が 加算されます。 設定範囲は、-32768 ~ 32767 D コマンドを使用しない限り、作用しません。
#flat "音程" フラット音程設定
指定した音程に、常にフラットが付きます。 音程は、c d e f g a b の7種類のいずれかで、 複数の表記が可能です。 $FLAT と違い、全チャンネルの分を一括して 指定します。
#sharp "音程" シャープ音程設定
指定した音程に、常にシャープが付きます。 音程は、c d e f g a b の7種類のいずれかで、 複数の表記が可能です。 $SHARP と違い、全チャンネルの分を一括して 指定します。
#natural "音程" #flat / #sharp 解除
#normal "音程" 指定した音程の、#flat / #sharp 設定を
解除します。 音程は、c d e f g a b の7種類のいずれかで、 複数の表記が可能です。 $NORMAL/$NATURAL と違い、全チャンネルの分を 一括して指定します。 特に、音程を省略した場合は、全ての音程を 解除対象とします。
#nlist 非テキスト領域始点設定
コンバートしない領域の始点を設定します。
#list テキスト領域始点設定
コンバートする領域の始点を設定します。 #nlist ~ #list で囲まれた範囲は、 コンバートされません。
#overwrite 後着音色の上書き
以前に同じ番号の音色定義があっても、 それを無視し、後に来た音色定義を優先し 上書きします。 この行以降が、有効範囲です。
#toneofs 数値 音色番号オフセット
ここで設定した値が、音色番号に加算されます。 音色定義の時と音色設定の時の両方に作用します。
#noreturn 音色再設定をしないようにする
デフォルトでは、K の残響カットの後には、 現在使用中の音色の再定義が行なわれますが、 これを指定すると、それを行ないません。
#wavemem 波形用メモリの確保を宣言
約 128 Kbytes(128波形分)のメモリを確保します。 メモリの確保が出来た場合、これ以降波形メモリ 及びそれに関する命令が使用可能になります。
#remove エラー発生時に、mdx ファイル削除
エラーが発生した場合は、mdx ファイルは 作成しませんが、これを指定すると、 以前に出来ていたファイルも削除します。
#beep エラー発生時にビープ音を鳴らす
コンバート動作終了後、エラーが 1回以上発生していた場合、ビープ音を 鳴らします。
#reste [0|1] 音符の休息部分も波形エフェクトをかける
引数無し、もしくは 0 を指定した場合は、 クオンタイズにより休息部分となった音長部分にも 波形エフェクトをかけます。1 を指定した場合は、 休符自体にも波形エフェクトがかかります。 同期モードにおいて、休符で波形の位相を持続させ たい場合は、'&' で繋ぐか、#cont 2 を指定して 下さい。
#nreste [0|1] 音符の休息部分と休符に波形エフェクトをかけない
波形エフェクトを、音符の実音長部分のみに かかるようにします。引数に、0 以外の数字を 指定した場合は、実音長が切れた時点で、 波形エフェクトで変化した状態を、エフェクト前の 状態に戻します。引数無し、もしくは 0 を 指定した場合は、この戻す動作を行ないません。
#coder コード入力不足分を休符で補う
チャンネル識別子の数に対して、音符・休符の 数が少ない場合、自動的に休符で補います。
#ncoder コード入力不足分を休符で補わない
チャンネル識別子の数に対して、音符・休符の 数が少ない場合、後方のチャンネルには、 何も置きません。
#glide [0|1] グライド加工抑制条件設定
引数無し、もしくは 0 を指定した場合は、 '&' 直後の音符でもグライド加工を行ないますが、 引数に 0 以外の数字を指定すると、'&' で 接続された音符のうち、最初の音符のみ加工を 行なうようにします。
#load-tone "ファイル名" -t スイッチで作成した音色データをロード
音色データおよび音色登録状況をロードします。 事前に音色定義がされていた場合でも、 ロード内容により初期化されてしまうので、 注意が必要です。
#save-tone ["ファイル名"] 音色データ(バイナリ)をセーブ
-t スイッチと同じです。 ただし、コマンドラインで指定された状態の方が 優先されます。
#load-wave "ファイル名" -w スイッチで作成した波形データをロード
波形データおよび波形登録状況をロードします。 事前に波形定義がされていた場合でも、 ロード内容により初期化されてしまうので、 注意が必要です。 再定義可能という波形の性質を考慮して、 各チャンネル毎にロードを行ないます。
#save-wave ["ファイル名"] 波形データ(バイナリ)をセーブ
-w スイッチと同じです。 ただし、コマンドラインで指定された状態の方が 優先されます。
#cont [0|1|2] '&' による波形の位相継続の有無
普通、波形エフェクトでは、'&' で繋がれた 音符・休符は1つのものとして扱い、音符途中での 波形の位相の初期化・更新は行ないませんが、 引数に 1 を指定することにより、'&' を無視し、 位相の初期化・更新を行なうようにします。 2 を指定した場合は、1 の場合に加え、 同期モードにおける位相の初期化を、休符では 行なわなくなります。 引数無し、もしくは 0 を指定した場合は、 通常通り位相は継続されます。
#wcmd [0|1|2] 波形エフェクト中の関連コマンド書き込み抑制
AP DT VM が有効な区間での、各エフェクトに 関連する一般コマンド(p,D,v,@v,(,),V)の 書き込みの抑制状態を設定します。 1 を指定した場合は、関連コマンドの書き込みは 行いませんが、その設定値は記憶され、 波形エフェクトに影響を与えます。 2 を指定した場合は、関連コマンドを完全に 無視します。 引数無し、もしくは 0 を指定した場合は、 通常どおり、コマンドを書き込みます。
#pcmlist [0|1] pcm 使用状況ファイル(pcmuse.map)を出力
-l -o スイッチと同じです。 引き数無し、もしくは 0 を指定した場合、 -l のみと同じ動作をします。 1 を指定した場合は、-l -o と同じ動作をします。
#compress [0|1] 音長を圧縮する
-c[n] スイッチと同じです。 引き数無し、もしくは 0 を指定した場合、 -c と同じ動作をします。 1 を指定した場合は、-cn と同じ動作をします。 ただし、コマンドラインで指定された状態の方が 優先されます。また、この命令以降が有効範囲で、 初期状態は圧縮無しになっています。
#opt ["dvqpt012*"] 最適化
-z スイッチと同じです。 引き数を省略した場合は、最適化を停止します。 引き数に '*' を指定した場合は、'dvqpt012' と 指定したのと同じになります。
#ver [0|1] バーボーズ・モード
-v スイッチと同じです。 ただし、コマンドラインで指定された状態の方が 優先されます。また、この命令以降が有効範囲と なっており、初期状態では、バーボーズ・モード ではありません。それと、-v スイッチと違い、 現在作業中のチャンネルが表示されません。
[デフォルト設定]
#tps 0 トランスポーズ :0 #detune 0 D オフセット :0 #natural "cdefgab" sharp/flat 指定無し #list テキスト領域 #nreste 0 波形エフェクトは実音長部分のみ #ncoder コード入力で休符を補わない #glide 0 直前に '&' があってもグライド加工を行なう #cont 0 '&' による波形の位相継続有り #wcmd 0 波形エフェクト中でも関連コマンドを書き込む #toneofs 0 音色番号オフセット :0
※以下のものは、mml ファイル中で、何度でも変更(使用)可能です。
#title #pcmfile #include #tps
#detune #flat #sharp #natural(normal)
#octave-rev #play #nlist #list
#reste #nreste #coder #ncoder
#glide #load-tone #load-wave #cont
#wcmd #pcmlist #compress #save-tone
#save-wave #opt #ver #toneofs
↑ 目次へ○ 音符
音符は、 音程[音長] の、音程・音長表記から構成されます。 音長を省略した場合は、l コマンドで指定した基本音長が 用いられます。 音程は a ~ g と +(sharp) 、-(flat) 、=(natural)、 "(natural) で表わされます。(" によるナチュラルは、 マクロ中では使用できません。) 特に、e+ 、f- 、b+ 、c- は存在しませんが、表記としては、 許されていて、それぞれ、f 、e 、>c< 、<b> と同じ意味に なります。 mxdrv2 での、実際に発音可能な音程範囲は、o0 d+ ~ o8 d と なっています。o / #tps / TR による補正を加味した結果、この 範囲内に音程がおさまっていれば、エラーとはなりません。 音長は、以下の2種類の表記方法があります。 1) %<ステップ数> 2) <音長> 1)ステップ数は、4分音符を 48 等分した長さです。 192 ステップで、全音符の長さとなります。 2)音長は、全音符を元に、それを何等分したかを表わしています。 例えば、4分音符の場合、 全音符(1) / 4 = 192 step / 4 = 48 step となります。 特に、3連符を表わしたい場合は、音長に3をかけたものを用います。 例えば、ラの8分音符の3連符を表わしたい場合、 8 x 3 = 24: a24 a24 a24 となります。 使用できる 2)音長は、192 を割って、端数が出ない物です。 2)音長と同時に、符点を用いると、符点を含む直前の 音長表記の半分の長さの音長が加算されます。 例えば、 4. = 4 分音符 + 8 分音符 = 48 + 24 = 72 step 4.. = 4 分音符 + 8 分音符 + 16 分音符 = 48 + 24 + 12 = 84 step となります。 また、1) 2) 表記は、'^' で加算、'~' で減算が可能です。 例えば、符点4分音符は、以下のような表記が可能です。 4. = 4^8 = %48^8 = 4^%24 = %48^%24 = 2~8 = %96~8 = 2~%24 = %96~%24 '^' と '~' との併用も可能です。 計算の結果、最終的に音長が %1 ~ %256 の範囲に収まっていれば、 エラーにはなりません。 連符の音長を指定する時以外においては、音長は %256 を越えることは出来ません。↑ 目次へ
○ 音長(補足)
音程番号表記を用いた場合には、音長の表記方法が 少々特殊になります。 通常では、 n<音程番号>,<音長> など、音長の直前に ',' を書きますが、<音長> 部分が % 表記になっている場合、および数字から始まる場合は、 ',' の代わりに '.' を用いることが出来ます。 例) n0.4 n0.%48 どちらも 48 ステップ また、<音程番号> の後に '.' を用いた場合で、 '.' の直後が '^' の場合、および上記の条件以外の場合、 '.' は音長とみなされます。 例)l4 の場合 n0. (48+24) ステップ n0.^4 (48+24)+48 ステップ この他にも以下のような表記が可能です。 例)l4 の場合 表記 ステップ数 ---------------------------------------- n0%48 48 n0, 48 n0^ 48+48 n0~8 48-24 n0,. 48+24 n0^. 48+(48+24)↑ 目次へ
○ 音色定義
@0 = {
/* AR DR SR RR SL TL KS MUL DT1 DT2 AME
31, 0, 3, 6, 0, 28, 0, 1, 0, 0, 0,
30, 0, 3, 6, 0, 24, 0, 1, 0, 0, 0,
28, 18, 3, 9, 11, 9, 0, 0, 0, 0, 0,
26, 0, 15, 10, 0, 0, 0, 1, 0, 0, 0,
/* ALG FL OP
3, 0, 15
}
上記のような、
@<音色番号> = {param1 , ~ , param47}
というフォーマットで音色を定義します。
(必ず 47 個の数値を指定する)
定義位置は任意です。↑ 目次へ○ マクロ定義
マクロは、 <マクロ変数名>[添え字] = "内容" というフォーマットで定義します。 マクロ変数名に使用できる文字は、現在のところ、 I J K L M N O X Y Z a ~ z 。 ー ゙ ゚ 「 」 ・ 、 を除く半角カナ全部 の 91 個です。 添え字には、0 ~ 19 が使用でき、これにより、 91 x (20 + 1) = 1911 のマクロが使用できることになります。 マクロ中にもマクロが使用でき、ネスト上限は8段となっています。 マクロ内容の長さには、制限はありません。 初期状態で、未設定のマクロの内容は、空になっています。↑ 目次へ
○ 音色マクロ定義
音色マクロは、 @@<音色番号> = "内容" というフォーマットで定義します。 定義された内容は、該当音色が使用された直後に展開されます。 マクロ内容の長さには、制限はありません。 既定では、音色マクロの設定内容は有効となっていますが、 SMON / SMOF により、有効・無効が操作出来ます。↑ 目次へ
○ 波形エフェクト
波形メモリに関するエフェクトは、ソフト的に音符を分割し
それぞれのコマンドを書き込むことによって行なわれます。
よって、波形データ1要素のステップ数を小さくすると、
mdx ファイルが、より大きなサイズになるので注意が必要です。
例)オートパンの場合
@w0 = {0,0,1,3}
A AP0,1,1 a%48
↓
A p1 a%1& p3 a%47
例は、同期モード、音符1ステップ単位割り込み、
ループ無し波形を用いた場合です。
AP KM DT VM TL の第3パラメータは、同期・非同期の指定で、
0 は、音符の開始に関係なく、常に波形の位相を進める非同期モード1、
1 は音符の開始とともに波形の位相を初期化する同期モード、
2 は、波形の位相を進める最小単位を、通常の1ステップ単位から、
1音符単位に変更した、非同期モード2です。
非同期モード2の場合、休符は音符とみなされず、波形の位相が
更新されることはありませんが、#reste 1 を指定した状態では、
休符も音符と同じ扱いになり、位相が更新されます。
同期モードの場合、'&' で接続された音符は1つの音符として扱い、
'&' の位置での位相の初期化は行なわれませんが、#cont 1 を
指定すると、'&' がある場合でも、前後の音符・休符は別々の
ものであるとみなし、'&' の位置での位相の初期化を行ないます。
非同期モード2の場合も同様に、#cont 1 を指定した場合は、
'&' で接続された音符・休符は別々のものとみなし、各音符・休符毎に
位相の更新が行なわれます。
各エフェクトには、ディレイ値の設定がありますが、特に、
負の値を指定した場合は、ディレイの始点をキーオフの時点とし、
「その位置のステップ数+ディレイ値」の位置を、エフェクトの
開始位置とします。(音符の末尾を加工するような感じ)
開始位置が負の値となった場合は、ディレイ値が 0 の場合と
同じ動作をしますが、エフェクト開始位置の換算方法から分るように、
'&' で接続された音符などの場合、最後の音符のみがエフェクト対象と
なります。ただし、#cont 1 or 2 が指定されている場合は、各音符が
エフェクト対象になります。
また、この負の値が有効なのは、同期モードの時のみで、
その他のモードの時は、0 と同じ扱いになります。↑ 目次へ○ 波形メモリ定義
波形メモリの定義は、各行の先頭から、
@w<波形番号> = {%1,%2, %3, ... }
というフォーマットで行ないます。
定義位置は任意で、定義位置以降が有効範囲です。
波形番号は、0 ~ 127 です。
%1,%2 の値は、それぞれ、
%1: 波形タイプ
0 = ループ無し
1 = ループ有り
%2: ループポイント(%1 = 1 の場合)
ループ開始位置を指定
%3 以降が実際の波形データで、%3 の位置が
始点(0)となり、ループポイントは、この位置を基準に
指定します。データの最大数は 512 です。
数値の範囲は、-32768 ~ 32767 で、先頭に
'$' を付けることにより、16進数も使用可能です。↑ 目次へ○ 音色番号マップ定義
マップの定義は、各行の先頭から、
@k<マップ番号> = {%1,%2, %3, ~ ,%96}
というフォーマットで行ないます。
(必ず 96 個の数値を指定する)
定義位置は任意で、定義位置以降が有効範囲です。
マップ番号は、0 ~ 7 です。
%1 ~ %96 は、それぞれ o0d+ ~ o8d の音程に
対応しており、その値は各音程がどの番号の
音色を使用するかを表わします。
値の範囲は、音色番号ということから、
0 ~ 255 です。↑ 目次へ○ チャンネル別指定
チャンネル識別子を複数書いた場合に有効です。 ABC | D0p3v15c : D-4p1v13c : D4p2v12c | などとした場合、 A D0p3v15c B D-4p1v13c C D4p2v12c といった具合いに展開されます。 mml の割り振り具合いは、チャンネル識別子を書いた順番ではなく、 チャンネルの若い順に ':' で区切られた mml が割り当てられます。 また、 BCD |:o4c:| BCD |:o4c| などとした場合は、 C o4c となります。 チャンネル識別子より、区切りの数が多い場合、超過部分は 無視されます。↑ 目次へ
○ コード入力
チャンネル別指定を、音符・休符にしぼったものです。 チャンネル識別子と、「」 (``) を組み合わせて、コードの入力が出来ます。 例えば、 ABC 「ceg」8 (または、ABC `ceg`8) '`' は、[SHIFT]+[@] とした場合、 A c8 B e8 C g8 と展開されます。 「」 中では、音符・休符の他に < > が認識されるため、 オクターブにまたがったコードの入力も可能です。 「」 内では、コードの組成のみが記憶されるため、 オクターブ自体は、外部から定義してやる必要があります。 また、既定では、 ABC 「ce」 など、識別子の数に対して、「」 の内容が少ない場合、 後方のチャンネルには、何も展開されません。 ABC 「ceg>c」 逆に、識別子の数に対して、「」 の内容が多い場合、 「」 内の超過分は無視されます。↑ 目次へ
○ 文字列
notemdx.exe 0.8 での、疑似命令などにおける文字列の扱いを述べておきます。 一般に、文字列を引数として持つ疑似命令の場合、 渡された文字列のうち、半角空白やタブを区切りとする 最初の1群を引数であるとみなし、2群以降は無視されます。 例) #title 1st. item などとした場合、'1st.' がタイトルになる。 よって、半角空白やタブを含む文字列を引数として 渡したい場合は、クオートする必要があります。 例) #title "1st. item" などとした場合、'1st. item' がタイトルになる。 クオート文字は、2種類有り、' と " が使えます。 また、クオート文字自体は、もう一方のクオート文字で クオートすることが可能です。 例) #title "It's" #title It"'"s → It's #title '"start"' #title '"'start'"' → "start" 上記のクオート方法から分るように、以下のような表記は 許されていません。 例) #title"start" → #titlestart という文字列とみなされる。 クオートが終了していない場合、クオート範囲は 行末までとなります。 例) #title "1st. 2nd. #title '1st. 2nd. #title 1st." 2nd. #title 1st.' 2nd. → '1st. 2nd.' がタイトルになる。↑ 目次へ
○ $FLAT/$SHARP/$NATURAL、#flat/#sharp/#natural
主に、調の指定に使用します。 $~と、#~の違いは、$~ が対象チャンネル内でのみ 有効なのに対して、#~は全チャンネルに有効です。 また、$~ #~ を同時に使用した場合の優先順位は、 どちらも等しく、後に指定した方が優先されます。 また、pcm パートにおいても、通常の音程表記を 用いた場合は、この補正が有効になるので、 注意が必要です。 トランスポーズと同時に使用した場合、先に $FLAT などの補正を行なった後にトランスポーズが 行なわれます。↑ 目次へ
○ グライド
グライドは、具体的には以下のように加工されます。 A GL-32,6 c4 ↓ A D-32 c%6_D32 & D0 c%42 ここで設定される D の値は、以前に使用された、 通常の D コマンドおよび #detune の値が反映されます。 例) A GL-32,6 D4 c4 ↓ A D-28 c%6_D32 & D4 c%42 また、グライド値が 64 で割り切れる場合で、 グライド開始音程が音程範囲におさまっている場合は、 D は使用されません。 例) A GL-64,6 o4 c4 ↓ A o4 <b%6_>c & c%42 音符の音長が、グライド・ステップ数未満の場合は、 グライド加工は行なわれません。 (グライド値 x 256 / ステップ数)が、符号付き2バイトの 数値範囲に納まらない場合は、エラーになります。↑ 目次へ
○ 相対ボリューム
( ) コマンドは、 v4 [a)]8 などとした場合、 v4 a v5 a v6 a v7 .... a v12 となりますが、 v4 [a V1]8 の場合は、V コマンド解釈の時点での音量から 相対的に音量を算出し v , @v コマンドに変換するため、 v4 [a v5]8 となります。↑ 目次へ
○ ポルタメント
o0d+8_o8d のように、ポルタメントの限度を越えるような場合は、 ポルタメントは行なわれず、 o0d+8 に変換されます。 o0d+8_o8d4 など、ポルタメント後の音長指定がある場合は、 o0d+8 & o8d8 といった具合いに変換されます。↑ 目次へ
○ TL(波形エフェクト)
現在使用されている音色データから、対象オペレータの トータル・レベルを調べ、その値相対でエフェクトをかけます。 よって、この命令以前に音色定義がされていることと、 1度以上音色設定コマンドが使用されていることが必要です。 また、「音色設定コマンドがあっても、キー・オンされるまでは、 OPM への音色の定義はされない」という mxdrv の音色設定コマンドの 仕様により、音色設定直後からのエフェクトは、期待どおりには 動作しません。 例) @0 TL0,1,1 a などの場合 音色設定後、1度以上キー・オンされている場合は大丈夫です。 例) @0 a TL0,1,1 a などの場合↑ 目次へ
現在の制限と検証範囲
ファイル全体の上限は既定64KiBで、-mSIZEで増やせます。改訂2では音色データを末尾に置いた67,488バイトの元MDXを-m256で全バイト再現しました。トラック・音色領域の開始位置はデータ先頭から65535以内である必要があります。原版も、トラック位置超過と長距離ループの6入力を拒否しました。詳細はLARGE64K_VALIDATION.mdを参照してください。include16段、通常マクロ8段、ループ32段。相対ジャンプは符号付き16bit範囲として検査します。連符の1要素は256ステップ以下です。診断の列はCP932のバイト位置で、タブは1文字として数えます。
同梱の実曲11曲は全バイト一致(STAGE5/6は-c -z、他は既定設定)。別の33入力は31本が全バイト一致、2本は欠落E8を補った比較コピーと一致します。2本は原本との一致件数には含めません。追加の大容量MDX2本と音色・波形バンク2本も一致しています。任意の全入力での完全互換や実機再生は未確認です。
Windows用にはVisual Studio 2022のソリューションを同梱しています。Release/x64でビルドするとnotemdx.exeとnotemdx_core.libを生成します。改訂2の検証記録ではMSVCビルド成功とCTestの7件成功を確認しました。残る説明書テストの文字コードエラーを改訂3で修正し、Linux/GCCとCP932既定の模擬環境で検証しています。改訂4では音色定義の空白区切りに対応しました。改訂5では未定義の#命令を警告して無視します。改訂5のWindowsビルド・実行は未確認です。詳しくはREADME.mdとAPI.mdを参照してください。
VS 2022のx64 Native Toolsまたはx64 Cross Tools Command Promptでbuild_vs2022.batを実行すると、MSBuildでRelease/x64をビルドしC++単体検査を実行します。生成先はbin/x64/Releaseです。CMake・vswhere・Pythonは不要です。Python参照検査は別途実行します。バッチのWindows実行は未検証です。詳細はREADME.mdを参照してください。
VS・CMakeの全ターゲットはRelease /MT、Debug /MTdでC/C++ランタイムを静的リンクします。この設定で再ビルドしたRelease版はVC++ v14 x64再頒布可能パッケージの追加インストールが不要です。Windows標準DLLは使用します。既存の動的リンク版EXEは再ビルドが必要です。build_vs2022.batは完全な再ビルドを実行します。2026-10-11に再ビルド済みx64 EXEの依存DLLがKERNEL32.dllのみであることを静的確認しました。ビルド環境の正確な版・コマンドは未記録、Windowsでの実行は未検証です。
VSとCMakeのCLI・単体検査には/PDBALTPATH:%_PDB%を指定し、PDB参照をファイル名のみに制限しています。ビルド環境のドライブ・フォルダー名を公開バイナリへ残さないための設定です。既存EXEは再ビルドが必要です。2026-10-11に配布EXEのCodeView参照がnotemdx.pdbのみであること、依存DLLがKERNEL32.dllのみであることを確認し、チェックサムを更新しました。PDBは配布しません。
↑ 目次へ作成根拠・補助資料
本ツールは「mml file converter for mxdrv2 v0.8.5 1994,95 by DIS」のドキュメントに基づき、原プログラムや第三者実装のソースを使用せずに作成しました。入力文法の根拠はnote.docです。文書に基づく独立実装には、下記の補助資料と原版の実出力による検証を含みます。
| 資料 | 用途・内容 | 照合結果・記録 |
|---|---|---|
| note.doc | NOTE v0.8.5の入力文法・スイッチ。CP932原文を同梱 | 日英説明書の基礎。実装との差は各項の補足を優先 |
| MXDRVデータ資料(YURAYSAN氏) | 出力形式の補助資料。下記URLに転載 | 記述と実出力が食い違う箇所は実出力を優先 |
| priority.zip / effects.zip / followup.zip / remaining.zip | 小規模33入力の元MDXと音色・波形バンク2本 | 31本は全バイト一致、2本はEX-PCMの比較コピー補正後一致。バンク2本一致。VALIDATION.md |
| IL.zip | 実曲11組のMUS・MDX | 11曲全バイト一致。STAGE5/6は-c -z、他は既定設定。IL_VALIDATION.md |
| large64k.zip | 元MDX2本・LOG8本。入力はprobes/large64kの8本 | K00SAFE 56,093バイト、K01TAIL 67,488バイトが-m256で全バイト一致。残り6入力は原版も拒否。LARGE64K_VALIDATION.md |
補助資料:MXDRVデータ資料 に転載された当時のYURAYSAN氏の資料。第三者実装のソースは使用していません。
全52入力の内訳は、元MDXとの全バイト一致44本、EX-PCMの比較コピー補正後一致2本、元ログと同じ拒否結果6本です。音色・波形バンク2本は別集計です。6本の診断文・位置・件数の完全一致や実機再生を確認したものではありません。原版のログには起動引数が残っていないため、再現用バッチのコマンドと実行済みの引数を同一視しません。
資料の権利表示:I.C.KaZeの提供資料はCC BY 4.0 Internationalで、テスト用に収録しています。Illumination LASER title copyright: (C) 2000 MYO GAME。DIS氏のnote.docはこの許諾の対象外です。原版条件と資料別の適用範囲はTHIRD_PARTY_NOTICES.mdおよびLICENSE-DATA.mdを参照してください。
ここでいう文書に基づく作成とは、原プログラムや第三者実装のソースを用いない独立実装を意味します。上記の補助資料と実出力による照合を含みます。原版条件と資料別のライセンスはTHIRD_PARTY_NOTICES.md、提供資料の利用条件はLICENSE-DATA.mdを参照してください。
↑ 目次へ