#include "Sounderer.h" Sounderer::Sounderer() : m_lastCanal(-1), m_folder(""), m_musicName(""), m_music(0x0) {} Sounderer::Sounderer(std::string folder) : m_lastCanal(-1), m_folder(folder), m_musicName(""), m_music(0x0) {} Sounderer::~Sounderer() { // Musique if (m_music != 0x0) Mix_FreeMusic(m_music); // Canaux for( m_it = m_paquet.begin(); m_it != m_paquet.end(); m_it++ ) if (m_it->second != 0x0) { //Libération mémoire Mix_FreeChunk(m_it->second); m_it->second = 0x0; } } bool Sounderer::init() { ///SDL extend init SDL_InitSubSystem(SDL_INIT_AUDIO); ///Implémentation des paramètres m_rate = 22050; m_format = AUDIO_S16SYS; m_nbChannels = 2; m_bufferSize = 4096; ///Démarrage du mixer avec les paramètres désirés if ( Mix_OpenAudio(m_rate, m_format, m_nbChannels, m_bufferSize) != 0 ) { std::cout <<"Impossible d'initialiser le système audio SDL_mixer avec les paramètres définis : "< 1 :" << Mix_GetError() << std::endl; return false; } } /// 2 Charge si la musique est différente else if (musicName != m_musicName) { // Charge la nouvelle musique Mix_Music* otherMusic(0x0); otherMusic = Mix_LoadMUS( (m_folder + musicName + ".wav").c_str()); // Si la nouvelle musique est bien chargée, on l'attribue if (otherMusic == 0x0) std::cout << "Sounderer::startMusic > 2 :" << Mix_GetError() << std::endl; else { Mix_FreeMusic(m_music); m_music = otherMusic; otherMusic = 0x0; m_musicName = musicName; } } /// 3 Lancement de l'extrait et sécurité if (Mix_FadeInMusic(m_music, INFINITY_LOOP, 3692) == 0) return true; else { std::cout << "Sounderer::startMusic > 3 :" << Mix_GetError() << std::endl; return false; } } void Sounderer::assignFolder(std::string folder) { m_folder = folder; }