Impossible de lire un fichier en boucle
Bonjour,
La fonction de FMOD qui est censée jouer ma musique en boucle ne marche pas. Le reste marche bien, le son est joué, mais une seule fois. Est-ce que quelqu'un aurait la solution ? Merci !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "fmodex/fmod.h"
void events()
{
SDL_Event event;
int continuer;
continuer = 1;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE:
continuer = 0;
break;
default:
break;
}
break;
default:
break;
}
}
}
typedef struct s_music
{
FMOD_SYSTEM *system;
FMOD_SOUND *music;
FMOD_RESULT result;
} t_music;
void music(char *path, t_music *m)
{
FMOD_System_Create(&m->system);
FMOD_System_Init(m->system, 1, FMOD_INIT_NORMAL, NULL);
m->result = FMOD_System_CreateSound(m->system, path, FMOD_SOFTWARE
| FMOD_2D | FMOD_CREATESTREAM, 0, &m->music);
if (m->result != FMOD_OK)
printf("unable to load music file.\n");
FMOD_Sound_SetLoopCount(m->music, -1);
/* c'est la ligne du dessus qui est censée jouer la musique en boucle */
FMOD_System_PlaySound(m->system, FMOD_CHANNEL_FREE, m->music, 0, NULL);
}
void music_close(t_music *m)
{
FMOD_Sound_Release(m->music);
FMOD_System_Release(m->system);
FMOD_System_Close(m->system);
}
int main(int ac __attribute__((unused)), char **av __attribute__((unused)))
{
t_music m;
if (SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTTHREAD) == -1)
printf("SDL error: %s\n", SDL_GetError());
music("jaguar.wav", &m);
events();
music_close(&m);
SDL_Quit();
return (0);
} |
EDIT : Résolu, il fallait ajouter FMOD_LOOP_NORMAL à FMOD_System_CreateSound();