2008年06月20日

PMDMX(2)

仕事場で昼休みにコソコソと開発してるのでなかなか捗らないが、ようやく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.exePMDMX0.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>
posted by JUD at 01:49| Comment(6) | TrackBack(0) | PMDMX
この記事へのコメント
次は統合開発環境

「VisualPMD」

の開発だなwww
Posted by 白亜R at 2008年06月20日 10:25
で、次はWinFMP.dllも飲み込んで「VisualStudio」にしますかww
同期出来なくて同時に使えないけどw

いや、GUI版もちゃんと進行中ですよ。
Posted by JUD at 2008年06月20日 12:36
レス遅くなったけど、[F5]で保存→コンパイル→一発再生と、[GRPH]・・・は無いからw、左[Alt]で早送りをw
Posted by 白亜R at 2008年06月24日 12:03
あー、なんかMuSICA思い出すな・・・

正直な話、コマンドラインで充分いい動きするんで、GUI作るのが面倒になってきたww

いっそのこと、コアはコマンドラインからテキストベースにして、MML書く環境だけGUIシェルを作って終わりにしてしまうのもいいかもしんない。
今日の昼休みまでで、ようやくリアルタイム再生できるようになったし。
Posted by JUD at 2008年06月24日 21:06
コマンドプロンプトをオブジェクトとしてVBフォームとかに
貼り付け出来れば面白いんだけどねw
Posted by 白亜R at 2008年06月26日 19:33
なんかVBっつーかExcel/VBAで簡単にシェルを作れそうな気がしてきたw

まあ、コマンドラインアプリだからsystem("commandline")で実行して、メッセージはリダイレクトして吸い上げれば十分な気がする。
Posted by JUD at 2008年06月26日 21:42
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/16192187
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック