ページ 1 / 1
効果音の再生について
Posted: 2012年5月03日(木) 21:21
by dig
[ 環境:Windows7, VisualStudio2008 pro, C++, DirectX9 ]
こんばんは。よろしくお願いします。
今、私はDirectXで効果音を鳴らそうとしています。簡単なDirectMusicを使おうと思っていたのですが、どうやら廃止のようで、使用できません。
DirectMusicとは別にDirectSound, XACT,XAudio2というのがあるようなのですが、これを使用するという認識でよろしいのでしょうか?それとも他のスタンダードな
やり方があるのでしょうか?
回答の程よろしくお願いします。
Re: 効果音の再生について
Posted: 2012年5月04日(金) 10:54
by softya(ソフト屋)
DirectX9だとDirectSoundが定番でしたがXaudio2への移行をマイクロソフトは推奨しています。
なのでいっその事Xaudio2で作ってしまって良いかもしれません。
Re: 効果音の再生について
Posted: 2012年5月04日(金) 16:12
by dig
softya(ソフト屋) さんが書きました:DirectX9だとDirectSoundが定番でしたがXaudio2への移行をマイクロソフトは推奨しています。
なのでいっその事Xaudio2で作ってしまって良いかもしれません。
XAudio2はチュートリアル見る限りWAVEファイルなどをMMIOなどで自分で解析してやるのですよね。
非同期複数再生の場合はSouceVoice,波データ、XAUDIO2_BUFFERを2次元配列ポインタで管理ですか...うーんちょっと面倒でバグの温床になりそうですね...。
DirectXでプログラミングされている方はいつもこんな面倒な方法をとっているのでしょうか?
何か他のやり方を実践されている方がもしいましたら、参考程度にでも構いませんので教えていただけないでしょうか?
宜しくお願いします。
(本トピックは本日の10時頃まで解決を保留しようと思っております。)
Re: 効果音の再生について
Posted: 2012年5月04日(金) 17:17
by ISLe
dig さんが書きました:DirectXでプログラミングされている方はいつもこんな面倒な方法をとっているのでしょうか?
ソースボイスの管理モジュール(あるいはクラス)を作って使い回せば良いのでは?
むしろ使い回される部分なので温床になりにくいと思いますけど。
Re: 効果音の再生について
Posted: 2012年5月04日(金) 22:10
by dig
どうやら他に方法はないようですね。
XAudio2を使用してやってみようと思います。
ISLe さんが書きました:dig さんが書きました:DirectXでプログラミングされている方はいつもこんな面倒な方法をとっているのでしょうか?
ソースボイスの管理モジュール(あるいはクラス)を作って使い回せば良いのでは?
むしろ使い回される部分なので温床になりにくいと思いますけど。
そうですね。チュートリアルみてクラス化しないと面倒で複雑化してやってられないなぁと思いました。(特にファイル解析)
このクラス関連だけで結構なコード量になりそうですが、ただまぁ作ってみればなんてことないのかも
しれません。とりあえずXAudio2で構築していこうと思います。
回答していただいた皆様に御礼申し上げます。
ありがとうございました。
Re: 効果音の再生について
Posted: 2012年5月04日(金) 23:25
by ISLe
dig さんが書きました:そうですね。チュートリアルみてクラス化しないと面倒で複雑化してやってられないなぁと思いました。(特にファイル解析)
このクラス関連だけで結構なコード量になりそうですが、ただまぁ作ってみればなんてことないのかも
しれません。とりあえずXAudio2で構築していこうと思います。
「結構なコード量」とおっしゃるのがどの程度か分かりませんが
DirectX SDKのXAudio2BasicSoundサンプルあたりを参考にすれば楽できるのでは。
Re: 効果音の再生について
Posted: 2012年5月05日(土) 00:26
by dig
ISLe さんが書きました:「結構なコード量」とおっしゃるのがどの程度か分かりませんが
DirectX SDKのXAudio2BasicSoundサンプルあたりを参考にすれば楽できるのでは。
ええ。それを見ての発言です。チュートリアルといったのが誤解を招いたようですね。すみません。
サンプルをみる限りWaveファイルを扱うCWaveFileの行数が500以上いってます。私は効果音は100~200行以内ぐらいで実現できる
のだろうと考えていたので、いざサンプル見て結構あるなと思った次第です。
Re: 効果音の再生について
Posted: 2012年5月05日(土) 03:44
by ISLe
dig さんが書きました:サンプルをみる限りWaveファイルを扱うCWaveFileの行数が500以上いってます。私は効果音は100~200行以内ぐらいで実現できる
のだろうと考えていたので、いざサンプル見て結構あるなと思った次第です。
CWaveFileはXAudio2BasicSoundサンプル専用ではないので、再生に必要な部分以外を削ぎ落とせば200行以内に収まりそうな気がしますけど。
PCMデータを直に扱えることにメリットを感じられないなら汎用のライブラリやAPIを使ったほうが良いのではないでしょうか。
効果音には向かない気もしますが、DirectMusicの代わりと言うのであればDirectShowを選択肢に入れて良いかもしれません。
Re: 効果音の再生について
Posted: 2012年5月05日(土) 21:31
by dig
ISLe さんが書きました:
CWaveFileはXAudio2BasicSoundサンプル専用ではないので、再生に必要な部分以外を削ぎ落とせば200行以内に収まりそうな気がしますけど。
CWaveFileはそぎ落とせば200行ぐらいに収まるのですか。であればWaveの再生は比較的簡単にできそうですね。まだCWaveFileに手を付けていませんが、
Writeメソッドとかは確かに再生には必要ない感じですね。とりあえず今日当たり手を付けることになると思います。
ISLe さんが書きました:
PCMデータを直に扱えることにメリットを感じられないなら汎用のライブラリやAPIを使ったほうが良いのではないでしょうか。
効果音には向かない気もしますが、DirectMusicの代わりと言うのであればDirectShowを選択肢に入れて良いかもしれません。
汎用のライブラリやAPIですか...あまり音声関連は詳しくないのでどれがいいのかまだいまいちわかりませんが、そちらも調べてみます。
DirectShowっていうのは知りませんでした。後で調べてみます。ゲームにパフォーマンス的に問題なく組み込めるのならば
次回に作成するプログラムで使用してみようと思います。今回は昨日の段階ですでにXAudio2関連のクラス作成を開始してしまったので、XAudio2でいこうと思います。
アドバイスありがとうございました。