domino/要望003/81

Last-modified: 2009-01-02 (金) 16:10:38

「.mid → .dms」変換ツール

  • ページ: domino/要望
  • 投稿者: 逃亡者?
  • 優先順位: 低
  • 状態: 完了
  • 投稿日: 2008-05-10 (土) 23:21:48

メッセージ

.midファイルを 指定した定義ファイルに合わせた.dmsに変換する 外部ツールが欲しいです。
内部の機能ではなく外部ツールを希望する理由は、複数のファイルの一括変換を行いたいことと、
一部の定義ファイルはそのままでは不都合があるためです。
(Dataの内容が被っているものがあるため、そのまま変換したのではおそらく理想的な.dmsになりません。
 変換ツール用の定義ファイルを別途用意するのがベストだと思います。)

[主な目的]

  • エクスクルーシブ、RPN、NRPNを解析しやすい形(CCM)にして、他者のファイルから勉強したい。
  • エクスクルーシブ、RPN、NRPNを編集しやすい形(CCM)にして、再編集を行いたい。
  • 特定のCCの組み合わせ(例:<Data>@CC 98 04H @CC 6 #VH @CC38 #VL</Data>)を編集しやすい形(CCM)にして、再編集を行いたい or 他者のファイルから勉強したい。
    (※ VOCALOID2 VSTi で必要です。)

[欲しい機能]

  • ポート毎の変換用定義ファイルを指定する。
  • ドラッグ&ドロップで複数の.midを登録し、一括で変換できる。
  • 変換した.dmsの保存先は元の.midと同じ場所か、別のフォルダかを選択できる。
  • 条件分岐的なものを変換用定義ファイル内で設定できる。
    例:
    「F0 43 10 4C 02 01 40 #VH #VL F7」の値(#VH #VL)が「4B 00」の場合は
    「F0 43 10 4C 02 01 42 #VH #VL F7」のCCMナンバーを901番にする。
    (Variation TypeのValueがAMP SIMの場合は
     Variation Parameter01のCCMは901 VP01 AmpS Driveにする。)
最後の「CC#99」の値が「50H」の場合は
「@CC 98 03H @CC 6 #VH @CC38 #VL」のCCMナンバーを304番にする。
(NRPNの種類がNote Messageの場合は
 「@CC 98 03H @CC 6 #VH @CC38 #VL」のCCMは304 Note Velocityにする。)

よろしくお願いします。


  • 私もこれ希望です。長らくCherryを使ってましたが、その間作ったCHYファイルをDominoに移植できないか、と考えていました. -- T? 2008-05-13 (火) 19:46:07
  • 誤って投稿してしまいました。.midを読み込めば再編集は不可能ではないのですが、作りこんだMIDIデータはSysExとNRPNでいっぱいになっており、非常に煩雑です。これをCCMに置換する機能があったら・・と思っていました。逃亡者さんの言うように、外部ツールで一括変換できるのであれば最も理想的です。質問掲示板でのたかぼー氏曰く「案はあったが要望がなかったので実装していない」とのことで。案外、希望者多そうだと思うのは私だけでしょうか^^; -- T? 2008-05-13 (火) 20:05:16
  • ちょっと理想が高いような気がしますので、まずは本体内蔵、Dataの重複部分はデータの長い方を採用、あたりからやるべきかなぁと思います(この辺りが現実的かと思います)。たぶん、これだけでも今よりはずっと良くなると思います。この辺りが動いてくると、もう少し問題点が出てくると思いますので、そうした問題点を整理したうえで定義ファイルの仕様拡張などを行っていった方が良いかと思われます。(それかVocaloid2定義ファイル専用のコンバータを作ってしまうか^^;) -- たかぼー? 2008-05-16 (金) 09:31:19
  • そうですね。VOCALOID2 VSTi的なNRPNの使い方は他に無いような気がしますし、専用コンバータの方が良いかもしれません^^; まずは本体内蔵でお願いします。m(_ _)m -- 逃亡者? 2008-05-20 (火) 23:27:16
  • やるだけやってみました→http://www.tkb-soft.hmcbest.com/Domino133_dev000.ZIP 全マクロデータとの比較をやっているせいで、時間がやたら掛かります (OO; -- たかぼー? 2008-12-14 (日) 23:53:53
  • 横からすみませんが、定義ファイルが変わった時のために、dms(旧) → dms(新) の変換機能は可能でしょうか。ぶっちゃけるとGSmやXG2kなどですが (^^;;、いつまでも古いままだと解凍するときにうっかり上書きしてしまいそうですので・・・ -- 2008-12-15 (月) 01:14:17
  • それは無理です。一度古い定義ファイルを使ってmid形式で書き出し、新しい定義ファイルを使って、midファイルを読み込めば、ある程度は変換が行われますが、完全に復元するわけではありません。 -- たかぼー? 2008-12-15 (月) 09:11:23
  • あ、すみません。mid → dms とは別に、dms(旧) → dms(新) の実現は可能でしょうか、という意味でした。よく考えると、新たに要望として投稿した方が良さそうですね。(ほとんどがCC番号の書き換えのみで済みそうなのでクリップボード経由で一括置換するツールでも作ろうかな・・・) -- 2008-12-15 (月) 18:50:58
  • Ver.1.33dev000以降でmidi読み込みが強化されましたので、いったんmidi形式を挟めば、新しい定義ファイル用にデータをなんとなく変換できますよ、という意味です。完全に綺麗に変換するわけではありませんが。あと、誤解されているかもしれませんが、dms形式自体は一切変更していませんよ。音源定義ファイルの一部に互換性が無くなっただけですから。 -- たかぼー? 2008-12-15 (月) 22:06:29
  • ありがとうございます。XG2kで新規作成したものをそのままSMF書き出ししたものでテストしてみた所、約6~7分くらいで処理が完了し、エクスクルーシブ・RPN・NRPNがうまく復元されていました。また、自分のサイトで公開中の2つのmidデータを試してみたのですが、82小節分(77.5KB)のデータでは、約20分くらいで処理が完了し、うまく復元されていました。しかし、132小節(204KB)のデータでは約6時間放置で処理が完了しなかった(90%のままだった)ので諦めました。中断した所まではうまく復元されていました。
    VOCALOID2 VSTiでは簡単なデータ(ドレミファソファミレド)を作って試してみたのですが、約8時間放置で36%だったので、諦めました。データ量を減らして簡単に試してみたのですが、VOCALOID2 VSTiは「CC#99、CC#98、CC#6、CC#38、CC#98、CC#6、CC#98、CC#6」のようにCC#99 NRPN MSBを省略したデータを大量に使用するのですが、それに引っ掛かっているような感じです。先頭の「CC#99、CC#98、CC#6、CC#38」までは復元されていましたが、その後の「CC#98、CC#6」以降は変化なしでした(中断したので当たり前ですが)。「CC#99、CC#98、CC#6、CC#99、CC#98、CC#6」とCC#99 NRPN MSBが省略されていない場合は、復元されました。
    うまく処理が完了されれば、主な目的の上2つ(勉強、再編集)は出来そうです (^^) VOCALOID2 VSTiは現時点では厳しいようです(おそらく処理が完了しません) (^^; -- 逃亡者? 2008-12-17 (水) 22:18:34
  • 検証ありがとうございます (^^) ちょっと掛かりすぎですね (T-T 参考までに8時間放置しても駄目というVocaloid2用のmidiデータを添付していただいても宜しいでしょうか? 多少チューニングはできるかもしれません・・・(定義ファイルは公開されているものを使えばよいのですよね) -- たかぼー? 2008-12-17 (水) 22:59:47
  • はい、定義ファイルのバージョン 0.09で行いました。 filevocaloid2_test.zip 削除してしまったので作り直したものですが^^; よろしくお願いします。 -- 逃亡者? 2008-12-18 (木) 20:09:46
  • ありがとうございます、dev002でちょこっと高速化したつもりだったのですが、8時間ファイルはさすがに駄目駄目でしたので、いっそのこと解析ルーチンをちゃんと作り直そうと思います^^;もうしばしお待ちください -- たかぼー? 2008-12-18 (木) 21:42:45
  • というわけで、高速化がうまくいったっぽいですのでアップいたします→http://www.tkb-soft.hmcbest.com/Domino133_dev003.ZIP -- たかぼー? 2008-12-18 (木) 23:13:27
  • 上でdms(旧) → dms(新)の要望をした者ですが(誤解はしてないです (^^;)、Ver.1.33dev002で試してみたところ、Variationパラメータが復元されないようです。(全てNo Effectの物になってしまいます) こればかりはVariation Typeに応じて振り分けないといけないので難しいでしょうか・・・ -- 2008-12-18 (木) 23:18:45
  • そうですね、そればっかりは自動変換では判別できませんので。 -- たかぼー? 2008-12-18 (木) 23:26:55
  • 「条件分岐的なものを変換用定義ファイル内で設定できる」というのが必要ですかね・・・。とはいえ手作業で書き換えるより遥かに楽ですし、dev003で十分な速度になりましたので、dms(旧)→mid→dms(新)の方法で移行しようと思います。横からでしたが、ありがとうございました。 -- 2008-12-19 (金) 00:03:52
  • あまりの速さに驚きました^^; いくつかイベントを追加して試してみましたが、バッチリ復元されました。VOCALOID2 Editorで作成されたデータ( http://www.crypton.co.jp/mp/pages/prod/vocaloid/cv01.jsp のデモソングのMIDI&イメージファイル 内の.vsqファイルを.midにリネームしたもの)は若干うまくいかなかった(ランダムで挿入あるいは省略されている「CC#98:0 CC#6:0 CC#38:0」のせいで、各種パラメーターに変換されないといけないものがノートデータに誤変換されてしまう)のですが、定義ファイルにそれ用のCCMを追加(各種パラメーターに「CC#98:0 CC#6:0 CC#38:0」を加えたものを新たに追加)することで、バッチリな感じになりました。よって、[欲しい機能]の「条件分岐的なもの」の例の後者(最後の「CC#99」の値が「50H」の場合は~)の方は不要となりました。おそらく、現段階で既に VOCALOID2 Editor → Domino の連携はバッチリになっていると思います (^^) (試した数が少ないので、何か見落としているかもしれません & 将来的に挿入 or 省略されるデータの値が変わった場合に困る可能性があります & GSm、XGb、XG2kのような感じでVOCALOID2 VSTi用の定義ファイルの構成を作り直す必要がありますが^^;)また、「トラック数が多い」に該当していたと思われるXG2kでうまくいかなかった132小節のデータも復元されました^^
    残る問題はエフェクトのパラメーター(GSの場合はEFX Parameter、XGの場合はENS DETUNEのChorus Parameter、Variation・Insertion Parameter)だけになりそうです。細かい部分では、XG2kでReverb・Chorus・Variation TypeがMU2000EX用ではなくS-YXG50用になってしまうというのもありますが(こちらは定義ファイル内でCCMのナンバーを入れ替えれば解決します)。 -- 逃亡者? 2008-12-20 (土) 11:22:21
  • この件どうしましょうかね。エフェクトのパラメータを上手い感じに復元する方法がなかなか思いつきません・・・ -- たかぼー? 2009-01-01 (木) 12:59:36
  • 困ったことに、Ver1.33の状態ですっかり満足してしまいました。個人的には、残りはコントロールチェンジの一括置換で手動で修正すれば十分かなーと。登録のパターンが230個以上になるので、保存はともかく呼び出し時に苦労しそうな気がしますが (^^; -- 逃亡者? 2009-01-02 (金) 16:03:55
  • 了解です、ではいったんこちらは閉じますね。 -- たかぼー? 2009-01-02 (金) 16:10:33