Pregunta: | 11651 - QUIERO GRABAR Y FILTRAR SONIDOS |
Autor: | Roberto Valseca |
Hola.
Estoy realizando una aplicación con sonido y necesito que mi programa sea capaz de grabar un sonido emitido por un usuario y filtrarlo para obtener su duración, su intensidad o si es muy grave o muy agudo, y todo en tiempo de ejecución. Si alguno sabe como hacerlo o simplemente que controles o de que manera se puede hacer lo agradecería. Saludos. |
Respuesta: | Carlos Ceriani |
Con la función mciSendString() de la librería winmm.dll podés grabar sonido en un archivo Wave, reproducir cualquier archivo multimedia, incluso MPEG, y obtener los atributos de los archivos.
Si escribís mciSendString() en el buscador Google, te aparece un montón de documentación. Esa función envía comandos a un dispositivo multimedia. algunos ejemplos de comandos que me acuerdo son: mciSendString(\"Open C:\\archivo.wav type waveaudio alias sonido\",&0,0,0) Abre el archivo de tipo WAVE para trabajar con él. El nombre del archivo debe estar en formato de DOS. Esto es, si el archivo es \"c:\\mis documentos\\ejemplo.mp3\" entonces en el comando tenés que escribir \"c:\\misdoc~1\\ejemplo.mp3\". Hay una función de librería, que no me acuerdo su nombre que te permite obtener el nombre de un archivo existente en formato DOS. Con el visor de texto API la podés encontrar. Luego podes mandar: mciSendString(\"play sonido\",&0,0,0) para reproducir el archivo mciSendString(\"pause sonido\",&0,0,0) para pausar la reproducción mciSendString(\"resume sonido\",&0,0,0) para continuar la reproducción mciSendString(\"stop sonido\",&0,0,0) para detener la reproducción mciSendString(\"record sonido\",&0,0,0) para grabar desde un dispositivo de entrada, como el micrófono Si querés reproducir un MP3, el tipo de dispositivo que debés poner en el comando Open es MPEGVideo en lugar de waveaudio. Al final de todo, tenés que cerrar el archivo: mciSendString(\"Save sonido\",&0,0,0) para grabar el archivo al disco. No estoy bien seguro de que el comando sea así. mciSendString(\"Close sonido\",&0,0,0) para cerrar el dispositivo Espero que te sirva |