問題タブ [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.
audio - Raw Sound の再生
私はしばらくの間、画像フォーマットを扱ってきましたが、画像がピクセルの配列であることを知っています (24-おそらく 32 ビット長)。問題は、サウンド ファイルをどのように表現するかということです。正直なところ、何をグーグルで検索すればよいかさえわかりません。また、データをどのように使用するのか興味があります。つまり、ファイル内のサウンドを実際に再生するということです。画像ファイルの場合、画像を描画するためのあらゆる種類の抽象デバイスがあります(グラフィックス:java、c#、HDC:cpp(win32)など)。私が十分に明確であることを願っています。
c# - SlimDXとDirectSound(C#)でサウンドを再生する
(これが重複している場合はお詫びします...私は投稿しましたが、実際にフォーラムに到達したという証拠は見られませんでした)
SlimDXDirectSoundを動作させようとしています。これが私が持っているコードです。それはwavファイルから二次バッファを満たし、次にスレッドループで、バッファの下半分または上半分を交互に満たします。
バッファの最初のロードを正常に再生します。AutoResetEventsは必要なときに起動し、バッファーの下半分、次に上半分にデータが入力されます(Debugステートメントで確認されます)。ただし、バッファの最初のロード後、再生は続行されません。したがって、どういうわけか、バッファの再作成は正常に機能しません。
アイデア?
(DirectSoundを使用しているのは、使用したいオーディオデバイスのGUIDを設定する唯一の方法であるためです。他の.NET対応のアプローチを利用できます。)
file - DirectSound は生のバイナリ サウンド ファイルを再生できますか?
U-law でエンコードされたバイナリ ファイルを取得し、PCM にデコードしました。今、私はそれをプレイする必要があります。ただし、WAV ヘッダーはありません。
DirectSound は、WAV ヘッダーを持たない生のバイナリ サウンド ファイルを再生できますか?
c - DirectSound でステレオ PCM を再生する
DirectSound を使用して作成した単純な 16 ビット PCM プレーヤーがあります。しかし、再生すると、両方ではなく 1 つのスピーカーだけが再生されるようです。
正確に投稿するコードがわからないので、必要な場合は教えてください。以下を使用してサウンド バッファを作成し、次を使用してストリームをロックすると言えます。
c# - C#でサインスイープを生成する
開始周波数、終了周波数、およびスイープの期間を定義できるC#でサインスイープを生成したいと思います。バッファを再生するDirectSoundやASIOなどのサウンドライブラリを見てきました。しかし、バッファーサイズの制限により、スイープの期間が複数のバッファーを満たすのに十分な長さである場合に、スイープの期間を制御する方法を理解できませんでした。サンプルやガイドは非常に役立ちます。
c++ - オーディオ サンプル バッファーのボリューム ゲインを変更する
音声データでバッファのボリュームを増やしたい。ポイントは、私は DirectSound を使用しており、1 つのプライマリ バッファーと 1 つのセカンダリ バッファーを持っているということです。すべてのストリームのミキシングは手動で行われます。ボイス チャットでは、すべての参加者が個別の音量レベルを持つことができます。各ストリーム データに値を掛けて (ゲイン)、1 つのバッファーに合計します。すべて正常に動作しますが、データに 1.0f より大きい値を掛けようとすると、クリッピングなどの音が聞こえます。
Audacity エフェクト コンプレッサーを使用してみましたが、これは奇妙なノイズを減らすのに役立ちません。
おそらく、他の方法でゲインを変更する必要がありますか?それとも、別の後処理アルゴリズムを使用しますか?
更新: うわー、私は興味深いことを発見しました! 音量を上げる前とその直後にオーディオをダンプしました。
これが写真です
品質については申し訳ありません-それがサウンドの表示方法だと思います(私は自分で赤い線を引きました)。値がサンプル データ型を超えているように見えます。しかし、私はなぜ理解できませんか?私のサンプルバッファは BYTE ですが、短いポインタを介してのみアクセスします。署名されていますが、*ptr が約 15 ~ 20,000 の場合でもクリッピングが発生します。
audio - DirectSound 出力以外に実装する価値はありますか?
Windows ユーザー向けのオーディオ アプリケーションを作成しています。現在、オーディオは DirectSound 経由でサウンドカードにダンプされます。Multi Media Extensions (WinMM.dll) へのフォールバックを必要とする一般的なデスクトップでこれが失敗する理由はありますか? または、ユーザー (XP+) は通常、DirectSound 互換ドライバーを使用しますか?
c++ - オーディオデバイスの到着/切断の検出
Windows OS で再生/キャプチャ デバイスの到着と切断を検出できるようにする機能をアプリに追加したいと考えています。Skype と同様に、デバイスのプラグを抜くと、デバイスが失われたという通知が表示され、別のデバイスを選択するように求められます。
ダイレクトサウンドを使用しています。この問題を解決するには、2 つの方法があると思います。
- 別のスレッドで EnumerateDevices コールバックを呼び出し、変更を手動で検出します。
- 何とか WM_DEVICECHANGE メッセージを処理します。しかし、AFAIK WM_DEVICECHANGE にはいくつかの制限があります。ところで、「スマート」オーディオ カードでは動作しません。これにより、あらゆる種類のデバイスをあらゆるシンクに接続できます。デバイス マネージャーでデバイスを無効にすると、WM_DEVICHANGE が届きます。ヘッドフォンジャックを手動で抜いても、何も起こりません。しかし、私はそのような状況を処理する必要があります。
適切なアプローチをアドバイスしてください。
前もって感謝します。
windows-7 - Windows Vista 以降でオーディオまたはビデオを再生するときにネットワーク パフォーマンスが低下する原因は何ですか?
問題のソフトウェアはネイティブ C++/MFC アプリケーションであり、UDP 経由で大量のデータを受信し、表示、サウンド出力、ディスクへの書き込みなどのためにデータを処理します。アプリケーションの CHM ヘルプ ドキュメントがヘルプ メニューから起動され、ハードウェアからデータを収集しているときにヘルプ ドキュメントをクリックしたときに、最初に問題に遭遇しました。これを再現するために、AutoHotkey スクリプトを使用して、アプリケーションの実行中にヘルプ ドキュメント内をすばやくクリックします。システムで音が発生するとすぐに、エラーが発生し始めました。
サウンドカードを完全に無効にすると、サウンド出力は明らかに無効になりますが、すべてがエラーなしで正常に処理されます。ただし、サウンドを再生すると (このアプリケーション、別のアプリケーション、またはメッセージ ボックスからのビープ音だけでも)、何千ものパケットがドロップされます (各パケットにはタイムスタンプが付けられているため、これはわかっています)。2 番目のテストとして、アプリケーションをまったく使用せず、Wireshark を使用してハードウェアからの着信パケットを監視しました。案の定、Windows でサウンドが再生されるたびに、パケットがドロップされていました。実際、サウンドがアクティブに再生されていなくてもエラーが発生するわけではありません。(DirectSound8 を使用して) バッファを作成しただけで再生を開始しない場合でも、これらのエラーが発生します。
これは、ネットワーク カード (光ファイバーと RJ45 の両方) とサウンド カード (統合カードと個別カードの両方) を複数組み合わせた複数の PC で発生します。また、NIC とサウンド カードごとに異なるドライバー バージョンも試しました。すべてのテストは、Windows 7 32 ビットで行われています。私のアプリケーションはオーディオに DirectSound を使用しているため、さまざまな CooperativeLevels (通常の操作は DSSCL_PRIORITY) を試しましたが、成功しませんでした。
この時点で、それは私のアプリケーションとは何の関係もないことを確信しており、ハードウェア ベンダーや Microsoft と取引を始める前に、この問題の原因を誰か知っているかどうか疑問に思っていました。
windows - DLL内からHWNDを取得するにはどうすればよいですか?
ダイレクトサウンドを使用してサウンドを再生したいDLLがあります。サウンドを再生するには、実行可能ファイルのHWNDが必要です。DLLをロードする実行可能ファイルのHWNDがありません。実行可能ファイルから渡さずにDLLでそれを取得するにはどうすればよいですか?