仕事場で昼休みにコソコソと開発してるのでなかなか捗らないが、ようやくMMLから1passで再生まで出来るようになった。
(1)コンパイラMCMX1.exeが独自形式.MMLを読み取る
(2)PMDPPZ用MML2個に分割する
(3)MC.exeを起動してPMDPPZ用.MMLをコンパイルする×2
(4)MCMX1.exeからPMDMX0.exeへの演奏指示データ.MX0を作成する
(5)MCMX1.exeからPMDMX0.exeを起動し.MX0を渡す
(6)PMDMX0.exeがPMDWin.dllの複製を作成しロードする×2
(7).MZを読んで演奏結果PCMデータを作成し、ミキシングする
(8)演奏結果PCMデータ.wavを作成し、MediaPlayerを起動し渡す
(9)無事にFM12音が響き渡る
なんという積み上げ構造ww
まあ、コマンドラインでやろうとすると、これくらいは1passで出来ないとちょっと面倒なので仕方がない。なんかGUIを作る際には全然関係ないロジックなので回り道以外の何者でもないが、やれることはやれるうちにやっておきたいというのが本音。どうせ、出先で打ち込むときはVAIOのC1なので、少しでも軽いものを作っておきたい。
メモっておくべき事柄一覧。
(A)MC.exeは長いファイル名が扱えないのでGetShortPathName(SDK)必須
(B)PMDWin.dllによる演奏が重い。21演奏秒/演算秒程度の性能しか出ない
(C)いちいちメディアプレーヤーが立ち上がるのはウザい
MCMX1.exeもPMDMX0.exeも重要な機能の実装は終わったので、明日からはドキュメント整備と一部のリファクタリング、それに(C)と(B)の解決作業に移行しよう。コマンドラインのWAV再生アプリを作るか、PMDMX0.exeに組み込むか・・・。
性能についてはちょっとPMDWin.dllに手を入れるわけには行かないので、なんか回避方法を考えないといけない。といっても多分限界はあるので、リアルタイム再生で凌ぐしかないなあ。
D:\PMDMX>mcmx1 qmx.mml -l
-[MCMX1] Start Pre-Compile, Ver.1.24.
s[MCMX1] output LogFile [D:\PMDMX\MCMX1.log].
s[MCMX1] MML format extend PMDMX1.
s[MCMX1] output MX-File for [PMXMX0.exe].
s[MCMX1] output with MX-File.
s[MCMX1] Specify WAVEs path(module:0).
s[MCMX1] Specify WAVEs path(module:1).
s[MCMX1] Jump start 0 seconds, for [PMDMX0.exe].
s[MCMX1] Recording 41 seconds, for [PMDMX0.exe].
s[MCMX1] prescribe PxI-Pathes, [F:\PVI_DAT].
s[MCMX1] Commandline Playback, for [PMDMX0.exe].
s[MCMX1] prescribe PPZExtend, [#PPZExtend STUVWXYZ].
s[MCMX1] prescribe FM3Extend, [#FM3Extend LMN].
-[MCMX1] Start Compile, by [C:\USER\BIN\MC.exe].
-[MCMX1] output MZ-File(1) [D:\PMDMX\qmx_MX1.MZ].
-[MCMX1] output MZ-File(2) [D:\PMDMX\qmx_MX2.MZ].
-[MCMX1] output MX-File [D:\PMDMX\QMX.MX0].
-[MCMX1] Finish Compile.
-[MX0] Start PMDMX0.exe, P.M.D.MultiplieX Ver.0.95
s[MX0] -----------------------------------------
s[MX0] MX Filename : D:\PMDMX\QMX.MX0
s[MX0] Output Filename : D:\PMDMX\QMX.wav
s[MX0] Output Length : 41 seconds.
s[MX0] PxI-Files paths : 1
s[MX0] PxI-Path( 1) : F:\PVI_DAT
s[MX0] Module(1)
s[MX0] MZ Filename : D:\PMDMX\qmx_MX1.MZ
s[MX0] Rhthm-PCM Path : F:\PCM_DAT\YM2608PCM
s[MX0] Module(2)
s[MX0] MZ Filename : D:\PMDMX\qmx_MX2.MZ
s[MX0] Rhthm-PCM Path : F:\PCM_DAT\YM2608PCM
s[MX0] -----------------------------------------
-[MX0] Finish PMDMX0.exe.
-[APMALLOC] unhandling buffers, 15 areas.
D:\PMDMX>
2008年06月20日
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/16192187
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/16192187
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
「VisualPMD」
の開発だなwww
同期出来なくて同時に使えないけどw
いや、GUI版もちゃんと進行中ですよ。
正直な話、コマンドラインで充分いい動きするんで、GUI作るのが面倒になってきたww
いっそのこと、コアはコマンドラインからテキストベースにして、MML書く環境だけGUIシェルを作って終わりにしてしまうのもいいかもしんない。
今日の昼休みまでで、ようやくリアルタイム再生できるようになったし。
貼り付け出来れば面白いんだけどねw
まあ、コマンドラインアプリだからsystem("commandline")で実行して、メッセージはリダイレクトして吸い上げれば十分な気がする。