メモリに読み込んでからサウンドを再生するには?

解決


LAIT  2005-10-24 03:39:11  No: 18217

現在、ゲームプログラミングをしているのですが、問題点が発生しました。
サウンドを鳴らすなら、Delphi標準の、MediaPlayerを使えばいいのですが、ゲームなため何度も同じサウンドを鳴らすのが多いため、Mediaplayerでは、再生するたびに、ハードディスクにアクセスするので、ハードディスクに負担がかかるのではと思いました。
それで、サウンドデータを、メモリに書き込んで、APIでサウンドを再生しようと思ったのですが、APIでは、MIDIファイルを再生できませんし、サウンドデータをメモリに書き込むにはどうすればいいのかがわかりません。
つまり、

1.MediaPlayerを使わずにMIDIファイルを再生・停止するにはどうすればいいか。
2.サウンドデータをメモリに書き込むにはどうすればいいか
3.MIDIを再生するのは、DirectXの、DirectSoundを使用したほうがいいのか。
(もし、DirectSoundを使用するのなら)4.DelphiXのコンポーネントを使わずに、DirectXのDirectSoundを使用するにはどうすればいいか。
を教えてください。
よろしくお願いします。
Delphi Version:Delphi 6 Personal


誰でもない  2005-10-24 05:53:06  No: 18218

Direct X じゃないの普通


cscs  2005-10-24 10:23:26  No: 18219

マルチメディア関連は疎いので適切な回答はできませんが...
とりあえず1点

1の回答
APIでもMIDIファイルを再生できます。
mciSendStringやらmidiStream系のAPIを利用します。

■midiStream(C++です。項番2の回答にもなるのかな…?)
http://www13.plala.or.jp/kymats/study/multimedia.html

mciSendStringについては過去ログを漁ると出てきます。


deldel  2005-10-24 18:46:23  No: 18220

答えじゃないですが・・・
MIDIファイルをリソースに入れて使うとメモリ利用になるのかなぁ
それともファイル読み込みになるのかなぁ
LAITさん、実験してみては?


LAIT  2005-10-25 05:10:56  No: 18221

>mciSendStringやらmidiStream系のAPIを利用します。
わかりました。やってみます。成功したときのみ解決をクリックします。(苦笑)
>MIDIファイルをリソースに入れて使うとメモリ利用になるのかなぁ
そうですね。WAVEファイルなら、もしくも、MIDIファイルをメモリに読み込んだら逆にメモリに負担がかかってしまいますね・・。この際、ハードディスクに一々サクセスして再生しようかな・・・。


LAIT  2005-10-27 04:09:29  No: 18222

よく考えてみたら、このサイト内にサウンドを再生するページがありましたね・・・。
無事成功しました。
ありがとうございます。


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

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






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