Copyright 2004-2012 revix.. http://www.mars.dti.ne.jp/~revix/
本ソフトウェアは、NAKAさん著作の着メロ作成ソフト『MLD Creator 16』 ver2
以降(以後MLDCという)のMMLに基づき、YAMAHA著作のオーサリングツール『ATSシリーズ』用に最適化したSMFを作成するためのツールです。
本ソフトウェアは、あくまでMLDCのSMF出力を強化する目的で作成されており、SMF出力以外の機能は一切ありません。
MML自体はMLDCで作成することになります。
また、ver2
からは従来のパッチ当てではなくフルコンパイルに変更しました。これによりMMLとSMFの整合性はアップした反面MLDC出力のSMFとは異なります。
なお、本ソフトウェアは私revixが独自に作成したソフトであり、出力結果は全て本ソフトの仕様に依存しますので、
MLDCの作者であるNAKAさんには絶対に質問したりしないで下さい。
1.MMLコンパイル
開くボタンでコンパイル対象のMMLを選択し、コンパイルボタンを押すだけです。
(変換オプションは【コンパイル設定】タブで選択して下さい。)
なお、同mmlをコンパイルする場合、MLDCでセーブ後コンパイル実行の繰り返しでOKです。
2.MLDパッチ
パッチボタンでハードウェアループ及びコピー保護情報の書き換えを行います。
パッチ対象ファイル名は、MMLファイル名の拡張子がMLDのものとなります。
ループにパッチを当てる場合、コンパイル設定で【ハードウェアループを代理イベントで出力】を指定して作成されたLPDファイル、及び代理イベントが埋め込まれたSMFを使用して作成されたMLDファイルが必要になります。
本ソフトウェアはMLDC利用ライセンス保持者限定のソフトウェアです。
従ってMLDCの利用ライセンスをお持ちでない方の利用は一切禁止となります。
【MLDCの試用制限内のmml(MLDファイルで最大1536ステップ(8小節)まで相当)であっても禁止です。】
なお、本ソフトウェアを使用することにより生じたあらゆる損失、損害については製作者revixは一切の責任を負いません。あくまで自己責任でご利用ください。
本ソフトはかなり短時間で作っており、テストも満足に出来ていません。
このため変換結果がおかしかったりするケースが多々あるかもしれませんが、怒らず状況をご報告願えれば幸いです。
またその場合においても、出来る限り早急に対応したいと思ってはいますが、いかんせん時間が無いのでご期待に答えられなかったり遅くなったりするかもしれませんが、その場合は生暖かい目で見守って下さい。
MLDCの { ... }
コマンドは、MLD作成の際に使用出来る特殊なコマンドですが、一部のデータについてはSMFに反映させる設計になっています。対応しているのは、
time FF
B0 xx マスターボリューム
time FF E2 xx チャンネルボリューム
time FF E3 xx パンポット
time FF E7
xx ベンドレンジ
time FF EA xx ビブラート(モジュレーション)
で、これ以外のコマンドは time
以外無視されます。
なお、ver 2 では複数イベントが列挙されていても解釈されるようにしました。
リズムトラックはチャンネル合成の都合上、最終的にベロシティに変換されます。
そのため音量バランスが崩れる可能性があります。
完全なMA-5は、従来のMA-3又はMA-5の一部と比較して、WT及びStreamPCMの音量が大きくなってしまいます。
そこで、@UFIX n1, n2, n3コマンドで音色番号又はノート番号に変換フラグをマッピングすることで、FM・WT・StreamPCMいずれの音色であってもU0-63の指定で統一出来るようにしています。(但し実際の分解能は変化します。)
なお、音色番号は通常の番号-1(1-128 -> 0-127)になります。
n1... 0=TONE,1=DRUM n2...0..127 n3..0=OFF,1=StreamPCM,2=WT
なお、各トラックにおいてデフォルトで適用されるマッパは、トーンであれば音色番号、リズムであればノート番号になります。
適用マッパを変更したい場合は
@UMODE n コマンドで指定して下さい。
n...0=TONE,1=DRUM
なお、このコマンドはコンパイル設定で無効に出来ます。
蛇足ですが、MA-5のStreamPCM,WTの音量を有効に使いたい場合は、このコマンドは使用しないことになります。
オプション名 | 説明 |
指定の規則でバンクセレクト強制挿入 | トーン又はドラムチャンネルにおいて音色指定を行なった場合、その直前にバンクセレクトを埋め込みます。 ※このオプションをチェックした場合、拡張コマンドのバンク指定は無視される。 |
ボリュームをベロシティへ統合 | チャンネルボリュームをベロシティに統合し、データ量を圧縮します。 (ドラムチャンネルのミックス処理と同じ方式) ※このオプションをチェックした場合、Vコマンドを多用している曲のデータ量は劇的に小さくなるが、音量変化の分解能が低下する為、音量バランス崩れる可能性がある。 |
ベロシティ補正コマンド有効 | @UFIX @UMODEコマンドで指定した補正情報を有効にし、MA-5用のデータを作成する際、MA-3の実際音量になるよう補正する。 |
ハードウェアループを代理イベントで出力 | MLDCのハードウェアループコマンド 『 』 をベンドレンジ22,23として出力する。 (ループ回数情報ファイル lpd は無条件に出力される) |
SMFをATS-MA5で自動読み込み | コンパイル成功時、ATS-MA5を制御しSMFを自動的に読み込ませます。 (注)動作は不完全です。 |
オプション名 | 説明 |
コピー保護有効 | MLDファイルの著作権保護情報を強制的に『保護』にします。 ※チェックを消すと、強制的に『非保護』になります。 |
MLDCMFIX拡張コマンドとは、MLDCのSMF出力で現時点においてサポートされていない、ATS用MIDIイベントを生成出来るように設定したMLDCMFIX独自のコマンドです。
この拡張コマンドは本ソフト独自のもので、MLDCのコメント領域を拡張しその内部でのみ使用出来る設計になっています。
MLDCMFIX拡張範囲は、'{ ... }
のようにコメント直後(必ず)に { から } で指定します。
なお、} 以降は行端までコメント扱いです。
(T1)
'{ @PRG
37,1 @BANK 124,1 }
@37 c4
で、MIDIイベントが
BankSelect MSB
124
BankSelect LSB 1
ProgramChange 1
NoteOn C
(step 48)
NoteOff
C
という感じです。
使用出来るコマンドについては下記の表を参照して下さい。また、コマンドパラメータの詳細及び動作についてはATSのマニュアルを参考にして下さい。
ATS用イベント | MLDCコマンド | MLDC句 | MLDCMFIX拡張コマンド | MLDC句 |
ノートオン | A-G[+#-][*]len[,GT,ST] | (T) | ||
ノートオフ | A-G[+#-][*]len[,GT,ST] | (T) | ||
バンクセレクト | @BANK msb[,lsb] | (T) | ||
モジュレーションデプス | %n | (T) | ||
チャンネルボリューム | Vn | (T) | ||
パンポット * | Pn | (T) | ||
エクスプレッション | @EXP data | (T) | ||
ホールド1(ダンパー) | @HOLD data | (T) | ||
データエントリ & RPN MSB,LSB | BENDRANGE= | @RANGE data | (T) | |
モノモードオン・ポリモードオン | MONOPOLY= | @MONO @POLY | (T) | |
フィルタブライトネス | @FB data | (T) | ||
フィルタレゾナンス | @FR data | (T) | ||
(その他 コントロールチェンジ) | @CC ccNo,data | (T) | ||
プログラムチェンジ | @n | (T) | ||
(その他 プログラムチェンジパッチ) | @PRG org, chg | (T) | ||
(その他 ベロシティ補正設定) | @UFIX map, num, flag | (T) | ||
(その他 ベロシティ補正マッパ選択) | @UMODE map | (T) | ||
(その他 エクスクルーシブ) | @EX Data, ... | (T) | ||
(その他 GMリセット + r4) | @GMRESET | (T) | ||
(その他 GSリセット + r4) | @GSRESET | (T) | ||
(その他 XGリセット + r4) | @XGRESET | (T) | ||
(その他 リリース残響対策開始) | @RCSTART | (T) | ||
(その他 リリース残響対策停止) | @RCEND | (T) | ||
ピッチベンド | Y[+-]n | (T) | ||
テンポ | Tn | (T) | ||
演奏開始位置 | @PSTART | (T) | ||
演奏終了位置 | @PSTOP | (T) | ||
(XFキューポイント) | @XFQUE data | (T) | ||
スタート | 【 | (T) | ||
ストップ | 】 | (T) | ||
ALチャンネル指定 | @ALCH ch | (T) | ||
HV音源チャンネル指定 | @HVCH ch | (T) | ||
曲名 | TITLE= | (SETTING) | ||
著作権表示 | COPY= | (SETTING) | ||
チャンネルステータス * | VIBRATION= FLASH= | (SETTING) | ||
マスターボリューム | MASTERVOL= | (SETTING) | @MVOL data | (T) |
ストリームパン | @SPAN data1, data2, data3 | (T) | ||
ストリームPCM発音数 | @SPCM data | (T) | ||
(オールサウンドオフ) | @ALLS | (T) | ||
(オールノートオフ) | @ALLN | (T) | ||
(リセットオールコントローラ) | @RESET | (T) | ||
(MA-3ストリームPCMペア) | @SPP data1, data2, data3 | (T) | ||
(タイマーシフト前方指定) | @REW exLen | (T) | ||
(タイマーシフト後方指定) | @W exLen | (T) | ||
(タイマーシフトクリア) | @REWE | (T) | ||
(ボリュームパターン設定) | @VS no, value1,exLen1, ... | (T) | ||
(ボリュームパターン書込頻度) | @VW num | (T) | ||
(ボリュームパターン展開) | @V no,exLen | (T) | ||
(モジュレーションパターン設定) | @MS no, value1,exLen1, ... | (T) | ||
(モジュレーションパターン書込頻度) | @MW num | (T) | ||
(モジュレーションパターン展開) | @M no,exLen | (T) | ||
(ベンドパターン設定) | @BS no, key1,exLen1, ... | (T) | ||
(ベンドパターン書込頻度) | @BW num | (T) | ||
(ベンドパターン展開) | @B no,exLen | (T) | ||
(エクスプレッションパターン設定) | @XS no, value1,exLen1, ... | (T) | ||
(エクスプレッションパターン書込頻度) | @XW num | (T) | ||
(エクスプレッションパターン展開) | @X no,exLen | (T) | ||
(パンポットパターン設定) | @PS no, value1,exLen1, ... | (T) | ||
(パンポットパターン書込頻度) | @PW num | (T) | ||
(パンポットパターン展開) | @P no,exLen | (T) | ||
(マスターボリュームパターン設定) | @MVS no, value1,exLen1, ... | (T) | ||
(マスターボリュームパターン書込頻度) | @MVW num | (T) | ||
(マスターボリュームパターン展開) | @MV no,exLen | (T) | ||
(ブライトネスパターン設定) | @FS no, value1,exLen1, ... | (T) | ||
(ブライトネスパターン書込頻度) | @FW num | (T) | ||
(ブライトネスパターン展開) | @F no,exLen | (T) | ||
(レゾナンスパターン設定) | @RS no, value1,exLen1, ... | (T) | ||
(レゾナンスパターン書込頻度) | @RW num | (T) | ||
(レゾナンスパターン展開) | @R no,exLen | (T) | ||
(拡張ゲートタイム) | @Q [+-] GateTime | (T) | ||
(ランダムゲート) | @QR Minus,Plus | (T) | ||
(ランダムゲート停止) | @QRS | (T) | ||
(ランダムベロシティ) | @UR Base,Range | (T) | ||
(ランダムベロシティ停止) | @URS | (T) | ||
(ベロシティリスト) | @UL | (T) | ||
(ランダムシーケンスリスト) | @RNDL | (T) | ||
(ランダムシーケンス設定) | @RNDS | (T) | ||
(ランダムシーケンス転回) | @RND | (T) | ||
MA5以降の音源特性上、モノオンでも完全にリリースを消すことが出来ません。
このため、ATS-SMAFに限られますが、ノート間で確実に消音させるためのコマンドを用意しました。
但しデータ量がかなり増大しますので、ここぞという場所に限定して使用することをおすすめします。
@CCコマンド同様、本コンパイラで実装していないエクスクルーシブを出力するための
コマンドを用意しました。
MIDIインプリメンテーションチャートから引用する場合には、F0及びF7を省略してください。また、
ATSのガイドから引用する場合にはF0,Size及びF7を省略して下さい。
出力データを視聴する際、どうしても音源のリセットをしたい場合があります。
これに対応するため、GM,GS,XGリセット用コマンドを追加しました。
なお、リセット結果を保証するため、指定後4分休符を合わせて挿入しています。
指定の際は、最初のトラックの先頭に記載してください。
拡張コマンドによるMIDIイベントの書き込み位置をシフトします。
・@REW exLen タイマーシフト前方指定
時間を戻します。
・@W exLen タイマーシフト後方指定
時間を進めます。
・@REWE タイマーシフトクリア
@REW及び@Wの効果を解除します。なお、拡張コマンド領域から脱出後、通常のコマンドが
実行される手前で暗黙に実行されます。
※exLenについて
MLDC標準の音長では機能が制限されてしまうので、拡張コマンド内での音長指定方法についても
拡張しています。
・付点 制限はありません。(付点単位で計算結果の小数点以下は切り捨て)
・絶対音長 MLDC標準と基本は同じですが、上限がありません。
・加算 ^で音長が加算できます。(絶対音長との併用も可)
MLDCで発音中の装飾を記述しようとすると冗長になってしまいます。
これを多少解消するため、エフェクト系の拡張コマンドを追加しました。
・ボリューム @VS @VW @V
・モジュレーション @MS @MW @M
・ベンド @BS @BW @B
・エクスプレッション @XS @XW @X
・パンポット @PS @PW @P
・マスターボリューム @MVS @MVW @MV
・ブライトネス @FS @FW @F
・レゾナンス @RS @RW @R
それぞれ、パターン設定、パターン転回時書き込み頻度、パターン転回となっています。
なお、パターン転回後は指定音長分タイマーシフトが進行します。複数のパターンを併用する場合は、@REWEで一度リセットしてから
改めて@REWで前方シフトするとよいでしょう。
※補足
基本的に、転回直前の値を基準に変化し、転回終了時に基準値に戻りますが、マスターボリュームに関してはその
使用目的を考慮し、基準値に戻すためのMIDIイベントは出力されません。
ベンドは変化量をノート数で指定します。また、変化量には小数点以下の指定も出来ます。
(例1)
'{ @MS0,0,8.,127,0 @MW1 } 遅延ビブラート(待ち時間8.)
c1 '{@REW1 @M0,1 @REWE }
(例2)
'{ @BR12 @BS0,-12,4 @BW3 } シンセドラム用
c4c4c8.c8.c8 '{@REW1 [@B0,4]2 [@B0,8.]2 @B0,8 @REWE }
ゲートタイムを正負方向に指定します。
・正方向 @Qn 又は @Q+n ・・・Qコマンドと同等
・負方向 @Q-n ・・・ ゲートタイムを音長+nにします
nの範囲は+-3072(16小節相当)
・@UR base,range
以降のベロシティを指定条件の乱数による値に書き換えます。
baseが128の時、動作中に発音されるノートのベロシティに対して相対変化させます。(ver2.7以降)
・@URS 乱数ベロシティを停止します。
ベロシティ値をスタックし、以降のノートへ順に適用します。
・@UR [+-]n ,...
符号なしの時は絶対値、符号ありの場合は指定時点のUの値*2+1に対する相対指定
・@RNDL no, exLen, ...
ランダムシーケンスのウエイトリストを設定します。
no ・・・ パターン番号
exLen, ... ・・・ 次のイベント出力までの待機時間
・@RNDS no, type, CCNo, base, range, wait(exLen), waitmode, waitListNo.
ランダムなノート・ピッチベンド・コントロールのパターンを設定します。
no ・・・ パターン番号
type ・・・ 種別: 0=ノート, 1=ピッチベンド, 2=コントロールチェンジ, 3=*プログラムチェンジ
CCNo ・・・ コントロールチェンジNo.(種別2以外では値は無視)
base ・・・ 中心値(0〜127)
range ・・・ 変化範囲(1〜127)
wait ・・・ 書込頻度(音長)
waitmode ・・・ 頻度モード(0=wait固定、1=waitを最大とするランダム、2=ウエイトリスト)
waitListNo. ・・・ ウエイトリスト番号(頻度モード2以外では値は無視)
*なお、音色番号は通常の番号-1(1-128 -> 0-127)になります
・@RND no, exLen
ランダムシーケンスを転回します。
・@QR Minus,Plus
以降のゲートタイムを指定条件の乱数の範囲で増減させます。
・@QRS ランダムゲートを停止します。
ver2.7a ランダムシーケンスにプログラムチェンジを追加
ver2.7 ランダムベロシティ相対指定、ランダムゲートを追加
ver2.6f 楽曲終端が休符の場合に休符が切り捨てられるのを修正
ver2.6e ランダムシーケンスリスト追加
ver2.6d ランダムシーケンス追加
ver2.6c 拡張ゲートタイム、ランダムベロシティ、ベロシティリスト追加
ver2.6b エフェクト系拡張コマンドにブライトネス、レゾナンス追加
ver2.6a ATS-MA5にSMFを読み込ませる機能を追加(不完全)
ver2.6 エフェクト系拡張コマンドを追加
ver2.5b ドラムトラックでパンが消えていたのを修正
ver2.5a 音長0を指定するとゴミを出力する場合があるのを修正
ver2.5 P句解釈、トラック縛りをほぼ撤廃、初期化コマンド、エクスクルーシブコマンド追加
ver2.4 リリース残響対策コマンド(MMF専用)
ver2.3h マクロを小文字にするとメモリエラーになるのを修正
ver2.3g ベロシティ0の補正方法を変更
ver2.3f ベロシティの変換方法の変更
ver2.3e UFIXの変換レンジを2種類にした
ver2.3d 1CH目しか治ってなかったので再修正
ver2.3c 和音のノート解釈を修正
ver2.3b MONOPOLYのチャンネルがずれていたのを修正
ver2.3a いろいろ不具合修正
ver2.3 MLDパッチ機能統合、ユーザーインターフェース修正
ver2.2 MLDのハードウェアループ支援関連
ver2.1d BendRange=の出力チャンネルがずれているのを修正
ver2.1c ベロシティ補正のレンジを修整
ver2.1b 最初のノートが0から始まると無視されるのを修正
ver2.1a マクロ誤動作修正、ベロシティ関連調整
ver2.1 音量データ圧縮機能追加
ver2.0d ベロシティ0の場合の補正
ver2.0c テンポ書込時間が全て0になっていたのを修整
ver2.0b リズムトラックの変換仕様変更及びver1擬似互換モード追加
ver2.0a リズムトラックの場合のキー逆補正
ver2.0 フルコンパイル形式とし、全て作り直し(ATS-MA5-N記念)
ver1.1e 相対ベンドが反映してなかったのを修整
ver1.1d Delphiコントロール修整による誤動作修整
ver1.1c 省略型ノートが最終の場合にフリーズするのを修整
ver1.1b ベンド関係をいろいろ修整、ノート解釈修整
ver1.1a ベンド情報を再生成するようにした。
ver1.1 バイナリ挿入処理(一部)及びMASTERVOL対応
ver1.0g 和音表記(音長0)で0除算エラーが出るのを修整
ver1.0f プログラムチェンジが欠落する場合があるのを修整
ver1.0e Ch10,11の初期モードを誤判定していたのを修整
ver1.0d コントロールチェンジが全て削除される致命的バグを修整
ver1.0c 省略時音長のステップ表記解釈修整
ver1.0b ステップ表記時の休符解釈修整
ver1.0a ベンドレンジ、COPYRIGHT追加、ファイル参照時動作補正
ver1.0 初版。(BS124ADDを踏まえて作り直し)