diff --git a/source/jaudio.cpp b/source/jaudio.cpp index e26394e..35b8ae5 100644 --- a/source/jaudio.cpp +++ b/source/jaudio.cpp @@ -1,4 +1,5 @@ #include "jaudio.h" +#include "jfile.h" #include #include #include @@ -19,7 +20,12 @@ namespace audio void init() { // Al final he ficat la configuració automàtica i au. Si en el futur necesitem canviar-ho pos se canvia - Mix_OpenAudio(48000, AUDIO_S16, 2, 1024); + if (Mix_Init(MIX_INIT_OGG)==0) { + printf("Failed Mix_Init()\n"); + } + if (Mix_OpenAudio(48000, AUDIO_S16, 2, 1024)!=0) { + printf("Failed Mix_OpenAudio()\n"); + } } // Tanca el sistema de só (no shit, sherlock) @@ -31,13 +37,34 @@ namespace audio // Carrega un arxiu de música en format OGG const music *loadMusic(const std::string filename) { - return (music *)Mix_LoadMUS(filename.c_str()); + size_t index = 0; + index = filename.find("mp3", index); + std::string peiv(filename); + peiv.replace(index, 3, "ogg"); + + printf("Loading '%s'...", peiv.c_str()); + + int filesize=0; + char *buffer = file::getFileBuffer(peiv, filesize); + const music* m = (music *)Mix_LoadMUS_RW(SDL_RWFromMem(buffer, filesize), 1); + + // [TODO] ATENCIÓ. Ací leakeja com un burro, algo hi ha que inventar, pero el buffer ha de sobreviure tot el temps que dure la musica viva + //free(buffer); + + if (m==nullptr) { + printf("FAILED!\n"); + } else { + printf("OK!\n"); + } + return m; } // Comença a reproduïr la música en questió void playMusic(const music *mus, const int loop) { - Mix_PlayMusic((Mix_Music *)mus, loop); + if (Mix_PlayMusic((Mix_Music *)mus, loop) == -1) { + printf("Failed Mix_PlayMusic()\n"); + } } // Pausa la música que està sonant ara @@ -61,7 +88,7 @@ namespace audio // Para la música que estava sonant fent un fade void fadeoutMusic() { - Mix_FadeOutMusic(250); + Mix_FadeOutMusic(500); } // Obté el estat actual de la música