効果音の再生について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dig
記事: 59
登録日時: 13年前

効果音の再生について

#1

投稿記事 by dig » 13年前

[ 環境:Windows7, VisualStudio2008 pro, C++, DirectX9 ]

こんばんは。よろしくお願いします。

今、私はDirectXで効果音を鳴らそうとしています。簡単なDirectMusicを使おうと思っていたのですが、どうやら廃止のようで、使用できません。
DirectMusicとは別にDirectSound, XACT,XAudio2というのがあるようなのですが、これを使用するという認識でよろしいのでしょうか?それとも他のスタンダードな
やり方があるのでしょうか?

回答の程よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 効果音の再生について

#2

投稿記事 by softya(ソフト屋) » 13年前

DirectX9だとDirectSoundが定番でしたがXaudio2への移行をマイクロソフトは推奨しています。
なのでいっその事Xaudio2で作ってしまって良いかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

dig
記事: 59
登録日時: 13年前

Re: 効果音の再生について

#3

投稿記事 by dig » 13年前

softya(ソフト屋) さんが書きました:DirectX9だとDirectSoundが定番でしたがXaudio2への移行をマイクロソフトは推奨しています。
なのでいっその事Xaudio2で作ってしまって良いかもしれません。
XAudio2はチュートリアル見る限りWAVEファイルなどをMMIOなどで自分で解析してやるのですよね。
非同期複数再生の場合はSouceVoice,波データ、XAUDIO2_BUFFERを2次元配列ポインタで管理ですか...うーんちょっと面倒でバグの温床になりそうですね...。
DirectXでプログラミングされている方はいつもこんな面倒な方法をとっているのでしょうか?

何か他のやり方を実践されている方がもしいましたら、参考程度にでも構いませんので教えていただけないでしょうか?
宜しくお願いします。
(本トピックは本日の10時頃まで解決を保留しようと思っております。)

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: 効果音の再生について

#4

投稿記事 by ISLe » 13年前

dig さんが書きました:DirectXでプログラミングされている方はいつもこんな面倒な方法をとっているのでしょうか?
ソースボイスの管理モジュール(あるいはクラス)を作って使い回せば良いのでは?
むしろ使い回される部分なので温床になりにくいと思いますけど。

dig
記事: 59
登録日時: 13年前

Re: 効果音の再生について

#5

投稿記事 by dig » 13年前

どうやら他に方法はないようですね。
XAudio2を使用してやってみようと思います。
ISLe さんが書きました:
dig さんが書きました:DirectXでプログラミングされている方はいつもこんな面倒な方法をとっているのでしょうか?
ソースボイスの管理モジュール(あるいはクラス)を作って使い回せば良いのでは?
むしろ使い回される部分なので温床になりにくいと思いますけど。
そうですね。チュートリアルみてクラス化しないと面倒で複雑化してやってられないなぁと思いました。(特にファイル解析)
このクラス関連だけで結構なコード量になりそうですが、ただまぁ作ってみればなんてことないのかも
しれません。とりあえずXAudio2で構築していこうと思います。


回答していただいた皆様に御礼申し上げます。
ありがとうございました。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: 効果音の再生について

#6

投稿記事 by ISLe » 13年前

dig さんが書きました:そうですね。チュートリアルみてクラス化しないと面倒で複雑化してやってられないなぁと思いました。(特にファイル解析)
このクラス関連だけで結構なコード量になりそうですが、ただまぁ作ってみればなんてことないのかも
しれません。とりあえずXAudio2で構築していこうと思います。
「結構なコード量」とおっしゃるのがどの程度か分かりませんが
DirectX SDKのXAudio2BasicSoundサンプルあたりを参考にすれば楽できるのでは。

dig
記事: 59
登録日時: 13年前

Re: 効果音の再生について

#7

投稿記事 by dig » 13年前

ISLe さんが書きました:
「結構なコード量」とおっしゃるのがどの程度か分かりませんが
DirectX SDKのXAudio2BasicSoundサンプルあたりを参考にすれば楽できるのでは。
ええ。それを見ての発言です。チュートリアルといったのが誤解を招いたようですね。すみません。

サンプルをみる限りWaveファイルを扱うCWaveFileの行数が500以上いってます。私は効果音は100~200行以内ぐらいで実現できる
のだろうと考えていたので、いざサンプル見て結構あるなと思った次第です。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: 効果音の再生について

#8

投稿記事 by ISLe » 13年前

dig さんが書きました:サンプルをみる限りWaveファイルを扱うCWaveFileの行数が500以上いってます。私は効果音は100~200行以内ぐらいで実現できる
のだろうと考えていたので、いざサンプル見て結構あるなと思った次第です。
CWaveFileはXAudio2BasicSoundサンプル専用ではないので、再生に必要な部分以外を削ぎ落とせば200行以内に収まりそうな気がしますけど。

PCMデータを直に扱えることにメリットを感じられないなら汎用のライブラリやAPIを使ったほうが良いのではないでしょうか。
効果音には向かない気もしますが、DirectMusicの代わりと言うのであればDirectShowを選択肢に入れて良いかもしれません。

dig
記事: 59
登録日時: 13年前

Re: 効果音の再生について

#9

投稿記事 by dig » 13年前

ISLe さんが書きました: CWaveFileはXAudio2BasicSoundサンプル専用ではないので、再生に必要な部分以外を削ぎ落とせば200行以内に収まりそうな気がしますけど。
CWaveFileはそぎ落とせば200行ぐらいに収まるのですか。であればWaveの再生は比較的簡単にできそうですね。まだCWaveFileに手を付けていませんが、
Writeメソッドとかは確かに再生には必要ない感じですね。とりあえず今日当たり手を付けることになると思います。
ISLe さんが書きました: PCMデータを直に扱えることにメリットを感じられないなら汎用のライブラリやAPIを使ったほうが良いのではないでしょうか。
効果音には向かない気もしますが、DirectMusicの代わりと言うのであればDirectShowを選択肢に入れて良いかもしれません。

汎用のライブラリやAPIですか...あまり音声関連は詳しくないのでどれがいいのかまだいまいちわかりませんが、そちらも調べてみます。

DirectShowっていうのは知りませんでした。後で調べてみます。ゲームにパフォーマンス的に問題なく組み込めるのならば
次回に作成するプログラムで使用してみようと思います。今回は昨日の段階ですでにXAudio2関連のクラス作成を開始してしまったので、XAudio2でいこうと思います。

アドバイスありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る