問題タブ [audio]
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.
.net - C# を使用してストリームからオーディオを再生する
データを一時的にディスクに保存せずに、たとえばWebRequest から返されたSystem.IO.Streamからオーディオ (MP3 など) を直接再生する方法は C# にありますか?
NAudioを使用したソリューション
NAudio 1.3を使用すると、次のことが可能になります。
- URL から MP3 ファイルを MemoryStream にロードする
- MP3 データの読み込みが完了したら、Wave データに変換します。
- NAudioの WaveOut クラスを使用してウェーブ データを再生する
半分ロードされた MP3 ファイルを再生できればよかったのですが、 NAudioライブラリの設計上、これは不可能のようです。
そして、これは仕事をする関数です:
audio - 圧縮されたオーディオファイルのロードと保存を繰り返すと、品質が低下しますか?
たとえば、jpeg画像の場合のように?mp3またはoggvorbisオーディオファイルについてはどうですか?
javascript - Javascriptからサウンドを再生するためのクロスプラットフォーム、クロスブラウザの方法?
システムのインタラクティブなシミュレーションを作成するdhtmlアプリケーションを作成しています。シミュレーションのデータは別のツールから生成されており、すでに非常に大量のレガシーデータがあります。
シミュレーションの一部の手順では、オーディオの「ナレーション」クリップを再生する必要があります。複数のブラウザでこれを実現する簡単な方法を見つけることができませんでした。
Soundmanager2は私が必要としているものにかなり近いですが、mp3ファイルしか再生せず、レガシーデータにはいくつかの.wavファイルも含まれている可能性があります。
誰かが役立つかもしれない他のライブラリを持っていますか?
flash - SoundChannel がサウンドを再生しているかどうかを確認する
SoundChannel がまだサウンドを再生しているかどうかを確実に確認する方法は?
例えば、
c++ - waveOutWrite() がデバッグ ヒープで例外を引き起こすのはなぜですか?
この問題を調査しているときに、オンラインで次のシナリオについて複数の言及を見つけましたが、プログラミング フォーラムでは常に未回答の質問として扱われていました。これをここに投稿することが、少なくとも私の調査結果を文書化するのに役立つことを願っています.
まず、症状: waveOutWrite() を使用して PCM オーディオを出力する非常に標準的なコードを実行しているときに、デバッガーで実行すると、次のようになることがあります。
明らかに疑わしいのはコード内の別の場所でのヒープの破損ですが、そうではないことがわかりました。さらに、次のコードを使用してこの問題を再現することができました (これは、ダイアログ ベースの MFC アプリケーションの一部です:)
これについて誰かがコメントする前に、はい、サンプル コードは初期化されていないメモリを再生します。スピーカーを最大に上げた状態でこれを試さないでください。
一部のデバッグにより、次の情報が明らかになりました。 waveOutPrepareHeader() は、header.reserved に、最初の 2 つのメンバーとして少なくとも 2 つのポインターを含む構造体のように見えるものへのポインターを設定します。最初のポインターは NULL に設定されます。waveOutWrite() を呼び出した後、このポインターはグローバル ヒープに割り当てられたポインターに設定されます。擬似コードでは、次のようになります。
通常、ヘッダーは、wdmaud.dll の内部関数である waveCompleteHeader() によってアプリケーションに返されます。waveCompleteHeader() は、GlobalHandle()/GlobalUnlock() などを呼び出して、waveOutWrite() によって割り当てられたポインターの割り当てを解除しようとします。上記のように、GlobalHandle() が爆発することがあります。
さて、最初に疑ったように、GlobalHandle() が爆発する理由は、ヒープの破損によるものではありません。内部構造の最初のポインターを有効なポインターに設定せずに waveOutWrite() が返されたためです。戻る前に、そのポインタが指すメモリを解放すると思われますが、まだ逆アセンブルしていません。
これは、Wave 再生システムのバッファーが不足している場合にのみ発生するようです。そのため、これを再現するために単一のヘッダーを使用しています。
この時点で、これが私のアプリケーションのバグであるということに対してかなり良いケースがあります。結局のところ、私のアプリケーションは実行さえしていません。誰もこれを見たことがありますか?
これは Windows XP SP2 で見られます。オーディオ カードは SigmaTel 製で、ドライバーのバージョンは 5.10.0.4995 です。
ノート:
将来の混乱を防ぐために、再生中のバッファを管理するために malloc()/free() を使用することに問題があることを示唆する答えは単に間違っていることを指摘したいと思います。より多くの人が同じ間違いを犯すのを防ぐために、提案を反映するために上記のコードを変更したことに注意してください。違いはありません。waveCompleteHeader() によって解放されるバッファーは、PCM データを含むものではなく、PCM バッファーを解放する責任はアプリケーションにあり、特定の方法で割り当てる必要はありません。
また、使用する waveOut API 呼び出しがどれも失敗しないようにしています。
現在のところ、これは Windows のバグか、オーディオ ドライバのバグであると推測しています。反対意見はいつでも大歓迎です。
java - 一時ファイルなしでJavaでオーディオストリームをWAVバイト配列に変換します
InputStream
圧縮形式(MP3やOGGなど)のオーディオデータを含むcalledが与えられた場合、入力データのWAV変換を含む配列をin
作成したいと思います。byte
残念ながら、これを実行しようとすると、JavaSoundから次のエラーが発生します。
以下に示すように、wavを一時ファイルに書き込んでから、読み戻すことで、なんとか機能させることができました。
これは明らかにあまり望ましくありません。もっと良い方法はありますか?
c# - .NET に最適なオーディオ圧縮ライブラリは何ですか?
.NET 用の優れたオーディオ圧縮ライブラリを探しています。MP3 を使用するものはすべてアウトです (ライセンスの問題のため)。基本的には、通常の WAV オーディオ データを何らかの形式に圧縮し、解凍して WAV に戻せばよいだけです。コードはすべて .NET (C# または VB.NET) であることが望ましいですが、これは可能性が低いと思います。ロスレスまたは比較的ロスレス (できれば 192 MP3 程度) で、圧縮率は少なくとも 4:1 である必要があります。私はバッファベースの API を好みますが、ファイルベースの API も問題ありません。
誰もこのようなことを知っていますか?
c# - C# で正弦波または方形波を作成する
特定の周波数のオーディオ正弦波または方形波を生成するにはどうすればよいですか?
機器を校正するためにこれを行うことを望んでいますが、これらの波はどのくらい正確ですか?
java - クラス内に画像/サウンドを保存する最良の方法は?
ユーザーが情報をファイルに保存して後で復元できるように、アプリケーションのインスタンス間の一種の交換フォーマットを開発しています。「交換フォーマット」全体は、シリアル化されてディスクに書き込まれる単一のクラスです。
そのクラス内にグラフィック/サウンド情報を保存するにはどうすればよいですか? ファイルを.jarに入れるだけは避けたいです。
math - 自然に音量を下げる方法は?
私は、音楽アプリケーションで一時停止と停止を緩和し、ポップノイズを防ぐために、約0.5秒の期間にわたってシグモイドと対数のフェードアウトを実験しました。
しかし、これらはどちらも「自然」に聞こえません。そして、これはつまり、彼らは失敗したように聞こえます。アマチュアエンジニアのようにサウンドデッキを担当していました。
音量に関しては、耳が対数であることがわかっています。少なくとも、2倍の電力が2倍の音量になるわけではありません。ボリュームフェードの魔法の公式はありますか?ありがとう。