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