WAV鳴動でカウントがずれないようにするには


ジョン  2008-01-29 22:51:49  No: 29563

ちょっとしたタイマーを作っています。

例えば10秒ごとにwavファイルを演奏して、カウント続行という処理をする場合、サイズの大きなwavファイルだと、鳴っている間、カウントが遅くなってしまうような状態になります(ちょっと表現しにくいですが)。

これを、wavの鳴動にかかわらずカウントは同じように進むようにするには、wav鳴動処理を別スレッドにしなければならいのでしょうか?

ちなみに、鳴動処理はVCLではなくAPIで直接実行してします。


KHE00221  2008-01-30 00:31:10  No: 29564

カウントが遅くなるというのはWAVを再生中に TTimer の割り込みが Interval に設定している時間より遅く割り込みが掛かるという事かな?

MediaPlayer だけど以下のように10秒毎に再生させても遅くはならないけど?

再生させているのは Windows XP Startup.wav 415K

procedure TForm3.Timer1Timer(Sender: TObject);
var
    Hour,Min,Sec,MSec : Word;
    T : TDateTime;
    S : String;
begin
    T := Now;
    S := '';
    DeCodeTime (T,Hour,Min,Sec,MSec);
    if Sec mod 10 = 0 then
    begin
      MediaPlayer1.Close;
      MediaPlayer1.Open;
      MediaPlayer1.Play;
      S := ' SOUND';
    end;
    Memo1.Lines.Add (FormatDateTime('hh:nn:ss:zzz',T) + S);
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加