Windows no es un sistema operativo en tiempo real, por lo que no tiene verdaderas capacidades de procesamiento en tiempo real en Windows.
Con Windows Vista, Microsoft ofreció una nueva API que, entre otras cosas, tenía como objetivo un rendimiento estricto, donde las transmisiones en modo exclusivo prometían un rendimiento cercano al tiempo real. Esto se logra con algunas cosas poderosas que trabajan juntas, incluida la ruta corta y exclusiva al hardware de audio desde los componentes del modo de usuario, la programación multimedia específica. Permítanme citar a Wiki sobre esto:
Para los profesionales de audio, se ha introducido un nuevo controlador de puerto WaveRT que se esfuerza por lograr un rendimiento en tiempo real mediante el uso del programador de clase multimedia y admite aplicaciones de audio que reducen la latencia de las transmisiones de audio. Como resultado, las aplicaciones en modo de usuario pueden gobernar completamente las secuencias de audio sin ninguna ejecución de código en el núcleo durante el tiempo de ejecución. WaveRT permite que la aplicación en modo de usuario acceda directamente a las memorias intermedias internas del hardware de audio y a los contadores de posición de muestra (datos en la memoria que se asignan al motor DMA del hardware de audio). Permite a las aplicaciones sondear la posición actual en la ventana de memoria DMA a la que está accediendo el hardware. WaveRT también admite la noción de un evento de notificación de reloj generado por hardware, similar a la API ASIO, para que las aplicaciones no necesiten sondear la posición actual si no lo desean. Sin embargo, WaveRT solo funciona con PCI, PCI Express o dispositivos de audio integrados; no funciona con interfaces USB o FireWire que están más extendidas en la industria del audio profesional.
Este nuevo modo de operación abrió oportunidades emocionantes para el procesamiento de audio de baja latencia, como informaron los usuarios felices :
Obtengo un audio estable sólido como una roca con búferes de 2 ms + latencia de 0,5 ms, en comparación con el audio semiestable en búferes de 4 ms (latencia de salida de + 5 ms), con ASIO.
Dependiendo de si esta aproximación en tiempo real es buena para usted, Windows podría ser un buen entorno para la tarea mencionada.
Si esto es posible o no depende de sus requisitos de latencia, es decir, el retraso total entre la entrada y la salida. Un buen punto de partida podría ser configurar una estación de trabajo de audio digital utilizando software de grabación como ProTools, Sonar, Ableton, Cubase, etc. Estos funcionan con hardware de E / S económico (más o menos) y vienen con controladores optimizados de baja latencia. Algunos de estos tienen interfaces "enchufables" que le permiten realizar su propio procesamiento de señal. Un formato popular es VST de Steinberg, que es compatible con muchos hosts. Solía ser abierto y gratuito, pero ahora puede requerir una licencia.
Este http://www.kvraudio.com/wiki/ es un buen recurso para ese tipo de cosas.
Si desea procesar en Matlab puede que tenga que escribir sus propios controladores. Lo he visto hecho con DLL y también con interfaces JAVA nativas. También puede hackear algo junto con audioplayer () y audiorecorder () pero esto puede requerir una latencia bastante alta para lidiar con las interrupciones de Windows y hacer otras cosas. En esencia, configura un control GUI con una devolución de llamada que se activa a la vez. En la devolución de llamada, lee todas las entradas disponibles, las procesa, las introduce en la salida y espera lo mejor.
En general, ayuda a mantener el cuadro de Windows lo más "limpio" posible, es decir, sin conexión de red (mientras procesa audio), sin software antivirus y ejecutando solo el mínimo absoluto de elementos de inicio, software y servicios.
fuente