diff --git a/includes/audio.h b/includes/audio.h index 319ab16..ad7bb12 100644 --- a/includes/audio.h +++ b/includes/audio.h @@ -8,11 +8,8 @@ // Charge et lance la musique void initialisationMusique(Mix_Music *, const char *); -// Renvoie le stream de la musique -Uint8 *musiqueStream(void); - -// Renvoie la taille du stream de la musique -int musiqueStreamTaille(void); +// Renvoie une moyenne de l'intensité du son +float moyenneMusique(void); // Libère la musique en mémoire void liberationMusique(Mix_Music *); diff --git a/src/audio.c b/src/audio.c index 5f5e606..778c8f6 100644 --- a/src/audio.c +++ b/src/audio.c @@ -3,24 +3,21 @@ #include "../includes/audio.h" // Stocke les données à propos de la musique -struct infos { - Uint8 *stream; - int taille; -} musique_infos; +static float moyenne; -Uint8 *musiqueStream(void) { - return musique_infos.stream; -} - -int musiqueStreamTaille(void) { - return musique_infos.taille; +float moyenneMusique(void) { + return moyenne; } void callback(void *_, Uint8 *stream, int taille) { (void)_; - musique_infos.stream = stream; - musique_infos.taille = taille; + int i = 0; + float moyenne_calcul = 0.f; + for(signed short * stream16 = (signed short *)stream; i < taille / 2; ++i) { + moyenne_calcul += stream16[i] / ((1 << 15) - 1.); + } + moyenne = fabs(moyenne_calcul / i); } void initialisationMusique(Mix_Music *musique, const char *filename) {