問題タブ [xaudio2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
filter - XAudio2フィルターのラジアン周波数
XAudio2フィルターパラメーターのドキュメントには、
(2 * sin(pi *(必要なフィルターカットオフ周波数)/ sampleRate))として計算されるフィルターラジアン周波数
誰かがその式がどこから来ているのか私に説明できますか?私にとって意味のある周波数変換の唯一のソースは、sin(f * t)とcosine(f * t)対sin(2 * pi * f * t)とcosine(2 * pi * f *t)から来るからです。 )ここで、fは「周波数」、tは時間です。
directx - DirectX SDK サンプル (XAudio2Sound3D) を実装すると、未解決の外部エラーが発生しますか?
2010 年 6 月の SDK から XAudio2Sound3D サンプルを実装すると、すべて自分のフレームワークにほぼコピーされ、この 1 つの変数 ( sound3DInstance )が未解決の外部変数として表示されます。およびX3DAudioInitialize(details.OutputFormat.dwChannelMask, SPEEDOFSOUND, sound3DInstance ); 変数の型は次のとおりです。
現在、エラーを示す両方の関数の唯一の共通変数はsound3DInstanceであるため、これが問題である必要があります。SDK サンプルでは、すべての変数が *AUDIO_STATE* という構造体に配置され、プログラムの初期化で次のように呼び出されます。 *ZeroMemory( &g_audioState, sizeof( AUDIO_STATE ) );* 私のコードでは、変数は Sound クラスのメンバーであり、それらを 1 つずつ ZeroMemory するだけなので、効果は同じではないでしょうか?
windows-8 - Visual Studio 2012 は、私が Windows 8 を使用していると認識し、私が持っていないライブラリを要求しますか?
2010 年 6 月から DirectX 11 SDK のサンプルの 1 つからコードを実装しました。2012 年に自分のプロジェクトを開き、2012 年にもサンプルを開きますが、私の実行時には XAudio2_8.dll が必要です。可能ですか?それは Windows 8 の .dll であり、SDK のコードは 2010 年のものです - そのような .dll は当時存在しませんでしたか?最も奇妙なことは、私のプロジェクトが .dll.I を要求している間に、SDK サンプルがビルドおよび実行されることです。すべてのライブラリをリンクし、すべてのインクルードを作成し、プロジェクト設定をチェックし、ハード ドライブ全体でそのような dll を検索しましたが、何もありません...何がそのような問題を引き起こしているのでしょうか?私は他のあらゆる種類の問題を抱えていますVS2012 の SDK では、dx11 ヘッダーの型を認識しないなどです。
c# - XAudio2 を介して副鼻腔を再生します。
XAudio2 を使用してオーディオ プレーヤーを作成しています。サンプル レート 8000Hz、サンプル深度 16 バイトで、データを 640 バイトのパケットでストリーミングしています。SlimDX を使用して XAudio2 にアクセスしています。
しかし、サウンドを再生すると、音質が悪いことに気づきます。たとえば、これは Audacity でキャプチャされた 3KHz の正弦曲線です。
オーディオプレーヤーを最低限の基本に凝縮しましたが、音質はまだ悪いです。これは XAudio2、SlimDX、または私のコードのバグですか、それとも単に 8KHz から 44.1KHz に移行したときに発生するアーティファクトですか? Windows Media Player で完全に再生される PCM wav ファイルも生成するため、最後のものは不合理に思えます。
以下は、壊れたサインを生成する基本的な実装です。
追加の詳細:
これは、ALAW、μLAW、TrueSpeech などのさまざまな圧縮で録音された音声を再生するために使用されます。データは小さなパケットで送信され、デコードされてこのプレーヤーに送信されます。これが、サンプリング レートが非常に低く、バッファが非常に小さい理由です。ただし、データを使用して WAV ファイルを生成すると、WMP または VLC によって完全に再生されるため、データに問題はありません。
編集: NAudio でプレーヤーを書き直すことで、これを「解決」しました。ここで何が起こっているのかについての情報にはまだ興味があります。PlayBuffers での私たちのアプローチですか、それとも DirectX またはラッパーの単なるバグ/制限ですか? SlimDX の代わりに SharpDX を使用してみましたが、結果は何も変わりませんでした。
c# - サウンドカードが3のチャンネルマスクのみを報告する場合、SlimDXXAudio2を介してモノラルエンコードされたオーディオをリアチャンネルで再生する
私は古いシステム(XP)を使用しており、DirectSoundBufferとWAVEFORMATEXTENSIBLEオブジェクトをバックスピーカー用のChannelMaskセットで使用して、DirectXを介してリアチャンネル(右後ろおよび/または左後ろ)からモノラルエンコードされたPCMオーディオを再生できました。
古いシステムと.NetおよびSlimDxXAudio2を使用した新しいシステムでも同じ機能をやり直そうとしていますが、古いシステムでSetOutputMatrixを呼び出すと、フロントの左右のチャンネル以外に設定したすべてのものが無視されます。サウンドカードは5.1サラウンドサウンド用に設定されています。新しいシステムでは、正常に動作します。古いシステムでGetDeviceDetailsを呼び出すと、チャネルマスクが3(フロント2スピーカーのみ)であると報告されます。古いC++DirectSoundが機能していても、フロントを再生することしかできないのはそのためだと思います。サウンドドライバにエラーがあると思いますが、これに対する更新が見つかりません。
これに対する回避策はありますか?
これは、同じ動作をするXAudio2C++ベーシックサウンドデモのサンプルです。
ここで、デバイスの詳細を取得すると、SoundCard構成が5.1に設定されていても、ChannelMaskは3(フロントスピーカー)です。サウンドカードは古いSoundMaxAC'97カードです。後で私が次のことをするとき:
最初のGetOutputMatrixの後、fMatrixには[0]および[1]インデックスが1.0に設定されています。SetOutputMatrixを呼び出すと、他のチャネルを1.0に設定しようとしていますが、GetOutputMatrixの後、fMatrixでは[1]のみが1.0に設定されています。それ以外はすべて0です。
注:SetOutputMatrixを呼び出しても、失敗しないすべての値が設定されていない場合は、OKが返されます。
c# - WinRT で SharpDX を使用して同時に複数のサウンドを再生するにはどうすればよいですか?
楽器タイプのアプリを作ろうとしています。私が抱えている問題は、古いサウンドが終了した場合にのみ新しいサウンドが再生されることです。それらを同時に再生できるようにしたいと思います。
これは私のコードがどのように見えるかです:
まず、オーディオ バッファとその他の情報を保持するだけの MyWave クラスです。
SoundPlayer クラス:
Google はあまり役に立ちませんでした。役に立つものは何も見つかりませんでした。では、どうすれば複数のサウンドを同時に再生できますか?
windows-phone-8 - 別のオーディオがバックグラウンドで再生されているかどうかを検出する方法は? (Windows Phone 8)
最近、私のアプリの 1 つが認証に失敗しました。理由は次のとおりです。
問題は、バックグラウンドで音楽が流れているかどうかをどのように検出できるかということです。
PS: XNA または XAML の回答はありません。Xaudio 2 を使用して、Windows Phone Direct 3D アプリ (ネイティブのみ) を対象とするゲームです。
windows-8 - XAudio2 および *.wav の読み込み、HRESULT 0x88960001
Microsoft wav/8bit pcm ファイルである *.wav ファイルを読み込もうとしています。次のコードを使用してデータをロードしています。
wav ファイルを適切に解析し、WAVEFORMATEX データは次のようになります。
{ wFormatTag=1, nChannels=2, nSamplesPerSec=22050, nAvgBytesPerSec=44100, nBlockAlign=2, wBitsPerSample=8, cbSize=24932 }
を呼び出すとinstance->CreateSourceVoice( &voice, wave->GetWaveFormat(), 0, XAUDIO2_DEFAULT_FREQ_RATIO, reinterpret_cast<IXAudio2VoiceCallback*>( &voiceIn[id]->callbacks ) )
、HRESULT=0x88960001 が取得されます。ここinstance
で、タイプは ですIXAudio2*
。これは、クラスで静的に共有され、クラス コンストラクター/デストラクタで初期化/破棄されるクラスに含まれます。
この HRESULT は Windows 8 のバグであり、1 年以上修正されていないことを複数の場所で読みました。これが進行中のバグであり、これが私のコードの問題であると考える傾向があることを受け入れることはできません。この gist で XAudio2 の完全な実装を確認できます。
audio - XAudio2 オクルージョン処理
私は自家製のゲームエンジンに取り組んでおり、現在オーディオエンジンの実装に取り組んでいます。これは主に独学上の理由によるものです。必要に応じて、または必要に応じて OpenAL、XAudio2、またはその他のプラットフォームを切り替えることができるように、一般的なオーディオ処理用のインターフェイス ラッパーを作成したいと考えています。また、このコードを再利用できるようにしたいので、できるだけ完全なものにして、さまざまなシステムにできるだけ多くの機能を実装させようとしています。当面は XAudio2 の実装に集中しており、後日 OpenAL の実装に移行する可能性があります。
過去数か月間、3D 処理 (リスナー/エミッター)、環境効果 (残響)、排除、閉塞、妨害、および直接音に関する多くの記事を読みました。これらのエフェクトをオーディオ再生で使用できるようにしたいと考えています。できる限りトピックを調査しましたが、オクルージョン (直接および反射信号の消音)、妨害 (直接信号の消音)、または除外 (反射信号の消音) が実際にどのように実装されているかについての例は見つかりません。MSDN のドキュメントを読むと、オクルージョンへの受動的な参照のように見えますが、実装については直接的なことは何もありません。私が見つけた最高のものは、一般的な「ローパスフィルターを使用する」ことですが、あまり役に立ちません
私の質問は次のとおりです。XAudio2 を使用して、オーディオ反射信号の消音 (除外) とオーディオ直接信号の消音 (障害) または両方 (閉塞) をどのように実装しますか? オーディオ グラフはどのように表示され、残響環境効果とどのように関連するのでしょうか?
編集 2013-03-26 :
グラフについてさらに考えてみると、正しい視点からグラフを見ていない可能性があることに気付きました。
グラフは次のように表示されます: ソース → エフェクト (サブミックス) → マスタリング
-または-
グラフは一般的に次のように表示されます。
2 番目のグラフは、除外と障害を別々に計算できるようにグラフを分割します。私の混乱の一部は、それらが独立して処理される方法でした.
その場合、3D オーディオ DSP 構造のリバーブ設定が反射パスに適用されると思います。ドップラーは、直接パスのみ、または直接パスと反射パスの両方に適用されます。また、リバーブの環境効果は反射パスのみに影響します。これは正しいオーディオ グラフ モデルに近づいていますか?