問題タブ [directsound]

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.

0 投票する
1 に答える
1442 参照

c# - オーディオ プロジェクトに DirectSound または WASAPI を使用する必要がありますか?

最小要件が Windows 7 になるプロジェクトを開始しています。オーディオへのインターフェイスとして NAudio を使用します。DirectSound と WASAPI のどちらを使用すればよいかわかりません。私は次のことをするつもりです:

  1. スピーカーとマイクの両方の複数の USB サウンド カードで音量/ミュートを操作します。
  2. サウンドカード 2 からの入力をサウンドカード 2 の出力に再ルーティングします (可能な場合)。
  3. いくつかの効果でサウンド カードのオーディオ入力を操作します。

とにかく、DirectSound が WASAPI を介してすべてのオーディオを処理する舞台裏であることを理解しています。

ただし、私の質問は機能レベルからのものです。どの API を使用すると、上記で説明したことを実行できるでしょうか。

0 投票する
1 に答える
431 参照

c++ - C++ - DirectSoundBuffer が特定の場所で再生を停止する - 通知なし

DirectSound の DirectSoundBuffer を使用して、ネットワーク経由でストリーミングしている音声データを再生しています。音声/スピーチの性質は、必ずしも常にストリーミングされるとは限らず (開始と停止)、さまざまなパケット サイズになる可能性もあります (これにより、バッファーがどこで停止するかを予測することが難しくなります)。バッファ内のどこまで書き込んだかを追跡するStoppingPoint変数を保持しています (このバッファの循環的な性質も考慮されています)。に達したらStoppingPoint、バッファの再生を停止したいと思います。また、私StoppingPointも書き始めたいポイントを意味します。

また、通知を使用するにはバッファを停止する必要があるため、通知を使用できません。しかし、私の場合、バッファの再生中にさらに多くのデータが入ってくる可能性が非常に高いため、'StoppingPoint' 値が押し戻されます。

私が現在持っているのは、フレームごとに呼び出される関数です。この関数は、とりわけ、再生カーソルがどこにあるかをチェックしています。再生カーソルがそのStoppingPoint場所を通過すると、バッファが停止し、再生カーソルがそのStoppingPoint場所に戻ります。これは今のところ問題なく動作しているように見えますが、ご想像のとおり、再生カーソルがStoppingPoint. これは、ストリーミングされたデータの最後に到達するたびに、少し古い/ガベージ データが再生されることを意味します。

特定のオフセットで DirectSoundBuffer の再生を停止する方法があるかどうかに興味がありますか? 私が望むのは、バッファにデータを書き込んでから再生し、それStoppingPointをオーバーシュートすることなく、変数によって記述された場所で正確に停止させることです。

注: これは必要な高レベルのソリューションであるため、コードは含めていません。私の実装は信じられないほど簡単で、典型的であり、ほとんどの場合、機能します。のオーバーシュートを取り除くために、正しい方向に微調整する必要がありますStoppingPoint。もしかしたら使える機能があるのでは?または、これを達成するために一般的に使用される他のアルゴリズムはありますか?

0 投票する
2 に答える
1440 参照

vb.net - .wav ファイルの波形を描画する方法

非常に具体的な質問があります。.wav ファイルの波形を正確に描画する方法を知りたいです。さらに具体的に言えば、wav ファイルから波形の x 座標と y 座標を取得する際に助けが必要です。これらのポイントを描画するプロセスは、この質問の主題ではありません。これまでの私の試みはすべて他の人の仕事に基づいており、それらを機能させることができないため、投稿する関連コードはありません。

ありがとう。

以下の最初のリンクのコードから作業を開始しました。元のコードは定義されていないため、多くのエラーが発生しますが、これは比較的簡単に修正できます。

基本的に、未定義の変数ごとに「Dim x as y」を追加しました。タイプが明確でない唯一の変数は「SoundFile」です。「Microsoft.DirectX.DirectSound.BufferDescription」タイプである必要があることがわかりました。したがって、上記は次のようになります。

問題は、ここからどこへ行くべきか迷っていることです。これは私の質問です。

0 投票する
1 に答える
4191 参照

vb.net - .wav ファイル vb.net からバイトを読み取る方法

私は .wav ファイルを使っていくつかの作業をしようとしていますが、バイトの配列を作成することで、ファイルを再生してサウンドをランダムに再生することができました (以下の両方のコードを参照)。 .wav ファイルからバイトを取得するために使用できます。.wav ファイルからバイトを取得できれば、ランダム ノイズで行っているようにサウンドを再生できるはずです。これにより、サウンドを変更する方法を理解できるはずです。

.wav ファイルの再生:

直接音を使ってランダム ノイズを再生する:

私がやろうとしているのは、.wav ファイルからバイト配列を取得して、ランダム ノイズと同じように再生できるようにすることです。

前もって感謝します!

アップデート:

.wav ファイルから読み取ったバイトを使用するために、次のコードを作成しました。

エラーは次の行に表示されます。

エラーは次のとおりです。「値が期待される範囲内にありません。」

各変数の配列から正しいビットを読み取ったと思います。エンディアンにも注意しました。もう一度、よろしくお願いします:)

0 投票する
2 に答える
1116 参照

c++ - このコードで wave ファイルをより長く再生するにはどうすればよいですか?

独自のサウンド プレーヤーを作成する方法がわからなかったので、ChiliTomatoNoodle のフレームワークから 1 つを使用することにしました。

しかし、私が抱えている問題は、180 年代の wave ファイルがあり、最初の 1 秒ほどしか再生されないことです。長く遊べるようにするにはどうしたらいいですか?

サウンド.h:

サウンド.cpp:

事前にご協力いただきありがとうございます。

0 投票する
2 に答える
1722 参照

c# - 再生および録音デバイスの有効化と無効化

私はC#の初心者です..ちょっとばかげた質問であれば、私の質問に悩まされないでください..

無効になっている再生および録音デバイスを C# コードで確認する必要があり、必要に応じて有効または無効にしたいと考えています。どのようにアプローチできますか..?? DirectX.DirectSound API を使用してコードを作成しましたが、有効になっているデバイスのみを列挙することに制限されており、無効になっているデバイスの存在を確認できません。また、デバイスを無効または有効にする方法はないと思います。

助けてくれて本当にありがとう。

また、可能であれば、他の API を使用してこれを行う方法を教えてください。

0 投票する
1 に答える
1135 参照

c++ - directsound では、IDirectSoundBuffer に対して、どのメソッドがバッファの書き込み位置を担当するか。

directsound では、IDirectSoundBuffer::getcurrentposition() を呼び出すと、directsound バッファーの再生位置と書き込み位置が取得されることがわかっています。どの方法でロックを解除しますか?)。データのコピー機能のみが、書き込み位置ではなく、バッファ内のデータにのみ影響するはずだと思います..

0 投票する
1 に答える
364 参照

directsound - DirectSound Wave フォーマットが設定されていない

私は自分のプログラムでかなり長い間ウェーブフォーマットを設定しようとしてきましたが、成功していません...

directsound->setFormat メソッドで常に false を返します...誰か助けてくれませんか?

以下に掲載されているのは、私が取り組んでいるコードです