PMDRC | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
最新の情報最新の情報は、PMDRC - JUDSTYLE Wikiで扱っています。ここの更新は終了したので、リンク先を参照してください。
近況十分な機能と動作を確認できたため、PMDRCとそのシリーズの開発は停止しました。故障の対応は報告やリクエストがあれば出来る限り行いますが、保証は出来ません。まれに、作者の気分で更新します。また、開発の停止に伴いPMDRCシリーズの(V1.01c)全ソースコードを公開します。ただしこれは公開するだけで諸々の権利を放棄するものではありませんし、実行ファイル同様、十分い注意を払い利用してください。当プログラムはVisualC++ (R) 6.0 Enterprise Editionにて開発していました。PMDRC内部構造やPMDデータ構造についての質問はは可能な限り答えますが、ソースコードそのものに関する質問はご遠慮ください。 2005.11.20追加情報V1.11を公開しています。ソースはさらに汚くなったので公開しません :-) V1.10でのクレジット表示に不具合があり、直しました。/dodumpで2バイトコードが業を跨いだときにゴミが混じる現象も解決しました。機能追加として、同期ポイントと称して、指定した小節数毎に小節番号を表示する機能を加えましたが、小節線処理自体に問題があるため、こちらも完全ではありません。PMDRCを耳コピ代わりに使っている人にはもしかしたら有効かもしれませんが、あくまでもオマケ程度です。おそろしく長い曲の後半数節だけを揃えて抜き取りたいときには有効でしょう。 2005.9.18追加情報PMDRC V1.10にて、機能的に重要な問題点と回避方法が発見されています。PMDRCにPMD演奏データを入力した際、PMDRC.DLL内で問題が発生しプログラムが異常終了します。これはある条件を満たすデータであれば確実に発生しますが、これをおよそ8割程度(手持ちデータ調べ)回避する方法もあります。エラーが発生する場合の多くが、小節線処理(小節の切れ目を自動判定して半角空白を挿入する処理)に起因しています。この場合は、小節線処理を行わないことで問題を回避することが出来ます。 /nobarline をコマンドラインに挿入して逆コンパイルを行ってください。
概要PMDRCは、PMD演奏データを逆コンパイルしMMLを生成するアプリケーションである。従来型の「演奏データを完全に再現するMMLの出力」ではなく、「再利用に適したMMLの出力」に注力しているのが特徴である。ただ、デバッグの都合上「完全に再現させる」方がやりやすいので最近その傾向が強い。デバッグでいちばん簡単な方法が、「再度コンパイルしてみる」という方法だからだ。PMDRCのコアはPMDRC.DLLである。PMDRC.DLLは単にMMLを生成するだけでなく、特殊な条件付けや設定の変更、出力されるMMLの編集など、多機能なインターフェースを持つ。 また、FMPデータの読み込みに対応するため、FMPデータからPMDデータを生成するF2PCV.DLLを開発した。全てのファンクションを正確には表現できないが、PMDRCレベル4相当のMMLをPMD形式にコンバートする。 現在完成しているアプリケーションはPMDRCC.EXEのみであり、今後GUIを開発する予定であるが、万にひとつの可能性だとしても、GUIを作成してくれる勇者が現れることを願ってPMDRC.DLLを公開するものである。まぁ、いないだろうけどな。 Professional Music Driver / P.M.D. は M.Kajihara 氏が作成したFM音源ドライバです。 FMP は Osamu "Guu" Nagai 氏が作成したFM音源ドライバです。 PMDRC / PMDRC.DLL は JUD(T.Terata) が作成したアプリケーションです。
構成PMDRC.DLLPMDRCコア。入力した設定情報とPMDデータから、MMLを出力する。F2PCV.DLLFMP→PMDデータ変換コア。入力した設定情報とFMPデータから、PMDデータを出力する。ただし、このデータはPMDで演奏できない(保証しないだけで出来ないわけではないがかなり危険。PMDRCで読まない部分はダミーデータであったりするため)。PMDRCC.EXEPMDRCコマンドラインアプリケーション兼サンプル。旧バージョン(Ver.0.93以前)と同様の機能を持ち、DLL化したPMDRC・F2PCVをロードし逆コンパイルを行う。PMDRCG.EXEPMDRCGUIアプリケーション。コマンドラインアプリケーションにはないインターフェースを提供する。のらりくらりと作成中。
バージョン情報アプリケーションからコア(DLL)を切り離したため、バージョン合わせに注意する必要があるため、バージョン管理を設けた。コアは、一致しないインターフェースにて呼び出される処理を拒否することができる。また、新しすぎる(古すぎる)アプリケーションからの処理も拒否することができる。アプリケーションは、DLLをコールする際に、以下の項目をDLLに知らせる必要がある。 ・アプリケーションのバージョン ・インターフェースのバージョン DLLはアプリケーションからの処理に対し、以下の項目をアプリケーションに知らせる。 ・DLLのバージョン アプリケーションは、DLLから処理が戻ってきた際にリザルトコードとDLLバージョンをチェックし、DLLバージョンが意にそぐわないものであった場合は処理を中断するのが望ましい。 なお、インターフェース構造体における各バージョン情報とリザルトコード情報の場所は不変であるものとする。 バージョンの記述に関しては、バージョン値を1000倍したものを整数で示す。但し、この末尾一桁は任意の値を使用できるものとする。 ex.) 1.00 → 1000 1.03 → 1030 1.23d → 1234
PMDRC.DLL / F2PCV.DLL 配布条件自作・他作に関わらず、当DLLを利用するアプリケーションプログラムとともに無償配布する場合、以下の条件に従う限り自由に(現行法の定める範囲で)行うことができる。この場合、パッケージにこだわらない(PMDRC.DLL/F2PCV.DLL単体で添付可能)。・当DLLの作成者が JUD(T.Terata) である旨を明記すること ・改変したものである場合、改変前のバージョンと作者名、改変者名をを明記すること
制限・免責このソフトウェアの著作権保持者は JUD(T.Terata) である。P.M.D.の著作権保持者は KAJA(M.Kajihara) である。 FMP の著作権保持者は Osamu "Guu" Nagai である。 このプログラムは、リバースエンジニアリングを行うソフトであるため、データ作成者の認めない形で利用することは概ね違法(但し、国内法・国際法の定める法のもとでの意)となる。一般的に、営利ソフトウェアの一部を当プログラムへの入力ファイルとして利用することは違法である可能性が高い確率で発生する。 プログラム作者は、このプログラム実行時に発生した全ての問題における全ての責を負わない。 作者は、機能向上のため、予告なくプログラムの改変を行う場合がある。 作者は、機能向上のため、予告のうえプログラムの改変を行う場合がある。 有償無償を問わず、上記配布条件を満たさずプログラム作者の許諾もない場合、実行ファイル・中間オブジェクト・ソールファイルの再配布・転載を認めない。紙面・誌面への掲載・添付については、これを一切認めない。 当プログラムの実行ファイル・中間オブジェクト・ソールファイルを改変したものの公開については、改変版であることを明記すること、バージョン番号に変更を加えること、何らかの技術で保護されないコンテンツに掲載すること、の3点を条件に暗黙で認める。ただし、作者である JUD(T.Terata) に改変した全てのソースコード及び実行ファイルを渡した場合はこの限りではない。
履歴
ダウンロード(1.10系)PMDRC110.LZH (Ver.1.10)実行用ファイル一式。PMDRC111.LZH (Ver.1.11)実行用ファイル一式。ダウンロード(1.01系)PMDRC101.LZH (Ver.1.01)実行用ファイル一式。PMDRC101aP.LZH (Ver.1.01a)バージョンアップ差分(F2PCV.DLL除く)。PMDRC101b.LZH (Ver.1.01b)実行用ファイル一式。PMDRC101cP.LZH (Ver.1.01c)バージョンアップ差分(F2PCV.DLL除く)。PMDRC101SALL.LZH (Ver.1.01c)ソースファイルを含むフルセット。J_QQQ.MZデータファイルサンプル。J_QQQ2.MML.txtMML出力レベルを2に設定した場合の、データファイル逆コンパイル後のサンプル(プレーンテキスト)。ほぼ全てのMMLが出力される。J_QQQ3.MML.txtMML出力レベルを3に設定した場合の、データファイル逆コンパイル後のサンプル(プレーンテキスト)。音色番号(@)を簡略化(PCMループアドレスの非表示)し、タイ/スラー・音符・休符・ループ制御以外の出力が抑制される。J_QQQ4.MML.txtMML出力レベルを4に設定した場合の、データファイル逆コンパイル後のサンプル(プレーンテキスト)。音符・休符・ループ制御以外の出力が抑制される。J_QQQTX.MML.txtTX81Z型の音色出力を行った場合の、データファイル逆コンパイル後のサンプル(プレーンテキスト)。音色出力方式が変更されている。J_QQQ0.MML.txtダンプのサンプル(プレーンテキスト)。J_QQQ1.MML.txtスーパーダンプのサンプル(プレーンテキスト)。J_QQQORG.MML.txt参考までに、元のMMLファイル(プレーンテキスト・8タブ・80カラム)。
既知の問題点チェックも甘いので、たまにバグのせいで落ちる。とくにF2PCVは、バンバン落ちる。F2PCVは認識率もまだ半々といったところ。PMD68専用・PX専用コード等、PMD98以外のデータに対応していない。 F2PCV.DLLが、コメントのないデータをPMD形式にコンバートする際、末尾に無用な2バイトが付加される(何の影響もないので無視している)。また、コメント部のエスケープ文字・(俗に言う)FMP外字・2バイト改行文字に対して何の対処も行っていない。 小節線処理でダウンすることがある。 |