[C con Clase] reproducción de sonidos

Steven R. Davidson vze266ft en verizon.net
Vie Feb 22 19:50:39 CET 2008


Hola Adolfo,

Adolfo Cárdenas wrote:

> ¿Existe en la API funciones de emisión de sonidos?
> Por ejemplo para reproducir un archivo .wav
> 

Sí existen. De hecho el formato WAV es nativo a MS-Windows. Puedes usar 
la función 'PlaySound()' que se incluye en <mmsystem.h> y en la 
biblioteca "winmm.lib" (o "libwinmm.a"). Esta función sirve para 
reproducir sonidos WAV a través de un sobrenombre o apodo ("alias", en 
inglés), nombre de un recurso, o nombre de un fichero. Por ejemplo,

PlaySound( "misonido.wav", NULL, SND_FILENAME | SND_ASYNC );

También existen otras funciones de nivel bajo que empiezan con el 
prefijo 'waveOut' para controlar la reproducción de sonidos, mientras 
que aquellas funciones con el prefijo 'waveIn' sirven para controlar la 
grabación de sonidos. Puedes echar un vistazo en MSDN. El enlace que te 
conviene es el siguiente: 
http://msdn2.microsoft.com/en-us/library/ms713499(VS.85).aspx

Otra forma es a través de la MCI, la cual ofrece una interfaz de alto 
nivel para varios dispositivos de multimedia. La forma más sencilla es 
usando la función 'mciSendString()' que acepta una cadena de caracteres 
a modo de comando. Por ejemplo,

mciSendString( "play misonido.wav alias misonido", NULL, 0, NULL );

Para detener el sonido:
mciSendString( "stop misonido", NULL, 0, NULL );

Existen más comandos y opciones. Encontrarás más información yendo a 
MSDN: http://msdn2.microsoft.com/en-us/library/ms704979(VS.85).aspx

Si quieres usar un fichero MIDI, entonces puedes usar el API específica 
para ello. De todas maneras, si lo único que quieres hacer es cargar un 
fichero y reproducirlo, entonces sugiero usar la MCI para ello. Por ejemplo,

mciSendString( "play mimusica.midi alias mimusica", NULL, 0, NULL );


También puedes echar un vistazo al artículo "Reproducción de sonidos con 
API de Windows" escrito por Xavier Covis en nuestra página. El enlace 
es: http://articulos.conclase.net/SoundWave/index.html


Espero que todo esto te ayude.

Steven







Más información sobre la lista de distribución Cconclase