[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