GuruGuruSMFはスタンダードMIDIファイルをループ再生するdllです。
エンターブレイン社、RPGツクール2000以降のループ仕様(CC#111)をサポートしております。
4.0.7で追加した部分がことごとく不安定でしたので、安定化させました。
OpenDevice~PlayやFreeLibrary時のクラッシュやフリーズは改善されてると思います。
今回はKbMediaPlayerの作者様及びフォーラムの方々のご指摘、ご助言にかなり助けられました。
ありがとうございました。
スリープから復帰後におかしな状態になってましたのでそれに対処。
それから、内部実装を変更してCOM初期化の問題に対処しました。
併せてテストプレイヤーもver.4.1.0になりました。
環境によってはクラッシュの恐れがありますので、4.0.6も引き続きダウンロードできるようにしておきます。
ついでに0.2.9も置いておきます。(0.3.xは不安定なので非公開)
無音SMFを再生させようとするとクラッシュする不具合の対処をしました。
厳密にはdll側でも対処が必要ですが、用途上まずないケースだと思いますので、こちらは次回の更新時に行う予定です。
不完全ながらWindows98での動作環境を入手しましたので
これで動作するように修正しました。
DirectMusicモードにおいてマスターボリュームやフェードインなどでボリュームが不正な値になることがあったのを修正しました。
Windows9x系での動作を考え、UNICODE版関数が存在しない場合にANSI版関数を呼ぶようにしました。動的結合コードにもコメントで補足を書きました。
しかし、作者には9x系の動作環境がないため、これによって本当に動くかどうかは自信ありません。
WinAPIモードでデバイスを開いた後最初の再生で、リセット命令が送られていなかったのを修正。
また、同じくWinAPIモードで、リセット命令の送信時にオールサウンドオフとリセットオールコントローラも送るようにしました。
DirectMusicモードでのOpenDeviceの際にメモリリークしていたのを修正。
現在のヴァージョンではWin32APIのユニコード版関数をいくつかそのまま使用しているため(4.0.4で対策済)、Windows9x系では動作しなくなっています。
作者に動作環境がないので正式対応からは外させていただきますが、なるべく動くように修正しようと考えております。
Bufferedを指定せずにリストに追加したMIDIファイルを置き換えてそのまま再生しようとすると吹っ飛ぶ。
→これは対処しません。MIDIファイルが置き換わるような状況がある時は読み直してください。
GuruGuruSMF ver.4.0.8汎用dll / 2024.03.08
GuruGuruSMF最新版です。
GuruGuruSMF ver.4.0.8HSP拡張プラグイン / 2024.03.08
HSPプラグイン版です。
GuruGuruSMF テストプレイヤー ver.4.1.0 / 2024.03.08
副産物のテストプレイヤーです。.NET Framework2.0が必要です。
MIDIファイルのチェックにでもどうぞ。
GuruGuruSMF ver.3.4.8汎用dll / 2024.03.08
ver.0.3系統が少々バグっぽかったため、置き換えのための互換版です。
GuruGuruSMF ver.4.0.8ソースコード / 2024.03.08
ソースコードです。修正BSDライセンスとなってます。