我想开始一个简单的音频应用程序,使用.NET 3.5(最好是VB.NET,但也可以使用C#)。我的目标是:
- 从(默认的)Windows音频输入设备中以8 bits/样本PCM格式连续记录音频
- 对于每个捕获的N个字节,在原始音频上进行一些分析(一些RMS和/或SPL计算——基本上是需要一个漂亮的VU杆图形的内容)
- 如果在分析后发现音频片段有趣,则使用压缩文件格式(例如MP3)保存它
首先我注意到的是,基本.NET框架中的音频支持几乎不存在。在Google搜索一些示例代码时,大多数都使用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.
我认为大致翻译成“甚至不要试图使用这些东西”。我是否漏掉了什么,还是Managed DirectX真的已经死了?另一个StackOverlow问题表明XNA是Managed DirectX的替代品,但它缺乏我所需要的低级功能。
那么,在.NET下哪个API或第三方库实际上对音频开发有用?使用COM互操作或P/Invoke是可接受的,只要有一些体面的.NET示例代码可用于入门...