Рекомендуемый способ работы со звуком in.NET заявления?

Я пытаюсь начать работу с простым аудио-приложением под .NET 3.5 (желательно в VB.NET, но с удовольствием будет использовать C#). Что я хотел бы сделать, так это:

  • непрерывная запись звука С (по умолчанию) устройства ввода Windows audio в формате 8 бит на образец PCM
  • для каждого захваченного N байтов сделайте некоторый анализ на необработанном аудио (некоторые вычисления RMS и/или SPL-в основном то, что вам нужно для довольно гистограммы vu)
  • если аудио фрагмент найден интересным после анализа, сохраните его, используя сжатый формат файла (например, MP3)

Первое, что я заметил, это то, что поддержка звука в базовой .NET Framework практически отсутствует. Поиск в интернете немного нашел пример кода, в основном с использованием управляемого DirectX. Однако отсутствие документации MSDN, винтаж библиотек (2004) и следующее угрожающее исключение MDA в VS.NET 2008, убедил меня, что это тупик:

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.

...что я think свободно переводится как " даже не попробовать использовать этот материал."Я что-то пропустил здесь, или управляемый DirectX действительно мертв? еще один вопрос StackOverlow предполагает, что XNA является заменой управляемого DirectX, но ему не хватает низкоуровневой функциональности, которая мне нужна.

Итак, какой API или сторонняя библиотека на самом деле полезны для разработки аудио в .NET? Использование com-взаимодействия или P / Invoke приемлемо, если есть приличный .NET пример кода, с которого можно начать работу...

4 ответов


вы заглянули в NAudio на CodePlex? Похоже, у него есть необходимые функции.


Я фанат бас-библиотека который имеет .NET API.


Если вы хотите попробовать звуковое решение на основе DirectX, вы можете использовать SlimDX. Он поддерживает интерфейсы DirectSound и XAudio.


другое FMOD.