======== z2m3 (ZtoMβ for Z-MUSIC V3) 簡易マニュアル ======== ○z2m3 って? V3対応のZtoM(ZMD→MIDコンバータ)です。最終的には ZtoM ver3.x と するつもりですが、現行のZtoMと比べると機能、安定性の面でどうしても 見劣りするため、ファイル名を z2m3 と変えて、β版扱いにしています。 ○実装済MML ほぼすべてのV2相当MML(@zなど一部のMMLを除く) [KEY][METER][EVENT WORD,STRING,"歌詞"][COMMENT 〜][PATTERN][EMBED] トラック名(.ASSIGN 1 {midi1-1,,,,,COMMENT} のCOMMENT) [AUTO_PORTAMENT] [AUTO_PORTAMENT.SW] [PULL〜]なポルタメント [ARCCn.SYNC][ARCCn.PHASE][ARCCn.DEEPEN] [TRACK_FADER] [CH_FADER] (一応)32ch対応 ○現在の版でまだ実装されていないところ ほとんどのV3拡張 波形の接続 アフタータッチ ZtoMにはあった各種スイッチ(その内つけます) その他……たくさん。 ○制限 波形の定義が255個までしかできません。(波形番号は8-32767を使用可能) 従来のZtoMに比べて、出力されるSMFの最適化が甘いです。曲によっては 演奏が重くなってしまう→ニュアンスが変わる ことも・・・。 変換が猛烈に遅いです。68000-10MHz(作者の環境)では実演奏時間より 変換が遅かったりすることもしばしば。 ・・・とまあ、並べてみると、ロクなもんじゃないですね(^^; ○暗黙の了解 ZtoMと同じく、@R指定(NOTE OFF省略)は無視されます。-R スイッチを つけることで、@R指定が有効になります。 ○既知の不具合 鋸歯波や1shotなどの波形で、出力値に±1程度の誤差が見られる。 演算誤差かなぁ・・・? ○32ch対応について ちょっと手を抜いており、SMFの仕様にないが事実上の標準である メタイベントFF 21を用いて、最初の16chをポート0、次の16chを ポート1、・・・として変換します。国内で普通に使う分にはこれで 問題ないでしょう。 しかし、個人的に今の「決め打ち実装」には不満が残っているので、 スイッチで色々ポート指定方法を変更できるようにする予定です。 ○使い方 従来通り、z2m3 [スイッチ] 入力ファイル[.ZMD] [-o 出力ファイル[.MID]] でOKです。[]内は省略出来ます。 V3の大抵の曲は z2m3 -i0 ファイル名で、V2のなら z2m3 -i0v2 ファイル名 で変換出来るでしょう。(後者は z2m3 -i0 -v2 ファイル名 でも構いません) ○スイッチ 現在実装されているスイッチは以下の通りです。 -s ランニングステータスを禁止します。通常は禁止しません。 -l数字(-l2など) 無限ループ([do]〜[loop])を使っている曲を変換する場合のループ 展開回数指定です。デフォルトは-l2です。 展開回数に0を指定することもでき、その場合は[do]〜[loop]内が 削られます。 -f数字 無限ループ展開終了時のフェードアウト速度を指定します。 数字には、[CH.FADER]で指定する物と同じを使います。例えば -l2 -f20 ですと、2回ループして、3回目のループ開始から \20 相当の速度でフェードアウトして終了します。 -i (数字なし) Z-MUSICが演奏開始時に送信する初期化コードを埋めこみます。 尚この際のデルタタイムは0となります。 -i数字(-i10など) 初期化コード/共通コマンド部のデルタタイムを設定します。 -i0 各トラックの初期化コードを@g12のみとします。-i数字 の特別な 形式です。 通常、いわゆるGSリセットやXGリセット、GMリセットなどで初期化を 行っているデータについては、まず-i0で十分です。 -x数字(-x6など) 共通コマンド部のエクスクルーシブメッセージのデルタタイムを 設定します。デフォルトでは-x0相当になっていますが、初期化が コケるようであればこれでウエイトを入れてください。 ただ、このウエイトの有無に関わらず、曲の出だしは小節の頭に 自動的に配置されますので、共通コマンド部のエクスクルーシブの 数に応じて演奏開始位置をmmlで調整する必要はありません。 -p数字, -m数字 個々のチャネルについて、実際に変換するかそれとも変換しない (マスクする)かを設定します。-pが演奏チャンネル指定、-mが muteチャンネル指定です。 -p1: portA 1chを再生 -p1-3: portA 1ch〜portA 3chを再生 -pa1-a3: 同上 -pa1-b16: portA 1ch〜portB 16chを再生 -pと-mを同じチャネルに対して指定した場合は、後から指定した物が 有効になります。 これらのスイッチを省略した際には、全チャネル演奏と見なします。 -pを指定した場合は、指定以外のチャネルは変換されません。 -r MML中の @R (noteoff省略)を有効にします。デフォルトでは無効に なっています。 -u SMFのテンポは、四分音符の長さをμ秒で表現します。つまり、 実際にデータとして記録されるのは 60x1000x1000 / tempo の計算結果なのですが、この割り算が割り切れない場合に誤差が 生じます。 z2m3では現在2種類の計算方法を用意しています。小数点以下を 切り捨てるものと、四捨五入するものです。デフォルトでは切り 捨てます。 切り捨てる場合、各種プレーヤでの表示テンポが指定テンポに 一致する確率が高くなりますが、真のテンポ値から若干離れた値を データとして出力することになります。対して四捨五入の場合、真の テンポ値により近い値を出力しますが、プレーヤでの表示が若干 小さめになることが多いです。(大抵のプレーヤがテンポ値を切り 捨て表示するため) なお、たとえプレーヤでの表示テンポが小さくても、実際の演奏 テンポまでもが小さいことはあまりありません。 -v2 / -v3 -v2 を指定すると、以下の変換挙動がZ-MUSIC V2互換になります。 1.フェードイン/フェードアウトのスピード。V3の (MIDI)フェーダーの速度はV2の半分です。 2.波形メモリの振幅。(V2時は原波形固定になります) 3.絶対音長1がタイ(=OPMDRV互換)に。 4.プログラムのバンクセレクト時にプログラムチェン ジを送信しない。V3では送信します。 例: SC-55で、i127@48i0cde とすると、 V2ではSquareWave,V3ではTimpaniで発音。 5.TIMER系スイッチのデフォルトが -t1(OPM TIMER-B) となる。 (通常は-t0:MIDIボードのタイマ がデフォルトです。 -v2を指定しても吸収できない部分は以下の通りです。 1.ZMDコードをZMSから直接埋め込んでいるもの。 2.step < gate な音長。V2では step=gateに補正され ますが、V3では和音と見なされます。 3.ディレイ付き和音にオートベンドを掛けた場合の 挙動。例えば @b0,683'c1g',64 は、 V2: @b0,227c*0&@w64 @b227,683g*128 V3: @b0,683c*0&@w64 @b0,683 g*128 と演奏される(V3のZMDの仕様)。 デフォルトでは-V3 状態です。ただし、ZMSの共通コマンドで(i2)が 指定されている場合はこの限りではありません。 # 個人的にはV2なデータの変換にはz2m3でなくZtoMをお勧めします。 -t0 / -t1 / -t2 MIDIタイマ以外のタイマを使用してコンパイルされたZMDを変換する 場合に指定して下さい。0,1,2がそれぞれMIDI, OPM TIMER-B, OPM TIMER-Aに相当します。 デフォルトは-v3時が-t0(MIDI TIMER)、-v2時は-t1(OPM TIMER-B)と なります。 - 標準入力を用います。 -c 標準出力を用います。 ○表示 (err XX)と出れば、まだz2m3に実装されていないZMDコードXXに遭遇したと 言う意味です(よーするにエラー)。 他にも出ることがありますが、まあエラーの類だと思って頂いて間違い ありません(=多分z2m3の不具合)。 ○配布 このアーカイブに含まれるプログラム,ドキュメントなどはPDSとして 扱って頂いて構いません。これらを作成したことによって生じた一切の 権利を放棄したものと見なして結構です。配布,転載,改変なども 報告なしで御自由にどうぞ。 ○謝辞 デバッグ用の、V3なMMLの提供に感謝致します。 >Yggdrasillさん muteさん 我孫子さん MAZさん ぱじぃーさん MASAさん Fussyさん MAZさん NKGRさん ○最後に 不具合相談は下記までご遠慮なくどうぞ。 -- Internet:yyagi@muc.biglobe.ne.jp web: http://www2s.biglobe.ne.jp/~yyagi/ (←ここに最新版を登録)