procesamiento de sonido: ¿Debo usar DirectSound o directamente Win32 API?
-
22-08-2019 - |
Pregunta
Estoy haciendo una aplicación donde yo:
- Grabar desde el micrófono y hacer algo de procesamiento en tiempo real en la entrada
- Reproducir un archivo MP3 (una canción regular), pero la manipulación de la salida en tiempo real
- De vez en cuando voy a necesitar para reproducir sonidos adicionales sobre esta canción también, pero creo que puedo hacerlo simplemente añadiendo los tampones.
En resumen, tengo que tener buffer circular para la grabación y la reproducción, y tengo que ser "alimentar" el búfer de salida cada 20 ms o menos con los nuevos datos que están a punto de ser jugado.
He estado buscando en DirectSound, y no parece ayudar mucho. La lectura y la escritura a los buffers de salida parecen muy similares a Win32, el único lugar donde parece que sería la ayuda está en jugar los "sonidos adicionales" sobre la canción principal.
¿Debo usar DirectSound, o debería ir directamente a las API de Windows primas?
DirectSound se va a hacer nada para mí?
Gracias de antemano!
Solución
Las API de DirectSound le dan un mejor control en tiempo real. Son también la forma de utilizar el sonido soportado en Windows. Yo tenía la impresión de que se depracated la década de API Win32, pero podría estar equivocado en esto.
Esta pregunta está cerca de la suya
https://stackoverflow.com/questions/314522 / que-es-el-mejor-c-sonido-api-para-ventanas
también
Es DirectSound la mejor capa de abstracción de audio para Windows?
Por último, pero no menos importante, esto es lo que Microsoft tiene que decir http://msdn.microsoft.com/en-us/library/dd370784 (VS.85) .aspx
Otros consejos
Ni? :)
La historia es que DirectSound es el reemplazo para waveOut, pero se unió a DirectSound DirectInput como las API desaprobadas en Vista y es sustituido por WASAPI . DirectSound y waveOut se implementan en la parte superior de la WASAPI espacio de usuario en Vista. En XP, waveOut y DirectSound alimentan a la misma API Mixer nivel de kernel.
Para consolidar todas estas interfaces echar un vistazo a algo así como OpenAL, que es un estándar de audio bien apoyado a lo largo de las mismas líneas que OpenGL.
Parece que va a ser muy sensibles a la latencia. Podría pagar a mirar ASIO
armonía Central - Audio Programación . También lea w:. DirectSound
Windows Vista cuenta con un completo pila de audio basado en la re-escrito Universal Audio Architecture. Porque de los cambios en la arquitectura de la pila de audio rediseñado, un camino directo de DirectSound a los controladores de audio no existe.
Debido a Xbox 360 y Microsoft la integración de Windows, Microsoft es empujando activamente a los desarrolladores a migrar nuevas aplicaciones a Xbox equivalente API de audio tales como XAudio y XACT.
OpenAL parece prometedor.