.NET 3.5 で簡単なオーディオ アプリケーションを作成しようとしています (できれば VB.NET を使用しますが、喜んで C# を使用します)。私がやりたいことは次のとおりです。
- (既定の) Windows オーディオ入力デバイスからのオーディオをサンプルあたり 8 ビットの PCM 形式で継続的に録音する
- キャプチャされた N バイトごとに、生のオーディオの分析を行います (いくつかの RMS および/または SPL の計算 - 基本的に、きれいな VU 棒グラフに必要なもの)
- 分析後にオーディオ フラグメントが興味深いと判断された場合は、圧縮ファイル形式 (MP3 など) を使用して保存します。
最初に気付いたのは、基本的な .NET Framework でのオーディオ サポートがほとんど存在しないことです。少し調べてみると、主に Managed DirectX を使用したサンプル コードが見つかりました。ただし、MSDN ドキュメントの欠如、ライブラリのヴィンテージ (2004 年)、および VS.NET 2008 での次の威嚇的な MDA 例外により、これは行き止まりであると確信しました。
Message: DLL 'Microsoft.DirectX.dll' is attempting managed execution inside
OS Loader lock. Do not attempt to run managed code inside a DllMain or image
initialization function since doing so can cause the application to hang.
...これは、「このようなものを使用しようとさえしないでください」と大まかに翻訳されていると思います。ここで何かが足りないのでしょうか、それともマネージ DirectX は本当に死んでいるのでしょうか? 別の StackOverlow の質問によると、XNA は Managed DirectX の代替品ですが、私が必要とする低レベルの機能が欠けています。
では、実際に .NET でのオーディオ開発に役立つ API またはサードパーティ ライブラリはどれでしょうか? COM 相互運用機能または P/Invoke の使用は、適切な .NET サンプル コードが利用可能である限り、受け入れられます...