問題タブ [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 投票する
2 に答える
4731 参照

c# - c# directsound アプリで一部の wav ファイルが再生されるのはなぜですか?

directsound を介して単純な wav ファイルを再生する ac# アプリケーションを持っています。私が持っていたテストデータでは、コードはうまくいきました。しかし、実世界のデータを使用すると、セカンダリ バッファーの作成時に非常に役に立たないエラーが発生しました:「ArgumentException: 値が期待される範囲内にありません。」

テスト wav のビット レートは 512kbps、オーディオ サンプル サイズは 16 ビット、オーディオ サンプル レートは 32kHz でした。新しいwavはそれぞれ1152kbps、24bit、48kHzです。これらのより大きな値に対処するためにdirectsoundを取得するにはどうすればよいですか、またはファイルを再生する前にこれらの値をプログラムで検出するにはどうすればよいですか?

私が使用しているマネージ DirectX v9.00.1126 です。サンプル コードを以下に示します。

追加情報: 実際の wav ファイルは Windows Media Player でも再生されず、ファイルを再生するにはコーデックが必要ですが、winamp では正常に再生されます。

追加情報 2: 動作中のテスト データと実際の不良データのバイト数を比較すると、RIFF チャンクを超えると、不良データには "bext" チャンクが含まれていることがわかります。これは、インターネットがブロードキャストに関連付けられたメタデータであると通知するものです。テスト データは直接 fmt チャンクに入ります。/is/ 不正なデータに fmt チャンクがあるため、形式が不適切なのか、それともローダーが fmt データをさらに探す必要があるのか​​はわかりません。データを提供してくれた人々から、このルージュ ベクスト チャンクに関する情報を入手できるかどうかを確認できます。彼らがそれを削除できれば、私のコードは引き続き機能する可能性があります。

0 投票する
6 に答える
8514 参照

directx - DirectSound は Windows 用の最高のオーディオ抽象化レイヤーですか?

DirectSound は Windows 用の最高のオーディオ抽象化レイヤーですか? 特定のチップセット用に構築された非常に悪いサウンド実装から、アブストレーション レイヤーにアプリを切り替えます。

アプリはネイティブの Winform、.net 3.5 です。DirectX/DirectSound を選択する可能性が高いですが、オーバーヘッドが少し気になります。他のオプションはありますか?それとも、他のことを考えるのはばかげていますか?

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

winapi - マイク入力をリアルタイムで処理するにはどうすればよいですか?

私は自分が持っているアイデアの概念実証を作成し始めています。この時点で、どのように開始すべきかについてのガイダンスが必要です。

しばらくの間「録音」するのではなく、マイク入力をサンプリングし、その信号をリアルタイムで処理する必要があります (Auto-Tune を考えてみてください。ただし、ライブで動作します)。

私がやっていることは、「一種の」「マイク入力から MIDI へのコンバーター」なので、非常に高速に応答する必要があります。

オンラインで少し調べたところ、どうやら進むべき道は DirectSound または WaveIn* API 関数のいずれかです。今、私が読​​んだことによると、WaveIn API を使用すると、特定のサイズのバッファーを埋めることができます。これは、記録と後処理には問題ありませんが、どうすればリアルタイム処理を行うことができるのでしょうか?

10 ミリ秒のバッファーを使用し、50 ミリ秒または 100 ミリ秒の循環配列を自分で保持し、10 ミリ秒ごとに分析をトリガーする関数を取得しますか? (最新の 100 ミリ秒の入力にアクセスでき、そのうち 10 ミリ秒のみが新しい)

ここで何か不足していますか?

また、これは DirectSound でどのように行われますか? 通常の Win32 API よりも機能が向上していますか?

0 投票する
4 に答える
10023 参照

winapi - サウンド処理: DirectSound または直接 Win32 API を使用する必要がありますか?

私はアプリケーションを作成しています:

  • マイクから録音し、入力に対してリアルタイム処理を行います
  • MP3 ファイル (通常の曲) を再生しますが、リアルタイムで出力を操作します
  • 時々、この曲に追加のサウンドを再生する必要がありますが、バッファーを追加するだけでそれができると思います。

要するに、録音と再生の両方に循環バッファーが必要であり、再生しようとしている新しいデータを 20 ミリ秒ごとに出力バッファーに「フィード」する必要があります。

私は DirectSound を見てきましたが、あまり役に立たないようです。出力バッファへの読み取りと書き込みは Win32 と非常に似ているように見えますが、それが役立つと思われる唯一の場所は、メインの曲の上に「追加のサウンド」を再生することです。

DirectSound を使用する必要がありますか、それとも生の Windows API に直行する必要がありますか?
DirectSound は私のために何かをするつもりですか?

前もって感謝します!

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

audio - WAVEPCMデータの音圧表示

DirectSoundデバイスを使用してデジタルサウンドを再生しています。アナログデバイスのように、サウンドアクティビティをデシベルで表示する必要があります。

WAVE PCMデータ(44100 Hz、16ビット)から音圧を計算する正しい方法は何ですか?

0 投票する
3 に答える
1864 参照

c++ - マイクキャプチャデバイスからのDirectSoundバッファ要素の解釈

DirectSoundバッファを含むいくつかのメンテナンス作業を行っています。バッファ内の要素を解釈する方法、つまり、バッファ内の各値が何を表すかを知りたいです。このデータはマイクからのものです。

この波形フォーマットが使用されています:

私の目標は、マイクの無音を検出することです。私は現在、各バッファー要素の強度がボリュームに直接対応していると仮定して、バッファー内のすべての値がボリュームのしきい値を超えていないかどうかを判断することでこれを達成しています。

これは私が現在試していることです:

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

c++ - Speex と DirectSound によるアコースティック エコー キャンセレーション (AEC)

Speex コーデック ライブラリでアコースティック エコー キャンセレーション (AEC) を実行しようとしています。Speex のドキュメントによると、次の 2 つの呼び出しを実行する必要があります。

オーディオ フレームが再生されるたびに、

キャプチャされたすべてのフレームに対して。

私は DirectSound を使用しているので、プライマリ DirectSound バッファを speex_echo_playback の呼び出しで echo_frame として使用できると考えていました。

ドキュメントには、これらは書き込み専用ポインターであると書かれていますが、バッファ データを自分で使用する方法はありませんか?

これは基本的に私がバッファを作成する方法です:

DirectSound バッファ自体を使用する代わりに、speex_decode() の出力を使用して、独自のソフトウェア ミキシングを行う方法があるようです。

Speex と DirectSound を連携させるための指針や提案はありますか? 助けてくれてありがとう。

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

mp3 - ActionScript 2.0 で SWF から MP3 を抽出する方法

複数のサウンド ファイルを次々に再生する必要があります。問題は、ファイアウォールの問題により MP3 を使用できず、サウンドが埋め込まれた SWF を使用する必要があることです。

問題は、SWF はサウンドを再生しますが、サウンド オブジェクトでは再生しないことです。そのため、組み込みの機能を見逃しています。サウンド オブジェクトで再生するには、SWF から Mp3 を抽出する必要があります。

ActionScript 2 を使用して SWF に埋め込まれた MP3 を抽出する方法はありますか?

ご協力ありがとうございました。

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

wpf - WPFのDirectX.Sound

サウンドカードデバイス(システムスピーカーではない)からWPFでトーンを再生したい。ビープ音またはwavファイルを再生する以外に、WPFには単純なサウンド周波数を再生するネイティブな方法がないことに失望しました。すなわちplay(freq、duration);

DirectXの使用を検討するDirectXはWindowsフォームハンドルを必要とするため、Windowsを使用するWPFがどのように処理するかについて問題が発生しました。

誰かがWPFでトーンを再生するためのソリューションを持っていますか?

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

c++ - DirectSound: マイクの入力音量を変更するには?

Directsound と Windows ミキサーについていくつか質問があります。私の目標は、すべてのマイクを列挙し、それぞれの入力音量を変更できるようにすることです。私は解決策から遠く離れていないと思いますが、コードの何が問題なのかわかりません。これが私がやったことです: - すべての入力デバイスを列挙し、それぞれの GUID を取得します - トピックで見つかったメソッドを使用して、このメソッドを使用して directsound GUID に対応するミキサー ID を取得します (ただし、動作します) - 次に、ミキサーのコントロールに対応する ID を取得します - 次に、ボリュームを変更できます

コードは次のとおりです: vs2008 プロジェクト

テストするために、2 つのマイク USB + ライン入力マイクを接続し、どのスライダーが動いているかを視覚的に確認しました。しかし、残念ながらそれは良いものではありません... これは、Windows XP で開いたすべてのミキサーのスクリーンショット (img177.imageshack.us/img177/5189/mixers.jpg) です。

私が間違っていることを知っていますか?最も簡単な解決策はありますか?

おまけの質問: Directsound を使用して、マイクがライン入力に接続されているかどうかを知る方法があるかどうか知っていますか? マイクが接続されていなくても、ライン入力は常に接続されていると検出されるためです。