問題タブ [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.
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 データをさらに探す必要があるのかはわかりません。データを提供してくれた人々から、このルージュ ベクスト チャンクに関する情報を入手できるかどうかを確認できます。彼らがそれを削除できれば、私のコードは引き続き機能する可能性があります。
directx - DirectSound は Windows 用の最高のオーディオ抽象化レイヤーですか?
DirectSound は Windows 用の最高のオーディオ抽象化レイヤーですか? 特定のチップセット用に構築された非常に悪いサウンド実装から、アブストレーション レイヤーにアプリを切り替えます。
アプリはネイティブの Winform、.net 3.5 です。DirectX/DirectSound を選択する可能性が高いですが、オーバーヘッドが少し気になります。他のオプションはありますか?それとも、他のことを考えるのはばかげていますか?
winapi - マイク入力をリアルタイムで処理するにはどうすればよいですか?
私は自分が持っているアイデアの概念実証を作成し始めています。この時点で、どのように開始すべきかについてのガイダンスが必要です。
しばらくの間「録音」するのではなく、マイク入力をサンプリングし、その信号をリアルタイムで処理する必要があります (Auto-Tune を考えてみてください。ただし、ライブで動作します)。
私がやっていることは、「一種の」「マイク入力から MIDI へのコンバーター」なので、非常に高速に応答する必要があります。
オンラインで少し調べたところ、どうやら進むべき道は DirectSound または WaveIn* API 関数のいずれかです。今、私が読んだことによると、WaveIn API を使用すると、特定のサイズのバッファーを埋めることができます。これは、記録と後処理には問題ありませんが、どうすればリアルタイム処理を行うことができるのでしょうか?
10 ミリ秒のバッファーを使用し、50 ミリ秒または 100 ミリ秒の循環配列を自分で保持し、10 ミリ秒ごとに分析をトリガーする関数を取得しますか? (最新の 100 ミリ秒の入力にアクセスでき、そのうち 10 ミリ秒のみが新しい)
ここで何か不足していますか?
また、これは DirectSound でどのように行われますか? 通常の Win32 API よりも機能が向上していますか?
winapi - サウンド処理: DirectSound または直接 Win32 API を使用する必要がありますか?
私はアプリケーションを作成しています:
- マイクから録音し、入力に対してリアルタイム処理を行います
- MP3 ファイル (通常の曲) を再生しますが、リアルタイムで出力を操作します
- 時々、この曲に追加のサウンドを再生する必要がありますが、バッファーを追加するだけでそれができると思います。
要するに、録音と再生の両方に循環バッファーが必要であり、再生しようとしている新しいデータを 20 ミリ秒ごとに出力バッファーに「フィード」する必要があります。
私は DirectSound を見てきましたが、あまり役に立たないようです。出力バッファへの読み取りと書き込みは Win32 と非常に似ているように見えますが、それが役立つと思われる唯一の場所は、メインの曲の上に「追加のサウンド」を再生することです。
DirectSound を使用する必要がありますか、それとも生の Windows API に直行する必要がありますか?
DirectSound は私のために何かをするつもりですか?
前もって感謝します!
audio - WAVEPCMデータの音圧表示
DirectSoundデバイスを使用してデジタルサウンドを再生しています。アナログデバイスのように、サウンドアクティビティをデシベルで表示する必要があります。
WAVE PCMデータ(44100 Hz、16ビット)から音圧を計算する正しい方法は何ですか?
c++ - マイクキャプチャデバイスからのDirectSoundバッファ要素の解釈
DirectSoundバッファを含むいくつかのメンテナンス作業を行っています。バッファ内の要素を解釈する方法、つまり、バッファ内の各値が何を表すかを知りたいです。このデータはマイクからのものです。
この波形フォーマットが使用されています:
私の目標は、マイクの無音を検出することです。私は現在、各バッファー要素の強度がボリュームに直接対応していると仮定して、バッファー内のすべての値がボリュームのしきい値を超えていないかどうかを判断することでこれを達成しています。
これは私が現在試していることです:
c++ - Speex と DirectSound によるアコースティック エコー キャンセレーション (AEC)
Speex コーデック ライブラリでアコースティック エコー キャンセレーション (AEC) を実行しようとしています。Speex のドキュメントによると、次の 2 つの呼び出しを実行する必要があります。
オーディオ フレームが再生されるたびに、
キャプチャされたすべてのフレームに対して。
私は DirectSound を使用しているので、プライマリ DirectSound バッファを speex_echo_playback の呼び出しで echo_frame として使用できると考えていました。
ドキュメントには、これらは書き込み専用ポインターであると書かれていますが、バッファ データを自分で使用する方法はありませんか?
これは基本的に私がバッファを作成する方法です:
DirectSound バッファ自体を使用する代わりに、speex_decode() の出力を使用して、独自のソフトウェア ミキシングを行う方法があるようです。
Speex と DirectSound を連携させるための指針や提案はありますか? 助けてくれてありがとう。
mp3 - ActionScript 2.0 で SWF から MP3 を抽出する方法
複数のサウンド ファイルを次々に再生する必要があります。問題は、ファイアウォールの問題により MP3 を使用できず、サウンドが埋め込まれた SWF を使用する必要があることです。
問題は、SWF はサウンドを再生しますが、サウンド オブジェクトでは再生しないことです。そのため、組み込みの機能を見逃しています。サウンド オブジェクトで再生するには、SWF から Mp3 を抽出する必要があります。
ActionScript 2 を使用して SWF に埋め込まれた MP3 を抽出する方法はありますか?
ご協力ありがとうございました。
wpf - WPFのDirectX.Sound
サウンドカードデバイス(システムスピーカーではない)からWPFでトーンを再生したい。ビープ音またはwavファイルを再生する以外に、WPFには単純なサウンド周波数を再生するネイティブな方法がないことに失望しました。すなわちplay(freq、duration);
DirectXの使用を検討するDirectXはWindowsフォームハンドルを必要とするため、Windowsを使用するWPFがどのように処理するかについて問題が発生しました。
誰かがWPFでトーンを再生するためのソリューションを持っていますか?