> GuruGuruSMF は何だか良いオモチャになっているようですね。
DirectMusic でここまで MIDI をきちんと再生出来ると思ってなかったので
とても面白かったです。
そろそろやることがなくなって来ていますがここへ来て行き詰っています。
> Win10 2004 以降では timeBeginPeriod がプロセス内に限定されるのは知りませんでした。
フェードアウト時間を長めにしたとき、64bit版の本体で実行するとフェードアウトが
終わるまで設定時間より長くかかることに気づいて調べてたら timeBeginPeriod が
関係してることが分かりました。
フェードにかかる時間はタイマーの精度が低くても問題なく動作するように出来ました
がフェード中のモタりは精度が低いと発生する可能性があります。
> ウィンドウ最小化時にタイマー精度が15ms程度に戻るようです。
> ウィンドウを持たないプロセスだと設定した精度が維持されていたので、
> kbrunkpi.exe 経由で実行されるプラグインは問題が起きないと思いますが、
kbrunkpi.exe 自体はウィンドウを作成しませんが、GuruGuruSMF4.dll は内部で
隠しウィンドウを作成します。
改造版 GuruGuruSMF はフェードアウト時のモタリ以外はタイマーの精度の影響は
少ないです。公式版だとモタり以外にフェードにかかる時間にも影響します。
本体の midiOut での MIDI 再生時は Sleep(1) を多用しているので、
最小化時にタイマーの精度が下がったら影響が大きいです。
> 一応この現象のテストAPPのソースを添付しておきます。
わざわざありがとうございます。
私の環境だと最小化しても 1ms の精度で動作しているみたいです。v3.13beta を
公開前、timeBeginPeriod の実験の為に色々試していたら、何かの拍子に OS を
再起動するまで 1ms の精度のままになってしまうことがあるようでした。
なので一度再起動してみましたが結果は変わりませんでした。
記事編集