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

解決


LAIT  2005-10-23 18:39:11  No: 18217  IP: 192.*.*.*

現在、ゲームプログラミングをしているのですが、問題点が発生しました。
サウンドを鳴らすなら、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-23 20:53:06  No: 18218  IP: 192.*.*.*

Direct X じゃないの普通

編集 削除
cscs  2005-10-24 01:23:26  No: 18219  IP: 192.*.*.*

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

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

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

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

編集 削除
deldel  2005-10-24 09:46:23  No: 18220  IP: 192.*.*.*

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

編集 削除
LAIT  2005-10-24 20:10:56  No: 18221  IP: 192.*.*.*

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

編集 削除
LAIT  2005-10-26 19:09:29  No: 18222  IP: 192.*.*.*

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

編集 削除