2009-12-10 16 views
6

Estoy tratando de comenzar con una aplicación de audio simple en .NET 3.5 (preferiblemente en VB.NET, pero con gusto usaré C#). Lo que me gustaría hacer es:¿Forma recomendada de trabajar con audio en aplicaciones .NET?

  • de audio continuamente registro a partir de (por defecto) de Windows dispositivo de entrada de audio en 8-bits por muestra de formato PCM
  • Para todos los n bytes capturado, hacer un análisis de el audio en bruto (algunos RMS y/o cálculos de SPL - básicamente lo que se necesita para una barra de VU cosita bastante gráfico)
  • Si no se encuentra el fragmento de audio interesante después de análisis, guardarlo con un formato de archivo comprimido (por ejemplo, MP3)

Lo primero que noté es que el soporte de audio en el .NET Framework básico es bastante inexistente. Google buscando un poco encontró un código de muestra, la mayoría usando Managed DirectX. Sin embargo, la falta de documentación de MSDN, la vendimia de las bibliotecas (2004) y la siguiente excepción MDA amenazante en VS.NET 2008, me convenció de que esto es un callejón sin salida:

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. 

... que creo que puede traducirse libremente como "ni siquiera prueba para usar esto". ¿Me estoy perdiendo algo aquí, o Managed DirectX está realmente muerto? Another StackOverlow question sugiere que XNA es un reemplazo para Managed DirectX, pero carece del tipo de funcionalidad de bajo nivel que necesito.

Así, la cual API o biblioteca de terceros en realidad es útil para el desarrollo de audio bajo .NET? El uso de COM interoperabilidad o P/Invoke es aceptable, siempre y cuando haya algún código de ejemplo .NET decente disponible para comenzar ...

Respuesta

4

¿Ha consultado NAudio on CodePlex? Parece que tiene las características que necesita.

+0

+1, parece muy prometedor! Probándolo ahora mismo ... – mdb

1

Si quieres probar una solución sólida basada DirectX puede utilizar SlimDX. Admite las interfaces DirectSound y XAudio.

+0

Gracias, otra solución prometedora que mi débil Google-fu de alguna manera pasó por alto – mdb

2

He sido un fan de la BASS library que tiene un API .NET.

+0

Su licencia es algo subóptima para mí. Aún así, marque como favorito ... – mdb

1

Otra es FMOD.

+0

Gracias - un poco caro para uso comercial, sin embargo. Otro que encontré en el ínterin es http://www.ambiera.com/irrklang/irrklang_pro.html, que también sufre de extraña licencias – mdb

+0

No creo que la concesión de licencias de IrrKlang es que extraño ... el desarrollador que está dando la opción para seleccionar la licencia que sea más apropiada para su situación. –

Cuestiones relacionadas