一括表示
タイトル
記事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: 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
投稿日
投稿者
参照先
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^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^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

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