新着表示
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.15beta3.2024.0630
360
2024/06/30(Sun) 19:13:26
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed315_beta3.exe
https://kobarin.sakura.ne.jp/test/kbmed315_beta3.7z

.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。

.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。

起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-family
x64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exe
x86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe
(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)

VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。

β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。


v3.15beta3 での変更点

・MWRD の再生に関する以下の修正
 ・ウィンドウサイズを変更出来るようになった
  ・SetDIBitsToDevice を StretchDIBits(Mode は HALFTONE) に置き換え
  ・サイズが 640x400 のときは SetDIBitsToDevice のまま
 ・タイトルバーに関する修正
  ・SWRD/MWRD 再生時のタイトルバーと大体同じ(アイコン以外)
  ・再生中の WRD/DVS/DV のファイル名を表示
  ・DPWWRD.DPX が表示していたタイトルバー(「WRD Widndow」と各ボタン)は非表示
 ・ウィンドウを最大化出来るようになった
  ・解像度は変更しない & フルスクリーンにはしない
 ・右クリックメニューを修正
  ・SWRD/MWRD 再生時のメニューと大体同じ(違いは「設定」の有無)
  ・ウィンドウサイズと最大化、常に手前に表示等を追加
  ・「設定」以外の機能してなかった項目(「再生」や「終了」等)を削除
 ・終了時の位置とサイズを SWRD/NWRD と区別していたのを共有するようにした
 ・ハードウェア設定(「DirectDraw を使う」等)の全てを無視(無効化)するようにした
  ・DirectDraw はおそらく最大化時の解像度の変更にしか使っていないので、無効化
   してもパフォーマンスには影響しないはず
 ・再生開始直後に前回の曲の切り替え直前の映像が表示されることがあったのを修正
 ・SWRD/NWRD とほぼ同じ操作感で扱えるようになった
・演奏プラグインの演奏終了検出が出来ないことがあるのを修正
・演奏プラグインで WRD 再生時に終端付近(演奏は終了してるが WRD が未終了)の位置
 で一時停止すると再開出来ないのを修正
・kbunarc.kpi に関する以下の修正
 ・LZMA SDK を 24.07(2024/06/19) に更新

もう少し様子を見てから公開するつもりでしたが、演奏プラグインで連続再生出来ない
のは少し酷い不具合だと思ったので早めに公開することにしました。

MWRD でやりたかったことがほぼ実現出来ました。SWRD/NWRD とほぼ同じことが出来ます。
HALFTONE で拡大表示などは SWRD に対応した初期の頃(2000年代前半)では重すぎて全く
使い物になりませんでしたが、今だと全然大丈夫ですね。

あとは本体の設定画面でも MWRD の設定を出来るようにして、しばらく様子を見て問題なければ
正式版かな。本体での MWRD 設定はなくても良い気はしますけど。

DPWWRD.DPX は右クリックで表示される設定画面にはないキーの作成と値の参照をしてるのがある
のですよね。隠し機能なのか、ボツ機能なのかは違いを確認出来るデータが見つけられないので
分かりません。

あと細かいところで気になるのは、フォントの場所が Unicode なファイル名でも扱えるように
してみるとか、ですかね。そこまで必要かは分かりませんが、もしやるなら本体で設定画面を作る
ことが必須になります。

WRD の再生はファイル名と *.WRD の中身は Unicode 非対応ですがフォルダ名は Unicode 対応です。
DECOP では再生出来ない場所にあるものも再生出来ます。


今回のサイズ変更対応で映像のピクセルデータを取得することが出来ることが分かったので、
その気になれば本体が管理するウィンドウ上に MWRD の映像を表示することも出来なくはなさそう
です。そこまでする必要性は感じませんけど。

タイトルバーのアイコンハンドルを kbrunkpi.exe に渡す良い方法が思いつかなくて、アイコンの
表示だけ SWRD/NWRD と異なっています。HICON は DuplicateHandle 出来ないようなので、
ピクセルデータを渡すしかないのかな。kbrunkpi.exe に本体と同じリソースを持たせて、外観2
の設定でビットマップを変更してるならそのファイル名を渡すという手もありますが。

本体の管理するウィンドウに表示するなら、アイコンに関しては手間がかからなくなりますが、
管理するウィンドウに表示すること自体が…。

ただのアイコンの為にそこまで手間をかけるのも…。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^4: KbMedia Player Version 3.15beta2.2024.0627
359
2024/06/29(Sat) 16:34:57
Kobarin

> 更新が無いプログラムをAPIフックで改造するのは常套手段ですが、
> グローバルフックで全プロセスにやるのではなく1プロセスだけ、
> それも自プロセスに対して行うのは誤検出された経験は有りませんね。

kbgxscc.kpi、kbzmdrive.kpi、とか kbsmaf.kpi がノートンに削除されたことが何回も
あります。(実際は *.kpi ではなく hook_xxx.dll/mrgplay.exe の方)
kbfpd.kpi も引っかかったことがあったかな。これも CreateFileA をフックするから。

なので kbrunkpi.exe も同じことになりそうな気がします。

kbrunkpi.exe が削除されるのは重大な問題なので、削除されても MWRD の再生以外では
問題なく使えるようにする為に専用の .exe に組み込んだ方が良いのかもしれません。
kbrunkpi.exe に組み込むのが最も簡単で、切り離すとなると結構手間がかかります。

> DirectDrawをフックするのはかなりの手間でしょうし、
> このオプションも無効化されるのでしょうね。
> 描画内容はGDIでも大した負荷ではないでしょう。

DirectDraw はおそらく解像度の変更にのみ使っているようです。
有効にしても描画は GDI のようです。もしかしたら解像度の変更後に DirectDraw を使う
のかもしれませんが。

私の環境だと、最大化時に解像度の変更に失敗してその後マウスカーソルが消えてしまい、
ウィンドウのところにマウスカーソルを持って行くことも出来なくなって設定画面も開け
なくなり、レジストリを削除するまで事実上操作不可能になるので、最大化は出来ないよ
うにしていました。DECOP で動作させても同様ですし、WFP でも同じです。

> DPWWRD.DPX のウィンドウをサブクラス化して
> コンテキストメニューに手を入れたりもできるかも?

SWRD/NWRD と同じようなメニューを出すようにしました。
「再生」とかは表示させないようにしました。

AppendMenuA をフックしちゃいました。
pagetop
タイトル
記事No
投稿日
投稿者

Re^3: KbMedia Player Version 3.15beta2.2024.0627
358
2024/06/29(Sat) 15:49:32
You
> 以前は正常に再生できていた 3.11c 等でも発生したので、WindowsUpdate等が原因かも?
今確認すると 3.11c では発生しなかったので、何か勘違いしていたのでしょう。

更新が無いプログラムをAPIフックで改造するのは常套手段ですが、
グローバルフックで全プロセスにやるのではなく1プロセスだけ、
それも自プロセスに対して行うのは誤検出された経験は有りませんね。

DirectDrawをフックするのはかなりの手間でしょうし、
このオプションも無効化されるのでしょうね。
描画内容はGDIでも大した負荷ではないでしょう。

DPWWRD.DPX のウィンドウをサブクラス化して
コンテキストメニューに手を入れたりもできるかも?
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: KbMedia Player Version 3.15beta2.2024.0627
357
2024/06/29(Sat) 14:45:02
Kobarin

> 3.15beta2 で演奏プラグインを使用してMIDIファイルを再生した場合、正しく再生終了しないようです。
> kbGuru2SMF.kpi と kbdmusic.kpi で現象を確認しました。

ありがとうございます。現象確認出来ました。

> 「曲長より WRD の方が長いと~」の対応の影響のような気がしますが、

まさにこれが原因です。

> 以前は正常に再生できていた 3.11c 等でも発生したので、WindowsUpdate等が原因かも?

これは何かの勘違いではないでしょうか。
3.14beta あたりのクロスフェード関係の修正から発生するなら別の要因であるかもしれないです。

3.11c で起こるなら kbdmusic.kpi のバグもあるのかな。
よく考えたら kbdmusic.kpi では連続再生のテストはあまりしてなかったです。


MWRD はウィンドウサイズの変更にも対応出来そうです。
もう DPWWRD.DPX の色んな API をフックしまくりです。(笑)
ウイルス対策ソフトに怒られる確率が上がる?
pagetop
タイトル
記事No
投稿日
投稿者

Re: KbMedia Player Version 3.15beta2.2024.0627
356
2024/06/28(Fri) 22:15:04
You
※2024/06/28 22:27編集
下記内容は取り下げます。
以前は正常に再生できていた 3.11c 等でも発生したので、WindowsUpdate等が原因かも?

--------------------------------------------------------------------------------
3.15beta2 で演奏プラグインを使用してMIDIファイルを再生した場合、正しく再生終了しないようです。
kbGuru2SMF.kpi と kbdmusic.kpi で現象を確認しました。
midiOut やデコーダプラグインでの再生時は発生しません。
3.15beta でも同様のようです?

MIDIファイルを再生して曲の末尾に達すると再生位置が 0:00 に戻りますが、
停止したと判定されていないのか?[一時停止][再開]ボタンが有効のままになっています。
演奏リストから再生している場合は、そのままの状態で止まり次の曲に進みません。

「曲長より WRD の方が長いと~」の対応の影響のような気がしますが、
「表示 → WRD」のチェックを外した状態でも発生します。
再生しているMIDIファイルにはWRDは有りません。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.15beta2.2024.0627
355
2024/06/26(Wed) 21:45:45
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed315_beta2.exe
https://kobarin.sakura.ne.jp/test/kbmed315_beta2.7z

.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。

.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。

起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-family
x64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exe
x86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe
(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)

VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。

β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。


v3.15beta2 での変更点

・MWRD の再生に関する以下の修正
 ・DPWWRD.DPX のパスが未指定(空白)のときは DECOP のインストールフォルダを検索
  するようにした
  ・v3.15beta の更新履歴にその旨記載していたが実際は検索していなかった
 ・拍子が変化するデータの表示がずれるのを修正
 ・テンポが変化するデータでシークすると表示がずれる(or 止まる)のを修正
  ・シークが高速なプラグインを使用していた場合
 ・再生開始直後にちらつくのを修正(冒頭の1小節分が2回再生されていた)
 ・MWRD を含む曲の切り替え時に DPWWRD.DPX をロードし直さないようにした
  ・切り替えが高速化
 ・MWRD の再生中に本体が異常終了すると kbrunkpi.exe がフリーズするのを修正
 ・MIDI 以外(MP3/WAV 等)でも、同一フォルダ内に同名の .mid/.rcp があれば再生出
  来るようになった
  ・kbwavefile.kpi で .mid/.rcp を .wav に変換した曲データで動作確認
  ・.mid/.rcp はテンポと拍子の情報の為に必要
  ・.mid/.rcp がないと MWRD を再生することは出来ない
  ・両方ある場合は .rcp を優先(rcpcv.dll がない場合は .mid を参照)
  ・MWRD だけでなく、SWRD/NWRD でも対応(以前から)
 ・DPWWRD.DPX の以下の設定を設定画面で行っても反映されないようにした
  ・「640x400画面を使う」「GiveIO を使う」「DPEV_STEP16 を使う」
  ・レジストリを書き換えても無視、設定画面上で変更しても反映されない
 ・バージョン情報ダイアログで DPXWRD.DPX を表示するようにした
・WRD(MWRD/SWRD/NWRD) に関する以下の修正「
 ・曲長より WRD の方が長いと WRD の最後が再生されないのを修正
  ・対象 MIDI データの末尾の無音除去前の曲長(+1000ms)までは再生するようにした
  ・演奏プラグイン(kbGuru2SMF.kpi 等)を使用時は、プラグインが演奏終了を返した
   後の時間の進み方が不自然になる場合がある
  ・MIDI 以外を再生時は同名の *.mid/.rcp の曲長(+1000ms)まで再生
  ・WRD を非表示(「表示」->「WRD」が無効)のときは曲長までしか再生しない
・バージョン情報ダイアログに関する以下の修正
 ・DPWWRD.DPX の情報を追加
 ・インストールされているプログラム(情報取得時に参照する DLL/EXE 等)のパスを表
  示するようにした
 ・動作中の本体と反対のプラットフォームの DLL の情報(タイムスタンプ等)を正しく
  取得出来ていなかったのを修正
  ・VS2022 ランタイム、RCPCV.DLL がシステムフォルダに置いてある場合等


MWRD 対応は冒頭のちらつきが解消されて結構良い感じになって来ました。
あとは DPWWRD.DPX の BitBlt あたりをフックして StretchBlt してウィンドウサイズ
変更に対応、とかやってみたいですが、タイトルバーの部分も自前で描画してるみたい
なのでうまく行くかどうか…。

WRD の方が曲より長い場合に最後まで再生出来ない問題は良い対処法を思いついたので
何とかなりました。演奏プラグイン(kbGuru2SMF.kpi 等) を使用時の対応が難しくて
少し問題はあるのですが、支障はあまりないと思います。

テンポが変化するデータで表示がずれるのはもう大丈夫だと思いますが、拍子の方は
あまり自信がありません。拍子の変化に対応することでタイミングがばっちり合うよ
うなデータが手元にないからです。あくまで DECOP+DPWWRD.DPX で再生した結果と明
らかに違ってたのが同じに見えるようになっただけです。

拍子(メタイベント0x58)を変えながらドレミファソラシドを繰り返す(DECOP+DPWWRD.DPX
でタイミングもバッチリ合ってる) MID/WRD データがあれば確認出来るのですが、私は
そういうのを作る方はサッパリで…。

MIDI 以外の形式(.mp3 等)での .wrd 再生は .mid や .rcp を kbwavefile.kpi で
.wav に変換したもので動作確認しました。
正しく再生するには、元になった .mid や .rcp を残しておく必要があります。ないと
タイミングが取れないので再生出来ません。そこまでやる人は少ないとは思いますけど。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^10: MWRD 対応協力者(開発者)募集
354
2024/06/21(Fri) 22:39:31
Kobarin

v3.15beta を公開後、DECOP+DPWWRD.DPX や TMIDI、WFP と比べて明らかに表示
がずれるデータがあることに気づきました。

MIDI データを調べると途中で拍子情報が何度か変わるもので、DPWWRD.DPX は
hpDataTop32 の拍子情報も参照してることが分かりました。

このデータは動作確認中何度も再生していたのですが、むしろ hpDataTop32 に拍子情報を
含めない方がタイミングがばっちり合ってしまう(だから気づかなかった)のですよね。
なので修正すると前よりむしろタイミングがずれてしまうのですが、他のソフトと比べて
ずれるのは良くないので。

本家の MIMPI で再生するとどうなるのかは分かりません。

WFP の MIMPI WRD 設定の「拍子変更を無視する」とか「拍子変更時の動作を真似る」を
変えたら v3.15beta と同じタイミングになることを期待しましたが、そうはならない
ようでした。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: KbMedia Player Version 3.15beta.2024.0621
353
2024/06/21(Fri) 00:43:54
Kobarin

>   ・既定では DPWWRD.DPX は DECOPLAY のインストールフォルダから検索
>   ・HKEY_LOCAL_MACHINE\SOFTWARE\Deco\Decoplay for Windows\ExeDir
>    から DPW.EXE のパスを取得、同じフォルダ内の DPWWRD.DPX

公開直前にこの仕様はやめましたが更新履歴に反映させるのを忘れていました。
実際は DECOP のインストールフォルダは検索しません。

演出くんメカを使用するデータを再生するにはフォントの設定が必要です。
設定していないと漢字以外の文字が・になります。

「演出くんメカコマンドを有効に」のチェックを外せば漢字以外の文字も
表示されますが、コマンド文字列みたいなのが表示されるようになる
データがあります。

再配布可能な演出くんメカのフォントがあるなら本体に同梱してしまいたい
ところですが…。

私が持っているのは、ある WRD データに含まれていた

BU_MARU1.FON

というファイルのみです。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.15beta.2024.0621
352
2024/06/21(Fri) 00:26:50
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed315_beta.exe
https://kobarin.sakura.ne.jp/test/kbmed315_beta.7z

.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。

.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。

起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-family
x64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exe
x86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe
(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)

VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。

β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。


v3.15beta での変更点

・各種プラグイン/DLL の開発環境を VS2022 17.10.3 に更新
・MIMPI WRD(*.wrd) に対応
 ・DECO さん制作「DECOPLAY」の MIMPI WRD 再生プラグイン「DPWWRD.DPX」(戸上山さ
  ん制作)を使用
  ・http://cgi.members.interq.or.jp/ox/izu/
 ・「ツール」->「環境設定」->「MWRD」で DPWWRD.DPX のパスを設定
  ・既定では DPWWRD.DPX は DECOPLAY のインストールフォルダから検索
  ・HKEY_LOCAL_MACHINE\SOFTWARE\Deco\Decoplay for Windows\ExeDir
   から DPW.EXE のパスを取得、同じフォルダ内の DPWWRD.DPX
 ・DPWWRD.DPX のパス以外の設定も本体の環境設定画面で行えるようにする予定だが未
  実装
  ・現状はウィンドウを右クリック->「設定」で表示されるダイアログで設定
 ・DPWWRD.DPX の設定は以下のレジストリに保存(DECOPLAY とは異なる場所)
  ・HKEY_CURRENT_USER\Software\Kobarin's Soft\KbMidi Player\Dpx\DpwWRD\
 ・「最大化」「最小化」「閉じる」ボタンは無視される
  ・「最大化」と「最小化」はレジストリを直接編集しても無視
 ・以下の設定は無視される(常に無効、レジストリを直接編集しても無視)
  ・640x400画面を使う
  ・GiveIO を使う
  ・DPEV_STEP16を使う(時間の進み方がおかしくなる、有効化しても次回再生時に無
   効に戻す)
 ・拡張子.dv/.dvs を MWRD として扱うようにした(DPWWRD.DPX が対応している為)
・WRD(MWRD/SWRD/NWRD) に関する以下の修正
 ・「表示」->「WRD」のチェックが有効時は WRD を再生/無効時は WRD を再生しない
  ように仕様変更
  ・今まではウィンドウが閉じられて非表示になったときに表示させるだけで、内部
   では常に再生していた
 ・本体がフォーカスを持っていなくても WRD を表示&再生するようにした
  ・「表示」->「WRD」が無効時は再生しない
  ・今まではフォーカスがないときは表示しなかった(内部では再生していた)
・kbmod.kpi に関する以下の修正
 ・libopenmpt を 0.7.8(2024/06/09) に更新
・kbGuru2SMF.kpi に関する以下の修正
 ・GuruGuruSMF4.dll に関する以下の修正
  ・64bit 版の本体から使うと再生中 DDE がまともに機能しなくなるのを修正
   ・関連付け起動時にファイルを開くまで異常に時間がかかる等
 ・設定画面のヘルプを修正


You さんの協力のおかげで MIMPI WRD に対応することが出来ました。
まだやるべきことが残っていますが、それなりに完成度が上がって来たので一先ず
公開することにします。

DECOP + DPWWRD.DPX の組み合わせと再生結果が異なるものがあったら教えて下さい。
試した限りでは大丈夫そうです。

DV2WRD32.DLL が必要なデータは手元に1つしかありませんが、再生が出来ることは
確認しました。同一フォルダに .wrd がなくても .dv か .dvs があれば再生出来ます。


「表示」メニューの「WRD」の仕様変更により、「WRD」のチェックが入っていないと
WRD は表示されませんので注意して下さい。

今までは表示/非表示を切り替えるというより、非表示状態だったのを表示させるものでした。

本バージョンからは「WRD」のチェックマークを外すと WRD データを再生しません。
WRD を含む曲データを BGM として連続再生したい場合などはチェックを外して下さい。


あと SWRD/NWRD でもそうでしたが、WRD データの長さが MIDI の曲長より長いと最後が
再生されません。

midiOut で再生したときのみ、MIDI の方の演奏が終わっても 5 秒程度時間が進むように
してありますので MIDI より 5 秒長い程度までなら最後まで再生されます。

最後のノートオン/オフより後の MIDI イベントを捨てる仕様になっている為、このような
動作になってしまいます。

いずれ対応したいと考えていますが意外と難しいです。


今回の MWRD 対応のせいで、もしかしたら 32bit 版の kbrunkpi.exe がウイルス対策ソフト
に誤検知されやすくなったかもしれません。

再生に必要な WRD 関連ファイルの取得の為、 DPXWRD.DPX の CreateFileA という API
の呼び出しをフックする為です。

他にも LoadLibraryA とレジストリアクセス関係の API もフックします。

CreateFileA のフックはアーカイブ内の MWRD を再生する場合に WRD の内容を本体側では
調べず、再生に必要なものだけを展開して対応するようにする為に必要です。

データによっては .COM や .EXE を開きに来るようですが PC98 用に作られたこれらの
実行ファイルを DPWWRD.DPX がエミュレートするんでしょうか。
(そのデータのアーカイブには .COM も .EXE も含まれてはいませんでした)
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^9: MWRD 対応協力者(開発者)募集
351
2024/06/19(Wed) 23:16:24
Kobarin

hpDataTop32 の詳細は分かりませんが、DPWWRD.DPX が見てるのは各 MIDI イベントの
Tick 値のようです。エンドオブトラックの値だけでも良いことが分かりました。

要するに曲の長さですね。

見てるとしてもセットテンポ(0x51)と拍子(0x58)のメタイベントとデルタタイムだけ
だろうと思ってましたが、デルタタイムだけのようです。そもそもセットテンポは
入ってないっぽい。

hpDataTop32 に入ってるデルタタイムは累積値のようです。

hpDataTop32 は曲データに対して16の倍数でそれなりに大きなサイズになりますが、
DPWWRD.DPX に見せる分には 16 バイトあれば十分なのが分かりました。

hpDataTop32 は関係ない曲データのものでもほとんど問題なく再生出来てしまうの
ですが、途中で再生が止まってしまうデータがあったんですよね。

4分くらいの曲データの hpDataTop32 を使っても 20分の曲が最後まで再生出来てたり
するのは TimeBase が違うからだったんですね。

そういう訳で hpDataTop32 の件は無事に解決出来たっぽいです。

曲の長さを見るなら m_pSongProp->dwTime の方にしてくれてたらこんなに苦労しな
かったのに…。
pagetop

- Web Forum v8.0 -
++ Edited by Hamel ++