Programación General > C/C++
SDL mixer
(1/1)
Cebollo:
Buenas, estoy teniendo problemas a la hora de usar esta librería para incorparar varios sonidos simultáneos a un juego.
El problema que tengo es que solo se escucha un sonido simultáneo, únicamente el que está en el canal 0.
He comprobando si los demás canales suenan con esta función Mix_Playing(canal) y me dicen que sí.
¿Qué puede esar pasando? ¿Puede ser cosa de mi tarjeta de sonido?
El código es el siguiente:
SDL_Init(SDL_INIT_AUDIO);
Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096);
Mix_AllocateChannels(10);
Mix_Chunk *sonido, *sonido2;
sonido = Mix_LoadWAV("Audio/Explosion.wav");
sonido2 = Mix_LoadWAV("Audio/Disparo.wav");
Mix_PlayChannel(0, sonido, 0);
Mix_PlayChannel(1, sonido2, 0);
Geo:
Acabo de probar un código basado en el tuyo y no he tenido problemas reproduciendo el audio, prueba revisando los valores devueltos por cada función. También, revisar que el problema no sea tu sistema, ¿en qué estás trabajando?
--- Código: C++ ---#include <SDL.h>#include <SDL_mixer.h> int main() { if ( SDL_Init( SDL_INIT_AUDIO ) < 0 ) { fprintf( stderr, "%sn", SDL_GetError() ); exit( 1 ); } if ( Mix_OpenAudio( MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096 ) < 0 ) { fprintf( stderr, "%sn", SDL_GetError() ); exit( 1 ); } Mix_AllocateChannels( 10 ); Mix_Chunk* sonido1; Mix_Chunk* sonido2; Mix_Chunk* sonido3; sonido1 = Mix_LoadWAV( "borrego1.wav" ); sonido2 = Mix_LoadWAV( "gallo1.wav" ); sonido3 = Mix_LoadWAV( "vaca1.wav" ); Mix_PlayChannel( 0, sonido1, 0 ); Mix_PlayChannel( 1, sonido2, 0 ); Mix_PlayChannel( 2, sonido3, 0 ); SDL_Delay( 3000 ); Mix_FreeChunk( sonido3 ); Mix_FreeChunk( sonido2 ); Mix_FreeChunk( sonido1 ); Mix_CloseAudio(); SDL_Quit(); return 0;}
Navegación
Ir a la versión completa