新着表示
タイトル
記事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
タイトル
記事No
投稿日
投稿者
参照先
kbGuru2SMF.kpi v0.04
266
2024/03/09(Sat) 00:43:39
Kobarin

kbGuru2SMF.kpi v0.04 のソース(バイナリは v3.12beta4 に同梱しています)

https://kobarin.sakura.ne.jp/kpi/kbGuru2SMF_004s.7z

GuruGuruSMF4.dll のソースコード改変箇所については

kbGuru2SMF_memo.txt

を参照して下さい。

バージョンアップの度にプラグインのソースを公開するのはこれで最後にします。
GuruGuruSMF の作者様への不具合報告の意味も込めて公開していましたが、v4.0.8
で対応されたようですので。v4.0.8 の不具合は確認出来ていません。


非ループ曲のループがおかしくなるのは作者様によると仕様だそうです。
演奏がおかしくなるデータは1つしか見つけることが出来ませんでしたが、GGS4Play() の
option に対応するついでにプラグイン設定で非ループ曲のループに GuruGuruSMF の機能を
使うか設定出来るようにしました。


 ・DirectMusic 関連のオブジェクトの全ての操作をそれを作成したスレッド内のみで
  行うようにした(Port.cpp を大幅修正)

これは実際は必要ない気もしますがちょっと頑張ってみました。
もし v0.04 がまともに動作しなくなったならこれに関する修正が原因になると思います。
ベースとした公式版 v4.0.8 には何の罪もありません。

まともに動作しないようなら公式版 v4.0.8 をダウンロードし、プラグイン設定の
GuruGuruSMF4.dll のパスで公式版のv4.0.8 のパスを指定して下さい。

http://gurugurusmf.migmig.net/
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.12beta4.2024.0309
265
2024/03/08(Fri) 23:40:08
Kobarin

https://kobarin.sakura.ne.jp/test/kbmed312_beta4.exe
https://kobarin.sakura.ne.jp/test/kbmed312_beta4.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.12beta4 での変更点

・kbGuru2SMF.kpi に関する以下の修正
 ・GuruGuruSMF4.dll に関する以下の修正
  ・ベースを v4.0.8 に更新
  ・DirectMusic 関連のオブジェクトの全ての操作をそれを作成したスレッド内のみ
   で行うようにした(Port.cpp を大幅修正)
  ・GGS4CloseDevice を呼んでから FreeLibrary すればフリーズしなくなった為、
   フリーズ対策として新設した後始末用API(GGS4Uninialize_k)を廃止
 ・GuruGuruSMF が演奏停止を返してもすぐに本体には停止を返さず、1秒経過してか
  ら返すようにした
  ・連続再生時に曲によっては最後の音が切れた感じになるため
 ・GGS4Play() の option に渡す設定に対応
  ・ループ再生
  ・冒頭の空白をスキップ
  ・末尾の空白をスキップ
  ・マスターピッチ
  ・ノーマライズ
  ・エクスクルーシブ
・本体の更新はバージョン情報のみ


kbGuru2SMF.kpi 以外の更新はありませんので、kbGuru2SMF.kpi を使う予定がない人は更新
しなくても良いと思います。

GuruGuruSMF の作者様に不具合報告をしたら早速 v4.0.8 で対応されました。
プラグイン同梱の GuruGuruSMF4.dll も早速 v4.0.8 をベースにしましたが、それに対して
内部的に大きな修正(Port.cpp)をしているので、もし動作がおかしかったら知らせて下さい。

Port.cpp の修正は v4.0.8 に何か問題があったとかではなく、複数インスタンス対応と同じか
それ以上に趣味に近い修正です。

もし同梱の GuruGuruSMF4.dll の動作に問題があるようなら公式版 v4.0.8 を使用してみて下さい。
v4.0.7 の不具合が修正されていますのでフリーズすることはないと思います。

http://gurugurusmf.migmig.net/


kbGuru2SMF.kpi は致命的なバグがない限り今度こそほぼ完成かな。
DLS 対応だけ気になってますが対応するデータ(DLS を使うことで制作者が意図した再生を
することが出来るような MIDI と DLS のセット)が手元にないのでやる気がしません。
pagetop
タイトル
記事No
投稿日
投稿者

Re: kbGuru2SMF.kpi v0.03
264
2024/03/05(Tue) 23:17:36
You
更新ありがとうございます。
気になるけれど私は踏み込まなかったDLLの改造までお疲れ様です。
あまり動作確認のパターンは取れませんが、正常動作しているように思います。

kbGuru2SMF.kpi についても、気になる点はすべて解消しました。
あえて言うなら kbGuru2SMF.txt の「【 公 開 日 】 2024/03/??」と「Version 0.03(2024/03/??)」ぐらいですね。
単曲リピートは「送る」に外部ツール「GGSLight」を設定して対応していましたが、本体のみで完結できるようになりました。

おかげさまでだいぶストレスフリーな再生環境になりました。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
kbGuru2SMF.kpi v0.03
263
2024/03/04(Mon) 00:21:33
Kobarin

kbGuru2SMF.kpi v0.03 のソース(バイナリは v3.12beta3 に同梱しています)

https://kobarin.sakura.ne.jp/kpi/kbGuru2SMF_003s.7z


GuruGuruSMF4.dll のソースコード改変箇所については

kbGuru2SMF_memo.txt

を参照して下さい。

ほぼ完成と言えるくらいにはなったと思います。
ただ、非ループ曲の単曲リピートがおかしくなるデータを1つだけ見つけました。
ループを GuruGuruSMF に任せず、再生が終わったら本体に Play を呼んででもらって
再生し直すと問題ありません。

取り敢えず全データで GuruGuruSMF に任せるようにしています。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
KbMedia Player Version 3.12beta3.2024.0304
262
2024/03/04(Mon) 00:06:38
Kobarin

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

Windows XP で使いたい方は

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

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

v3.12beta3 での変更点

・各種プラグイン/DLL の開発環境を VS2022 17.9.2 に更新
・kbGuru2SMF.kpi に関する以下の修正
 ・タイミングによってデバイスを開けずに再生開始出来ないことがあるのを修正
 ・複数のインスタンスを同時に作成出来るようになった
  (プラグイン情報の Reentrant が Yes(MultipleInstance=∞) になった)
  ・GuruGuruSMF4.dll の API を新設
  ・公式版 GuruGuruSMF4.dll も使用可能(Reentrant が No になる)
  ・大変だった割にはメリットがほとんどない
  ・互換性は残してあるので、公式版の GuruGuruSMF4.dll を使用する他のアプリケ
   ーションからも使用可能(公式版同様アンロード時にフリーズする可能性はある)
 ・CC111 を使用したループ曲を開いたときは KPI_MEDIAINFO::qwLoop に -1 を設定す
  るようにした
  ・v3.12beta3 の仕様変更によるもの
  ・qwLoop を設定しないと本体はループ非対応のプラグインと見なして単曲リピート
   時でも本体の設定に応じた回数とフェード時間の SMF を生成して渡す
  ・その場合、プラグインがループ再生しようとしてもフェードアウトが終わってか
   らループポイントに戻ることになって無音になってしまう
・kbasio.kpi に関する以下の修正
 ・本体の COM の初期化(STA/MTA)に影響せずに動作するようにした
  ・v3.12beta2 で動作しなくなった為
  ・プラグイン自身で作成したスレッド内で STA として COM を初期化
   (MTA だと動作せず)
 ・IASIO::setSampleRate の戻り値をチェックするようにした
  ・サポート掲示板で指摘された件
・MIDI 対応演奏プラグインに関する以下の修正(本体の修正)
 ・プラグインに SetRepeat を呼ばないのを修正
 ・プラグインが CC111(ループ)に対応していてもループ再生が機能しないのを修正
  ・本体が渡す SMF データ自体がループとフェード処理を施したものである為、フ
   ェードアウトしてからループポイントに戻ることになり、戻っても無音が再生さ
   れてしまっていた
 ・単曲リピート時、プラグインがループ対応のときはフェード処理を施さないデータ
  を渡すようにした
 ・↑の必要有無を判断するため、ループ曲のときは KPI_MEDIAINFO::qwLoop の値を
  0 以外の値(具体的なループ時間または-1)に設定する必要がある
 ・単曲リピートの設定変更時に曲データを開き直すようにした
  ・プラグインがループ非対応の場合は常にフェードアウトするデータを渡す
  ・プラグインがループ対応の場合は
   ・単曲リピートが有効のときはフェードアウトしないデータを渡す
   ・単曲リピートが無効のときはフェードアウトするデータを渡す
  ・ループ対応の判定の為、ループ対応の MIDI 演奏プラグインは単曲リピート時に
   同じデータ(プラグインに渡すデータとしては違うデータ)を2度開くことになる


ループもほぼ問題なく動作するようになったし、kbGuru2SMF.kpi はほぼ完成といって良いかな。
ただ、非ループ曲の単曲リピートがおかしくなるデータを1つだけ見つけました。
非ループ曲についてはループを GuruGuruSMF に任せないようにする(再生が終わったら本体に Play
を呼んでもらって再生し直す)ことも考えましたが取り敢えず全データで有効にしています。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
ASIO が使えない
261
2024/03/03(Sun) 14:29:50
Kobarin

ASIO が使えなくなっていますね。

原因は本体が 3.12beta2 から COM の初期化を STA から MTA に変更したこと
のようです。STA に戻したら普通に動作しました。

kbviv.kpi の動作よりもっと重要な何かがあった気がしたのですが、敢えて
STA にしていたのはこの為だったのでしょう。

kbasio.kpi 側で対応するには少し大掛かりな修正が必要ですね。

どうしようかな…。
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^4: kbGuru2SMF.kpi v0.02
260
2024/03/03(Sun) 14:26:18
Kobarin

> ※13:48追記
> 再生開始までの時間は、v4.0.7のソース GuruGuruSMF\Core\Ggs4Controller.cpp の
> GgsController::Play() で1秒のウェイトが入っていたので気にしないでください。

デバイスを開き損なう件の回避の為なのかも、と思って手元の最新版ではウェイトを
入れないようにしていますが特に問題は確認出来ていません。

あとループ(無限ループ)が正しく機能していませんがこれは本体側の問題です。

本体が SetRepeat を呼んでくれないのもありますが、無視して無限ループしようとしても
うまくいきません。これはプラグイン側ではどう頑張っても対処出来ない問題でした。

本体の設定に応じたループ回数、フェード時間の SMF を本体が生成して、それが渡されてるので。
ループMIDI に非対応である筈のプラグインが、単曲リピートが無効なときには本体のループ回数と
フェード時間に対応してるかのように見えた動作をするのはその為です。

MIDI 対応演奏プラグインが今の本体の動作のままループに対応しようとしても、フェードアウトして
からループポイントに戻ってしまうので2ループ目は音が鳴らなくなります。そもそもフェードアウト
したら無限ループの意味がありません。

結構厄介でしたが手元の最新版では解決しています。少し強引で無駄がある方法で、きちんとやるには
少しだけプラグイン仕様の変更が必要となります。
pagetop
タイトル
記事No
投稿日
投稿者

Re^3: kbGuru2SMF.kpi v0.02
259
2024/03/03(Sun) 11:43:36
You
プラグインの設定で GuruGuruSMF4.dll のパスを指定できるのは、確かに安全とは言い切れませんね。
v4.0.7改とv4.0.6の両方のDLLを同梱して設定で選択できるようにする、ぐらいが良いかも知れません。
同梱しているDLLを上書きして公式版v4.0.7が呼ばれてしまう可能性は有りますが、それはさすがに自己責任でしょう。

GuruGuruSMF4.dll のシングルトンは意図が掴みかねますが、デバイスをオープンし直すのを嫌ったのは有り得そうです。
DLL内部にプレイリストを持つような仕様なども含め、イマイチ使い勝手が良くないところは有りますね。
ただ、演奏プラグインとしての機能は現状でも十分だと思いますし、
色々な改造をしてみるのは研究にとどめておくぐらいが良いかもしれません。

v4.0.6よりv4.0.7の方が再生開始まで微妙に時間がかかるのは、
v4.0.7がワーカースレッドで初期化処理するようになった影響でしょうか?(未調査です)
微妙に気になりますが、安定性とのトレードオフなら許容できる時間ではありますね。

※13:48追記
再生開始までの時間は、v4.0.7のソース GuruGuruSMF\Core\Ggs4Controller.cpp の
GgsController::Play() で1秒のウェイトが入っていたので気にしないでください。
pagetop

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