新着表示
タイトル
記事No
投稿日
投稿者
参照先
Re^7: KbMedia Player Version 3.12beta5.2024.0316
277
2024/03/17(Sun) 23:00:27
Kobarin

検証ありがとうございます。

> Kbmplay.exe がプロセスとして起動はするようになったので、OSバージョン5.0への変更は必要だったとして、
> GetFinalPathNameByHandleW は何でしょうね?x86版の本体ではインポートしてないようですし。

そんな API 初めて見たので VCL が内部で使ってるのでしょう。
64bit版は XP に対応出来ませんね。32bit版が動けば十分とは思いますが。

本体が動かない以上、プラグインが XP に対応してもほぼ意味がないので、64bit版はプラットフォーム
ツールセットを XP 対応にしなくても良いかもしれないですね。
pagetop
タイトル
記事No
投稿日
投稿者

Re^6: KbMedia Player Version 3.12beta5.2024.0316
276
2024/03/17(Sun) 22:36:35
You
XP対応の解決の一助になったようで何よりです。

Kbmplay20240317.7z をWinXP(x64)で動作確認してみたところ、起動時に下記エラーがでました。

---------------------------
Kbmplay.exe - エントリ ポイントが見つかりません
---------------------------
プロシージャ エントリ ポイント GetFinalPathNameByHandleW がダイナミック リンク ライブラリ KERNEL32 から見つかりませんでした。
---------------------------

Kbmplay.exe がプロセスとして起動はするようになったので、OSバージョン5.0への変更は必要だったとして、
GetFinalPathNameByHandleW は何でしょうね?x86版の本体ではインポートしてないようですし。


kvwma.kpi(x64)はロードに失敗しますが、kvwma.kpi(x86)での再生は出来るのでそれで良い気もしています。
そもそもWinXP(x64)への対応が必要だとも思えませんし…
# インストールが必要だったのは wmaudioredist.exe か wmtools.exe 辺りでしょうか?さすがに覚えてません。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^5: KbMedia Player Version 3.12beta5.2024.0316
275
2024/03/17(Sun) 21:15:56
Kobarin

検証ありがとうございます。

> ・kbunarc.kpi, kbvsti_x86.kpi, kbvsti_x64.kpi
> VS2022(17.9.3)で kpi_sources_20221023.7z からビルドしたkpiでもXPで動作しました。(kbvstiはロード出来る事だけ確認)
> WinXP(x64)でもx86,x64の両方が動作しました。

私の環境ではどうしても AcquireSRWLockExclusive に依存するバイナリが出来てましたが、
一度 VS2022 をアンインストールしてからやり直したらうまく行きました。
が、その後も色々いじってたらまた再発してしまいました。

どうやら個別のコンポーネントに

MSVC v141 - VS2017 C++ x64/86ビルドツール(v14.16)

というのも追加しておくと大丈夫になるみたいで、これを外すとダメみたいです。

あと MFC と ATL も v141 のも入れておかないと kbviv.kpi のビルドが出来ないようですね。

> ・Windows XP Professional x64 SP2 での動作確認
> 64bit版の本体は起動不可
> →「...\x64\Kbmplay.exe は有効な Win32 アプリケーションではありません。」

あら、やっぱり動きませんでしたか。もしかして

https://kobarin.sakura.ne.jp/test/Kbmplay20240317.7z

これだったらどうでしょうか。リンカオプションの OS バージョンが 6.0 になってたのを
5.0 に変更してみました。(32bit版は 5.0 でした)

> →x64プラグインを表示し、同名のx86プラグインを無効化すればx64プラグインも動作する
> →→kbunarc.kpi(x64), kbvsti_x64.kpi は「ReleaseSRWLockExclusive ~」でロード失敗
> →→kbunarc.kpi(x86), kbvsti_x86.kpi はエラーメッセージは出ないがロード失敗
> →→kvwma.kpi(x64)は 「WMVCore.DLL が見つからなかったため、このアプリケーションを開始できませんでした。」でロード失敗
> →→→wmp11-windowsxp-x64-JA-JP.exe をインストールしてみても駄目だったので諦め

WMA は出たばかりの頃は何かを別途インストールしないと動作しませんでしたよね。
それが XP の時代だったかそれより前だったかもう覚えていませんが。

もう諦めかけてましたが、検証してくれたおかげで少なくとも 32bit 版は問題解決しそうなので
まだしばらく XP 対応続けても良いかな。
pagetop
タイトル
記事No
投稿日
投稿者

Re^4: KbMedia Player Version 3.12beta5.2024.0316
274
2024/03/17(Sun) 14:51:48
You
解決方法はわかりませんが、情報提供を。

・kbunarc.kpi, kbvsti_x86.kpi, kbvsti_x64.kpi
VS2022(17.9.3)で kpi_sources_20221023.7z からビルドしたkpiでもXPで動作しました。(kbvstiはロード出来る事だけ確認)
WinXP(x64)でもx86,x64の両方が動作しました。

kpi_sources_20221023.7z は3.11c時点のソースのようですが、
kbunarc.kpi は 3.11c → 3.12beta2 で変更が無いようなので参考にはなるかな?と。

VS2022は今回新規インストールし、インストールオプションは「ワークロード」タブの「C++ によるデスクトップ開発」だけ選択し、
「個別のコンポーネント」タブの「VS 2017 (v141) ツールの C++ Windows XPサポート [非推奨]」を追加してあります。


・kbpsf2.kpi
kpi_sources_20221023.7z の viopsf2 を boost 1.84.0 に更新してVS2022(17.9.3)でビルドしました。
ただ、viopsf2.bin のロードはテストデータが無く確認できません。(kbpsf2.kpi は元からロード出来ています)
ビルドした viopsf2.bin のインポートテーブルには AcquireSRWLockExclusive や ReleaseSRWLockExclusive が存在しないので、
多分ロードできるのでは…?と思います。


・Windows XP Professional x64 SP2 での動作確認
64bit版の本体は起動不可
→「...\x64\Kbmplay.exe は有効な Win32 アプリケーションではありません。」

32bit版の本体は起動可能
→x64プラグインを表示し、同名のx86プラグインを無効化すればx64プラグインも動作する
→→kbunarc.kpi(x64), kbvsti_x64.kpi は「ReleaseSRWLockExclusive ~」でロード失敗
→→kbunarc.kpi(x86), kbvsti_x86.kpi はエラーメッセージは出ないがロード失敗
→→kvwma.kpi(x64)は 「WMVCore.DLL が見つからなかったため、このアプリケーションを開始できませんでした。」でロード失敗
→→→wmp11-windowsxp-x64-JA-JP.exe をインストールしてみても駄目だったので諦め

(910KB)

pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^3: KbMedia Player Version 3.12beta5.2024.0316
273
2024/03/16(Sat) 09:38:58
Kobarin

kbpsf2.kpi も viopsf2.bin をロード出来なくなってて動作しませんね。

最新版の VS2019(v16.11.34) でビルドすれば動作するので次の正式版は VS2019 と VS2022 でビルド
した2種類を公開して VS2019 でビルドした方を Windows XP 対応最終版にしようかと思います。

VS2022 でも動作するようにする方法が分かればそれに越したことはありませんが。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: KbMedia Player Version 3.12beta5.2024.0316
272
2024/03/16(Sat) 01:22:40
Kobarin

> v3.12beta2 からVMware 上の XP で kbunarc.kpi がロード出来なくなったようですね。
> v3.12beta までは動作するので VS2022 を新しくしたのが原因と思われます。
> kbvsti_x86.kpi もロード出来なくなっています。

kbunarc.kpi も kbvsti_x86.kpi も AcquireSRWLockExclusive という API を使うように
なっていてこれが怪しい気がします。

プラグインとして明示的には呼ばないので何がこれを呼ぶ原因となるのか分かりません。
何となくグローバル変数とかスタティックな変数の初期化の為に呼ばれてそうな予感が
しますが…。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: KbMedia Player Version 3.12beta5.2024.0316
271
2024/03/16(Sat) 00:41:35
Kobarin

v3.12beta2 からVMware 上の XP で kbunarc.kpi がロード出来なくなったようですね。
v3.12beta までは動作するので VS2022 を新しくしたのが原因と思われます。
kbvsti_x86.kpi もロード出来なくなっています。

マイナーな形式のプラグインが動作しないならともかく、kbunarc.kpi が動作しないのは
致命的です。

一応調査してみますが XP 対応はそろそろ終わりかもしれませんね
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: KbMedia Player Version 3.12beta4.2024.0309
270
2024/03/16(Sat) 00:15:59
Kobarin

kbGuru2SMF.kpi は DLS に対応しました。こんどこそほぼやり切った切った感じですね。
手元に DLS 使うデータがないので対応しても空しかったですけど。

あとはマスターボリューム SysEx 使ってフェードアウトするタイプの曲でフェードアウト
しないのが気になっています。

GGS4Play の option の説明を見る限り意図的に送信しない感じなのですよね。
そもそも受信するのかも未確認で分かりませんが。

> ・連続再生で最後に演奏される曲がwav, mp3, ogg, flac等(midi以外のデコーダプラグイン?)の場合、(曲の長さ - 先読みバッファのサイズ)の所で再生が停止する

不具合報告ありがとうございます。
v3.12beta5 で修正しました。

> ・kbvorbis.kpi でoggファイル再生時、LOOPSTART と LOOPLENGTH が設定されている曲を(2ループ目以降の時間に?)シークするとシーク位置がずれる

こちらは v3.12beta5 の次以降の版で修正します。
多分プラグインではなく本体の不具合のような気がします。

ちなみにデコーダプラグインでループ時に GuruGuruSMF みたいにループポイントの位置に再生位置を
戻すのは難しそうです。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.12beta5.2024.0316
269
2024/03/16(Sat) 00:06:10
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed312_beta5.exe
https://kobarin.sakura.ne.jp/test/kbmed312_beta5.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 環境の人は除きます。

Windows XP で使いたい方は

https://kobarin.sakura.ne.jp/wforum/wforum.cgi?mode=read&no=181&reno=180&oya=180&page=0#181

こちらを参考にして古いランタイムをインストールして下さい。一応まだ
XP でも動作するようです。


v3.12beta5 での変更点

・本体の開発環境を C++Builder 12 v29.0.51511.6924 に更新
・各種プラグイン/DLL の開発環境を VS2022 17.9.3 に更新
・終了時に演奏してなくてもレジューム再生が利いてしまうことがあるのを修正
・起動直後等のプラグイン検索時、見つかったプラグインをロードする直前にそのパス
 を表示するようにした
 ・バージョンアップ直後の初回起動に時間がかかってフリーズしてるように見えるの
  を防ぐ効果
 ・実際にフリーズした場合に原因となるプラグインが分かるようにする効果
 ・2回目以降の起動時は基本的にプラグインをロードしないので表示されない
・デコーダプラグインで連続再生時、最後の曲の終端が再生されないのを修正
・kbflac.kpi に関する以下の修正
 ・libFLAC を 1.4.3(2023/06/23) に更新
・kbGuru2SMF.kpi に関する以下の修正
 ・DLS に対応
  ・プラグイン設定で DLS のパスを設定(| で区切ることで複数ファイル指定可)
  ・曲データと同じフォルダに DLS があればそれも使う
  ・音色が被る場合の優先順位は
   ・曲データと同じフォルダ(見つかった順) => プラグイン設定(記述順)
  ・動作確認出来るデータがない
・kbm4a.kpi に関する以下の修正
 ・FAAD2 を v2.11.1(2023/11/14) に更新
・kbmac.kpi に関する以下の修正
 ・Monkey's Audio SDK 10.55(2024/03/12) に更新
・kbmod.kpi に関する以下の修正
 ・libopenmpt を 0.7.4(2024/03/03) に更新
・kbmpg123.kpi に関する以下の修正
 ・libmpg123 を 1.32.5(2024/02/17) に更新
 ・プラグイン設定で選択可能なデコーダの数を増やした
・kbsnesapu.kpi に関する以下の修正
 ・SNESAPU.DLL を 2.20.1.8272(2023/12/03) に更新
 ・SNESAPU.DLL 2.20.0 以降の新サンプリングレートコンバータのノイズ対策
  ・実機エコー/FIR 処理 が true で再生周波数が 32001Hz 以上のとき
  ・KPI_MEDIAINFO::dwUnitSample に 10ms 相当の値(44100Hz なら441)を渡すことで
   必ず EmuAPU を 10ms 単位で指定する
・kbunarc.kpi に関する以下の修正
 ・unrarsrc を 7.0.7(2024/02/26) に更新
 ・LZMA SDK を 23.01(2023/06/20) に更新
・kbwv.kpi に関する以下の修正
 ・libwavpack を 5.7.0(2024/02/27) に更新
・kblibpng.dll に関する以下の修正
 ・libpng を 1.6.43(2024/02/23) に更新
・kbzlib.dll に関する以下の修正
 ・zlib を 1.3.1(2024/01/22 に更新


ライブラリの更新はエミュ系がまだ残っています。

BCB を最新版にしたら本体の実行ファイルサイズが大きくなってしまいました。
CodeGuard を有効にして実行すると終了時に fflush に不正なパラメータを渡したみたいな報告が
出るようになりました。本体は fflush や fopen 系を使ってる箇所がないので BCB のライブラリ
の問題としか思えません。

BCB は VS2022 に比べると IDE の使い勝手が悪くて本体の開発はとてもストレスが溜まります。
CodeGuard のメモリリーク検出はとてつもなく便利ですが。

毎年5万円以上のお布施をしないとバージョンアップが出来ず、そのお布施の額は毎年少しずつ
高くなっていきます。ユーザーを馬鹿にしています。でも本体を VS2022 に移行させることは
出来ないのでしぶしぶ使っています。


kbGuru2SMF.kpi は一応 DLS に対応しましたが DLS を使う MIDI データがないです。
どこかにあるなら教えて下さい。

GuruGuruSMF には DLS を追加する API はありますが削除や破棄する API がありません。
現状はデバイスを閉じると DLS が破棄される仕様となっていますのでそれを前提とした
作りにしています。
pagetop
タイトル
記事No
投稿日
投稿者

Re: KbMedia Player Version 3.12beta4.2024.0309
267
2024/03/12(Tue) 21:25:58
You
更新ありがとうございます。

プラグインにループ&フェードアウトのSMFデータが渡されているので、
kbGuru2SMF.kpi のオプションで冒頭と末尾の空白をスキップさせると良い感じですね。

GuruGuruSMF の方も更新されたのは驚きでした。
kbGuru2SMF.kpi v0.01 と公式版 GuruGuruSMF v4.0.8 を組み合わせてもフリーズが発生しなくなっていますね。


本体とプラグインに不具合と思われる現象を確認したので報告します。

・連続再生で最後に演奏される曲がwav, mp3, ogg, flac等(midi以外のデコーダプラグイン?)の場合、(曲の長さ - 先読みバッファのサイズ)の所で再生が停止する
3.12beta.2022.1108 以降で発生

→[単曲リピート][全曲リピート]オフ, [連続再生]オン
→→[未再生の曲だけ再生]がオンで、[演奏リスト]が全曲チェックされている状態で[演奏リスト]の任意のmp3等を再生
→→[未再生の曲だけ再生]がオフで、[演奏リスト]の一番下にあるmp3等を再生


・kbvorbis.kpi でoggファイル再生時、LOOPSTART と LOOPLENGTH が設定されている曲を(2ループ目以降の時間に?)シークするとシーク位置がずれる
3.09b.2021.503 以降で発生 ※これ以前のverは未確認

様々なデータで発生しますが、一例を挙げると「新約・帽子世界」https://rpgex.sakura.ne.jp/littleworld/ のBGMが有ります。
Audio\BGM\024.ogg を再生し 1:34~1:46 辺りにシークすると、どこにシークしても同じ音から再生されるように思えます。
また、1:45 辺りにシークして最後まで再生すると再生終了時の時間が[2:02/1:51]になります。
pagetop

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