問題タブ [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.
c++ - Qt Creator の XAudio2
私は現在、XAudio2 でオーディオ プロジェクトに取り組んでおり、MSVC++ Express 2010 を使用しています。いくつかの基本的な機能を記述し、Qt で UI を作成してみようと思ったので、使用できるようにするための手順に従いました。私のバージョンの MSVC の Qt:
- Qt ソースコードをダウンロードする
- cmdプロンプトでMSVCのすべてをコンパイルします
- qmake と nmake を使用する Makefile プロジェクトを作成する
- プロジェクトに libs、includes、dll のディレクトリを追加します
そして、すべてがうまくいきます。
今は逆に、自分のプロジェクトを Qt Creator にインポートして Qt デザイナーを簡単に使用したいと考えています。
そこで、XAudio2 を使用して作成した単純なコンソール アプリケーションをインポートし、.pro ファイルに XAudio インクルード パスを追加しました。
コンパイル時に発生する問題は次のとおりです。
ファイルはすぐそこにありますが、コンパイルによって作成されます。
Creator がそれを見つけられない理由がわかりません... MSVCで作業したときに自動的に含まれるlibrabyを含める必要がありますか?
c# - XAudio2で同じ音を繰り返し再生するには?
XAudio2 を使用して、銃声など、アプリで単一のサウンドを繰り返し再生する必要があります。
これは、その目的のために私が書いたコードの一部です。
上記のコードは実際には SlimDX サンプルに基づいています。
Play() を繰り返し呼び出すと、サウンドは次のように再生されます。
音→音→音
したがって、バッファを埋めて再生するだけです。
ただし、現在のサウンドの再生中に同じサウンドを再生できるようにする必要があるため、効果的には、これら 2 つ以上を同時にミックスして再生する必要があります。
ここで見逃したものはありますか、または現在のソリューションでは不可能です (おそらく SubmixVoices が役立つ可能性があります)。
ドキュメントで関連するものを見つけようとしていますが、成功していません。参照できるオンラインの例はあまりありません。
ありがとう。
windows-8 - Metro XAudio2 および Windows Metro でサウンドを再生すると例外がスローされる
Windows8 で pcm udp オーディオ ストリームを再生しようとしています。xaudio2 を実行するよりも簡単な方法はありますか?
私はxaudio2に非常に慣れていないため、xaudioプレーヤーを作成すると例外がスローされます:
WinRT コンポーネント dll として実行していますが、次の行で例外が発生します。
デバッガーをステップ実行すると、wfx と SourceVoice の構造が正常に開始されたように見えます。誰かが何が問題なのかを理解するのを手伝ってくれますか?
c# - XAudio2 OnVoiceProcessingPassStart コールバックの吃音再生
私はSlimDXでXAudio2を使用しており、ループで短い(〜8秒)wavファイルを再生することができましたが、最初のループの終わりに近づくと、オーディオが途切れ始め、途切れが次のループに続きますループし、時間が経つにつれて悪化します。
デバッグ プロファイルをオンにすると、出力ウィンドウに次のエラーが表示されます。
そして、これらは吃音の発生時と一致します。私はこれらのコールバックで何もしていません (イベントに何も追加していません) が、速度が低下しています。参照用に以下のコードを追加しました。
データ ストリームとバッファを保持する Wave クラス:
XAudio エンジンとボイスを保持し、ボイスの追加/削除をカバーするためのサウンド クラス:
それを実行するには、次を使用します。
c++ - 小さなバッファサイズでの XAudio2 遅延
私はビデオプレーヤーを書いています。オーディオ部分については、XAudio2 を使用しています。このために、BufferEndイベントを待っている別のスレッドがあり、その後、バッファに新しいデータを入力してSubmitSourceBufferを呼び出します。問題は、バッファー サイズが小さい (1024 バイト) 場合、XAudio2 (ドライバーまたはサウンド カード) が次のバッファーを再生する前に大きな遅延が発生することです。測定を行ったところ、XAudio はこのようなチャンクの再生に最大 2 倍の時間を要しました。(48khz の 2 チャンネル pcm の 1024 バイトのチャンクは、ほぼ 5 ミリ秒で再生されるはずですが、私のコンピューターでは最大 10 ミリ秒で再生されます)。また、バッファを4kバイト以上にすると、遅延はほとんどありません。ビデオクロックまたは外部クロックと同期できるようにするには、このような小さなバッファーが必要です (ffplay のように)。バッファを大きくしすぎると、エンドユーザーは、同期による出力で多くのノイズを聞くことになります。
また、オーディオをデコードおよび同期するすべての機能、または遅延をブロックまたは生成する可能性のあるその他の機能について測定を行いました。実行には0または1ミリ秒かかるため、100%問題ではありません。
それが何であり、なぜそれが起こっているのか誰か知っていますか? 小さなバッファで同じ遅延の問題があるかどうかを誰かが確認できますか?
c++ - XAudio2 の再生遅延
xaudio で raw-pcm データを再生しようとしていますが、再生に大きな遅延があります (>=5ms)。私は次のコードでこれをやっています:
Time クラスは GetTickCount の下の単なるラッパーであり、結果の t2-t1 は差をミリ秒単位で返します。Time クラスが追加の遅延を発生させないことを確認しました。
再生時間をミリ秒単位で計算するのはそれほど難しくありません: play_time = size*1000 / (channels*(bits_per_sample/8) * frequency)
したがって、サイズが 4608 バイト、48 khz、2 チャネル、サンプルあたり 16 ビットのデータの場合、そのようなチャンクを再生するには約 24 ミリ秒かかります。代わりに、上記のコードでは、そのようなチャンクを再生するために約 31 ミリ秒以上必要です。何がそのような遅延を生み出しているのでしょうか? ビデオ プレーヤーを作成していて、リアルタイム ストリームからデータを取得している場合 (同期機能は既にありますが、このような小さなサンプルの 5 ミリ秒の遅延は理想的なサウンドではありません)、どのように対処すればよいですか?
また、このコードは、Windows 7 を搭載した 2 台のコンピューターと異なるハードウェアでテストしました。どちらも同じ遅延を生成します。
c# - SlimDX for c# XAudio2 エフェクト (リバーブ)
声にリバーブ効果を追加するにはどうすればよいですか? XAudio2Reverb クラスなどが見つかりません。しかし、私はこのページに出くわしました。
リバーブ効果のコードが書かれているように見えますが、ダウンロードされた SDK と再配布可能なこのクラス (XAudio2.FX 名前空間でさえありません) には存在しないため、このバージョンの SlimDX2 または実行できるリンクまたは何かがあります。ソースをダウンロードしてコンパイルする必要がありますか?
audio - XAudio2でサブミックスボイスの出力を設定するにはどうすればよいですか?(メトロ)
SetOutputVoices関数とコンストラクターパラメーターを使用してみましたが、サブミックスボイスで使用すると、どちらも結果としてXAUDIO2_E_INVALID_CALLになります。
ドキュメントには、オーディオコールバックから呼び出すことでエラーが発生すると書かれていますが、私はそうではありません。オーディオエンジンを始動する前に、それを呼び出してみました。
同じ方法がソースボイスに対しても機能するので、悪いXAUDIO2_VOICE_SENDS構造を渡していないことは間違いありません。
dll - Mingw、XAudio2、および GetProcAddress が失敗する
Mingw で XAudio2 を使用しようとしています。Mingw に XAudio2 をリンクさせるために何をすればよいかわからなかったので、DLL の読み込みだけで XAudio2 を使用しようと考えました。しかし、次のコードは GetProcAddress で XAudio2Create を見つけることができませんでした。
fft - カスタムxaudio2エフェクトのサンプル数を指定する
フーリエ変換を含むカスタムxaudio2エフェクトを作成しようとしています。ただし、各呼び出しのプロセスメソッドに与えられるサンプルの数は2の累乗ではありません(私が持っているフーリエ変換の実装の前提条件)。
2サイズのサンプルの力を強制する方法はありますか?2サイズの非パワーでの作業を可能にするテクニックはありますか?