diff --git a/Makefile b/Makefile index 3f0c76b..060c514 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ else endif CPPFLAGS += $(shell sdl2-config --cflags) -LDFLAGS += -lGL4Dummies $(shell sdl2-config --libs) +LDFLAGS += -lGL4Dummies $(shell sdl2-config --libs) -lSDL2_mixer %.o: %.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ diff --git a/includes/audio.h b/includes/audio.h new file mode 100644 index 0000000..2dc64b5 --- /dev/null +++ b/includes/audio.h @@ -0,0 +1,14 @@ +/* TP7 */ + +#ifndef DEMO_AUDIO_HPP +#define DEMO_AUDIO_HPP 1 + +#include + +// Charge et lance la musique +void initialisationMusique(Mix_Music *, const char *); + +// Libère la musique de la mémoire +void liberationMusique(Mix_Music *); + +#endif diff --git a/src/audio.c b/src/audio.c new file mode 100644 index 0000000..53914f4 --- /dev/null +++ b/src/audio.c @@ -0,0 +1,26 @@ +/* TP7 */ + +#include "../includes/audio.h" + +void initialisationMusique(Mix_Music *musique, const char *filename) { + Mix_Init(MIX_INIT_OGG); + Mix_OpenAudio(44100, AUDIO_S16LSB, 2, 1024); + musique = Mix_LoadMUS(filename); + + Mix_VolumeMusic(MIX_MAX_VOLUME / 10); + + Mix_PlayMusic(musique, 1); +} + +void liberationMusique(Mix_Music *musique) { + if(musique) { + if(Mix_PlayingMusic()) { + Mix_HaltMusic(); + } + Mix_FreeMusic(musique); + musique = NULL; + } + + Mix_CloseAudio(); + Mix_Quit(); +} diff --git a/window.c b/window.c index cbefefc..822793d 100644 --- a/window.c +++ b/window.c @@ -1,9 +1,14 @@ #include #include "includes/animations.h" +#include "includes/audio.h" + +static Mix_Music * ambiance = NULL; // Comportement à la fermeture du programme void fermeture(void) { + liberationMusique(ambiance); + gl4duClean(GL4DU_ALL); } @@ -23,6 +28,8 @@ int main(int argc, char *argv[]) { { 0, NULL, NULL, NULL } }; + initialisationMusique(ambiance, "audio/ambiance.ogg"); + gl4dhInit(animations, dimensions[0], dimensions[1], NULL); atexit(fermeture);