-------------------------------------------------------------------------------
【  名  称  】 GuruGuruSMF Player
【ファイル名】 kbGuru2SMF.kpi
【対応拡張子】 mid
【 Platform 】 x86(32bit) のみ / x64(64bit) なし
【 公 開 日 】 2024/03/16
-------------------------------------------------------------------------------

【概要】

  GuruGuruSMF4.dll を使用して、DirectMusic で MIDI を再生するプラグインです。
  kbdmusic.kpi よりはるかに高品質な MIDI 再生が出来ます。

  「デバイス設定」で kbGuru2SMF.kpi を選択することで、GuruGuruSMF4.dll で MIDI
  を再生することが出来ます。

  You 様が KbMedia Player のサポート掲示板にて公開された kbGuru2SMF.kpi v0.01
  の開発を Kobarin が引き継ぐ形を取ることにしました。

  GuruGuruSMF については

  http://gurugurusmf.migmig.net/

  を参照して下さい。

【GuruGuruSMF4.dll】

  本プラグインの動作に必要になります。Kobarin による改造版を本プラグインに同梱
  しています。ベースにした DLL のバージョンは v4.0.8 です。

  プラグイン設定で DLL の場所を設定することで、公式版の DLL を使うことも出来ま
  す。公式版を使用する場合は v4.0.8 以降をお勧めします。


以下は GuruGuruSMF の著作権表示、及びライセンス条文です。

------------------------------------------------------------------------------
Copyright (C) 2010-2024 卯如
All rights reserved.
------------------------------------------------------------------------------

ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。

  * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
  * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
  * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、作者の名前またはコントリビューターの名前を使用してはならない。

本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか（過失その他の）不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した（代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない）直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。

-------------------------------------------------------------------------------

【更新履歴】

Version 0.05(2024/03/16)

・DLS に対応
　・プラグイン設定で DLS のパスを設定(| で区切ることで複数ファイル指定可)
　・曲データと同じフォルダに DLS があればそれも使う
　・音色が被る場合の優先順位は
　　・曲データと同じフォルダ(見つかった順) => プラグイン設定(記述順)
　・動作確認出来るデータがない

/*---------------------------------------------------------------------------*/

Version 0.04(2024/03/09)

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

/*---------------------------------------------------------------------------*/

Version 0.03(2024/03/04)

・タイミングによってデバイスを開けずに再生開始出来ないことがあるのを修正
・複数のインスタンスを同時に作成出来るようになった
　（プラグイン情報の Reentrant が Yes(MultipleInstance=∞) になった)
　・GuruGuruSMF4.dll の API を新設
　・公式版 GuruGuruSMF4.dll も使用可能(Reentrant が No になる)
　・大変だった割にはメリットがほとんどない
　・互換性は残してあるので、公式版の GuruGuruSMF4.dll を使用する他のアプリケー
　　ションからも使用可能(公式版同様アンロード時にフリーズする可能性はある)
・CC111 を使用したループ曲を開いたときは KPI_MEDIAINFO::qwLoop に -1 を設定する
　ようにした
　・v3.12beta3 の仕様変更によるもの
　・qwLoop を設定しないと本体はループ非対応のプラグインと見なして単曲リピート時
　　でも本体の設定に応じた回数とフェード時間の SMF を生成して渡す
　・その場合、プラグインがループ再生しようとしてもフェードアウトが終わってから
　　ループポイントに戻ることになって無音になってしまう

/*---------------------------------------------------------------------------*/

Version 0.02(2024/03/01)

・You さん製作の kbGuru2SMF.kpi v0.01 の開発を Kobarin が引き継ぐ
・GuruGuruSMF4.dll を v4.0.6 から v4.0.7(を VS2022 でビルドしたもの)に変更
・GuruGuruSMF4.dll を LoadLibrary して使うようにした
・GuruGuruSMF4.dll に対する以下の修正
　・VS2022 でビルド
　・メモリリーク修正
　・スリープ時にデバイスを閉じる処理が原因と思われる不具合(FreeLibrary 時にフ
　　リーズ)の修正
　・↑の為、GuruGuruSMF4.dll に後始末用API(GGS4Uninialize_k) を追加(他に方法が
　　思いつかなかった)
・GuruGuruSMF4.dll のパスを設定出来るようにした
　・オリジナルの v4.0.7 は正常動作しない(v4.0.6 なら動作する)

/*---------------------------------------------------------------------------*/

Version 0.01(2024/01/31)

・初版

-------------------------------------------------------------------------------
Kobarin(hidkob@pb.highway.ne.jp)
https://kobarin.sakura.ne.jp/
