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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#include <stdio.h>
#include <SDL.h>
#include <FMOD/fmod.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *pochette = NULL;
SDL_Event event;
SDL_Rect position;
int continuer = 1, canal;
FSOUND_STREAM *musique = NULL;
if(SDL_Init(SDL_INIT_VIDEO)<0) {
fprintf(stderr, "Impossible de lancer SDL\n");
return EXIT_FAILURE;
}
if(FSOUND_Init(44100, 32, 0) == 0) {
fprintf(stderr, "Impossible de lancer FSOUND_Init\n");
perror("");
return EXIT_FAILURE;
}
/* Preparation du son */
musique = FSOUND_Stream_Open("essai.mp3", FSOUND_LOOP_NORMAL, 0, 0); /* On ouvre la musique */
if (musique == NULL) /* On vérifie si elle a bien été ouverte (IMPORTANT) */
{
fprintf(stderr, "Impossible de lire essai.mp3\n");
return EXIT_FAILURE;
}
FSOUND_Stream_SetLoopCount(musique, -1); /* On active la répétition de la musique à l'infini */
/* Ouverture de la fenêtre */
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
if(ecran == NULL) {
fprintf(stderr, "Impossible d'ouvrir la fenetre\n");
FSOUND_Stream_Close(musique);
SDL_Quit();
FSOUND_Close();
return EXIT_FAILURE;
}
/* Lancement du son */
canal = FSOUND_Stream_Play(FSOUND_FREE, musique); /* On joue la musique */
if(canal == -1) {
fprintf(stderr, "Impossible de jouer essai.mp3\n");
FSOUND_Stream_Close(musique);
continuer = 0;
}
SDL_WM_SetCaption("Gestion du son avec FMOD", NULL);
/* Boucle generale */
while (continuer)
{
if(SDL_WaitEvent(&event) == 0) {
fprintf(stderr, "Probleme avec SDL_WaitEvent\n");
break;
}
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
if (event.key.keysym.sym == SDLK_p) //Si on appuie sur P
{
if (FSOUND_GetPaused(canal)) {// Si la chanson est en pause (sur le canal 1)
FSOUND_SetPaused(canal,0); // On enlève la pause
}
else { // Sinon, elle est en cours de lecture
FSOUND_SetPaused(canal,1); // On active la pause
}
}
break;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
SDL_Flip(ecran);
}
FSOUND_Stream_Close(musique); /* On libère la mémoire */
FSOUND_Close();
SDL_FreeSurface(pochette);
SDL_Quit();
return EXIT_SUCCESS;
} |