問題タブ [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.
windows-runtime - Windows ランタイム コンポーネントの XAudio2 でソース ボイス コールバックを使用する場合、WaitForSingleObjectEx はどのように実装されるはずですか?
WaitForSingleObjectEx 関数を使用して、Xaudio2 ソース ボイスがバッファ内のすべてのデータの処理を終了したことを通知しようとすると、システム エラー コード x05 error_access_denied が表示されます。
これをイベント ハンドラーとして使用して、オーディオ データの別のバッファーをいつソース ボイスに送信するかを知りたいので、stop() 関数/メソッドが呼び出されるまで再生を続けることができます。
error_access_denied システム エラー コードを受信しないようにするには、WaitForSingleObjectEx 関数を適切に実装する方法を教えてください。
これは、Windows Phone 8 C++/CX Windows ランタイム コンポーネント用です...
TestTone.h ファイル:
TestTone.cpp ファイル:
XAudio2VoiceBufferCallback.h ファイル:
XAudio2VoiceBufferCallback.cpp ファイル:
c++ - C++ ポインターを変更する出力パラメーターにスマート ポインターを渡す方法
すべての生ポインタは、プログラム内の Smartpointers で処理する必要があります。
しかし、この Xaudio2 呼び出しに問題があります
私の質問は、ポインターへのポインターとして渡すときにスマートポインターをどのように使用するのですか?これは可能ですか? そうでない場合、どうすればこれをスマートに行うことができますか? つまり、パラメーターのスマートポインターを渡すにはどうすればよいですか_Out_ IXAudio2 **ppXAudio2
どんな助けでも大歓迎です。
c# - float 配列ポインタを Volumemeter に渡すにはどうすればよいですか
Xaudio2 で SharpDX VolumeMeter を使用しようとしています。SetEffectParameters を使用して VolumeMeterLevels オブジェクトを渡したいのですが、オブジェクトには public int ChannelCount しかなく、MSDN セクションに記載されている 2 つのポインターはありません。API はそれらを内部としてリストします。
pPeakLevels と pRMSLevels の 2 つのポインターを渡す必要があります。これどうやってするの?
コードで更新。以下では、新しい VolumeMeter、MasteringVoice、および VolumeMeterDescriptor を作成します。MasteringVoiceのエフェクトチェーンにVolumeMeterをセットしました。
問題は、VolumeMeter に API ( http://sharpdx.org/documentation/api/t-sharpdx-xaudio2-fx-volumemeterlevels ) に従って、アプリケーションによって割り当てられる必要がある 2 つの非公開プロパティ PeakLevelPointer と RmsLevelsPointer があることです。次に、VolumeMeter は、メーターを機能させるためにポインタが指す float 配列を埋めます。問題は、2 つの非パブリック ポインターを渡すにはどうすればよいかということです。
c# - 2 つの Xaudio2 ストリーミング SourceVoice を同期するにはどうすればよいですか
SharpDX サンプル ( https://github.com/sharpdx/SharpDX-Samples/blob/master/WindowsDesktop/XAudio2/AudioPlayerApp/AudioPlayer.cs ) のストリーミングの原則を使用して、同時に複数のサウンドを再生しています。
同じ曲の複数のバージョンを含むリストがあります。私はそれらをまったく同時に開始したい。曲ごとに新しいタスクを開始し、CountDownEvent と ManualResetEvent の組み合わせを使用して、それらが同時に開始されるようにします。
このタスクでは、バッファーを準備し、曲を再生する準備ができたことを CountDownEvent に通知します。その後、曲は ManualResetEvent からの信号を待ちます。CountDownEvent が各曲の準備が整ったという信号を受信すると、ManualResetEvent が通知され、SubmitSourceBuffer が呼び出されます。
10 回中 9 回の曲でサンプルの同期が開始されます (曲間のフェージングが検出されず、単純に音量が大きくなります) が、1 つがわずかにずれている場合があります。
詳細を説明するコードを次に示します。
補足: foreach ステートメントを使用して、曲ごとに同じ順序で、各曲のバッファを複数のオーディオ デバイスに送信します。Ready 状態は、メモリ、オーディオデコーダなどをプリセットする load メソッドを使用して事前に設定されます。
操作セットを使用してソースボイスを同時に開始できることは知っていますが、別の方法 (クロックまたはその他の同期方法を使用) で、再生中の曲ごとにサンプルが同時に送信されるようにする方法はありますか?
winapi - Waveform Audio API Windows を使用してスピーカーからサウンドをキャプチャする
を使用してスピーカーからオーディオをキャプチャしたいWaveform Audio API
。
Waveform Audio を使用してマイクからオーディオをキャプチャし、ファイルまたは再生に保存する方法を説明する投稿を検索して見つけました。ただし、スピーカーからオーディオをキャプチャする方法については説明していません。
私の理解では、再生デバイスにハンドルを提供すると、waveInOpen()
スピーカーからサウンドをキャプチャできます。ここで助けが必要です。再生デバイスのハンドルを取得するには? 私が提供するときはWAVE_MAPPER (or 0) for uDeviceID
、常にマイクから録音します。他の値を設定すると、常に範囲外エラーが発生します。
編集:
質問を投稿してから、さらに調査を行いました。オーディオ キャプチャに使用できる他のオプション/API を見つけました。スピーカーからオーディオをキャプチャするために使用する正しい方向に私を向ける助けが必要です. 多くのコードを含む派手なものは必要ありません。私のターゲット OS は XP 以上です。
waveInOpen & ミキサー:
waveInOpen()
これらのリンクに関するコメント/ディスカッションは、スピーカーからオーディオを取得するために使用できることを示唆しています。これらによると、Mixer を開く必要があります。以前はmixerOpen()
ミキサー ハンドルを取得していましたが、このハンドルを で使用する方法がわかりませんwaveInOpen()
。
再生中のオーディオをキャプチャするにはどうすればよいですか?
XAudio2:
XAudio2 を使用してスピーカーからオーディオをキャプチャできますか? はいの場合は、サンプル コードを共有してください。
c# - XAudio2 - クリック音の周波数を変更するときに、生成された正弦波を再生します
耳鳴りの周波数に合わせたアプリを開発したい : 周波数が再生され、ユーザーがプラスまたはマイナスのボタンを押すことで周波数が増減します。(stackoverflow thx からのいくつかのコーディングに基づいて、コードの一部を参照してください:-))
周波数の再生は問題ありませんが、ユーザーがボタンを押すと、周波数が更新されたときにクリック音が聞こえます。何が音を発しているのか、どうすればそれを取り除くことができるのか分かりますか? ありがとう。