hi tout le monde...
Alors je suis en train de réaliser un petit jeu en C avec SDL et FMOD. Pour la partie musique, je souhaite lire plusieurs MP3. Pour cela, j'initialise un tableau qui contiendra tous les noms de mes différentes chansons... Jusque la rien de sorcier... Ce que je veux faire, c'est lire un le MP3 n°i et quand j'appuie sur une touche (dans mon cas pageUP ou pageDOWN), le programme arrete la lecture de ce dernier et lit le MP3 n°i+1.
Mon probleme et que la lecture du 1er MP3, se fait sans probleme mais des que je veux en charger un autre a la place, FMOD plante
Voila comment je m'y suis pris :
Tout d'abord la partie initialisation de FMOD, je fais appel à cette fonction :
Ensuite, au début de mon main, je charge le MP3 en faisant appel à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int initFMOD( void ) { if( FSOUND_Init( 44100 , 32 , 0 ) == FALSE ) { printf( "Echec dans l'initialisation de FMOD : %s\n" , FSOUND_GetError() ) ; } }
Rmq : la variable monMP3 est globale et est de type : FSOUND_STREAM*.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int chargeMP3( char *nomMP3 ) { if( !( monMP3 = FSOUND_Stream_Open( nomMP3, FSOUND_LOOP_NORMAL, 0 , 0)) ) { printf("Erreur dans le chargement du MP3 : %s\n",FSOUND_GetError() ) ; return EXIT_FAILURE ; } return EXIT_SUCCESS ; }
Et, je lance la lecture de la manirer suivante :
Jusque la pas de probleme, mon MP3 est lu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int canalMP3 = FSOUND_Stream_Play( FSOUND_FREE , monMP3 ) ;
Maintenant, le prog détecte un évènement SDL (l'appui sur la touche SDLK_PGUP) et effectue le traitement suivant :
Voila grosso modo, comment mon prgramme fonctionne... Je pense qu'il plante car j'arrete mal le 1er MP3 et qu'il essaye de charger le nouveau dans un espace mémoire déja occupé... Donc si quelqu'un peut m'aider ca me ferait plaisir...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 FSOUND_Stream_Stop(monMP3); /* J'arrete la lecture du MP3 courant */ chargeMP3( "monDeuxiemeMP3.mp3" ) ; /* Je charge le nouveau MP3 */ /* C'est la que ca plante !!! */ canalMP3 = lectureMP3() ; /* Je relance la lecture du nouveau MP3 */
Merci d'avance
Partager