現在、ゲームプログラミングをしているのですが、問題点が発生しました。
サウンドを鳴らすなら、Delphi標準の、MediaPlayerを使えばいいのですが、ゲームなため何度も同じサウンドを鳴らすのが多いため、Mediaplayerでは、再生するたびに、ハードディスクにアクセスするので、ハードディスクに負担がかかるのではと思いました。
それで、サウンドデータを、メモリに書き込んで、APIでサウンドを再生しようと思ったのですが、APIでは、MIDIファイルを再生できませんし、サウンドデータをメモリに書き込むにはどうすればいいのかがわかりません。
つまり、
1.MediaPlayerを使わずにMIDIファイルを再生・停止するにはどうすればいいか。
2.サウンドデータをメモリに書き込むにはどうすればいいか
3.MIDIを再生するのは、DirectXの、DirectSoundを使用したほうがいいのか。
(もし、DirectSoundを使用するのなら)4.DelphiXのコンポーネントを使わずに、DirectXのDirectSoundを使用するにはどうすればいいか。
を教えてください。
よろしくお願いします。
Delphi Version:Delphi 6 Personal
Direct X じゃないの普通
マルチメディア関連は疎いので適切な回答はできませんが...
とりあえず1点
1の回答
APIでもMIDIファイルを再生できます。
mciSendStringやらmidiStream系のAPIを利用します。
■midiStream(C++です。項番2の回答にもなるのかな…?)
http://www13.plala.or.jp/kymats/study/multimedia.html
mciSendStringについては過去ログを漁ると出てきます。
答えじゃないですが・・・
MIDIファイルをリソースに入れて使うとメモリ利用になるのかなぁ
それともファイル読み込みになるのかなぁ
LAITさん、実験してみては?
>mciSendStringやらmidiStream系のAPIを利用します。
わかりました。やってみます。成功したときのみ解決をクリックします。(苦笑)
>MIDIファイルをリソースに入れて使うとメモリ利用になるのかなぁ
そうですね。WAVEファイルなら、もしくも、MIDIファイルをメモリに読み込んだら逆にメモリに負担がかかってしまいますね・・。この際、ハードディスクに一々サクセスして再生しようかな・・・。
よく考えてみたら、このサイト内にサウンドを再生するページがありましたね・・・。
無事成功しました。
ありがとうございます。
ツイート | ![]() |