https://kobarin.sakura.ne.jp/test/kbmed312_beta3.exehttps://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-familyx64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exex86 版ランタイムファイル直リンク
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
を呼んでもらって再生し直す)ことも考えましたが取り敢えず全データで有効にしています。