======== 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/ (←ここに最新版を登録)