2010-05-17 12 views
5

Deseo determinar si otro programa reproduce un sonido por encima de un cierto umbral. No estoy buscando verificar la configuración de volumen en la computadora ni nada de eso. Realmente solo necesito ver si alguna aplicación juega algo más alto de lo que esperaba. Alguien sabe si esto es posible o cómo hacerlo?Determine cuándo se reproduce un sonido fuerte en C#

+2

Mi respuesta inmediata es que no existe una manera "lista para usar" de hacer eso con .Net. Probablemente necesite acceso de menor nivel al hardware de sonido. Incluso entonces, no creo que pueda obtener el volumen físico real reproducido porque esto se puede controlar externamente desde la computadora (usando la perilla volumne). :) – Anthony

+0

Creo que un programa que hace eso tendría que cavar bastante profundo en la infraestructura del sistema, como, cerca del controlador de la tarjeta de sonido. Quizás DirectX te permite ir allí ... – flq

Respuesta

1

Echa un vistazo al proyecto this en codeproject. Es un medidor de volumen con DirectX administrado y escrito completamente en C#.

1

Hay muchas fuentes de sonido posibles en la máquina local y, finalmente, estas se comunicarán a través del sistema de sonido de Windows a una mezcladora y a través de la tarjeta de sonido. La única manera que conozco de monitorear todos los sonidos en un sistema Windows es escribir un Controlador de Filtro usando el Kit de Desarrollo de Controlador de Dispositivo. Esto interceptaría todas las solicitudes al sistema de sonido, recorrerá los datos que se envían para jugar y podría establecer indicadores/escribir en un registro cuando detecta grandes diferencias (donde abs (datos [x + 1] - datos [x]) es un gran valor).

El desarrollo del controlador se realiza generalmente en C. Hay un montón de código de muestra en la web si desea seguir esta ruta.

Cuestiones relacionadas