mciSendStringの遅延

[戻る]
ニラレバ 2014/01/30(木) 08:51:50
VisualStudio2013を使ってます。アプリのひな形はMFCです。

アプリ開始後、キー操作によってmciSendStringで音を鳴らしてますが、
この時、遅れて音が発生します。この時、プログラム自体は正常にフリーズ無く
動作しますが、音を鳴らす命令だけが鳴らずに溜め込まれ、キーを押してから数秒後に
溜め込まれた音が一斉になります。

この後、いったんアプリを閉じ、直後に再び開いてキーを押すと、きちんと音が鳴りま
す。

どうすれば常に音が遅延なく流れますでしょうか。

ニラレバ 2014/01/30(木) 09:01:00
補足します。

音を鳴らす仕掛けは、キーを押した後、CreateThread(NULL,0,ThreadProc,send,0,&dwThr
eadId);でスレッドを作り、ThreadProc関数内でmciSendStringのopen,play,closeなどを
行っている、という塩梅です。

ホウジョウウサギ 2014/01/30(木) 10:08:28
一斉にどうのという点がよくわからんけど
MCIは 開く→再生 までにかなり時間がかかる模様.
2回目以降に早くなってるとしたらキャッシュとかの影響かも?

とりあえず
アプリ開始時にスレッドを作ってOpenまでは済ませておき,
キーを押したときには Play という感じにしてみては?

mciSendStringよりもmciSendCommandの方が早い とかいう話も見かけるけど
どの程度違うのかは不明

古いスレッドには追加発言できません。