int DM_Music_PlayFile(const char *filename, int looped) { if(!fmodSystem) return false; // Get rid of the current song. releaseSong(); releaseSongBuffer(); setDefaultStreamBufferSize(); FMOD_CREATESOUNDEXINFO extra; zeroStruct(extra); if(endsWith(soundFontFileName.c_str(), ".dls")) { extra.dlsname = soundFontFileName.c_str(); } FMOD_RESULT result; result = fmodSystem->createSound(filename, FMOD_CREATESTREAM | (looped? FMOD_LOOP_NORMAL : 0), &extra, &song); DSFMOD_TRACE("Music_Play: loaded '" << filename << "' => Sound " << song); DSFMOD_ERRCHECK(result); needReleaseSong = true; return startSong(); }
int DM_Music_Play(int looped) { if(!fmodSystem) return false; if(songBuffer) { // Get rid of the old song. releaseSong(); setDefaultStreamBufferSize(); FMOD_CREATESOUNDEXINFO extra; zeroStruct(extra); extra.length = songBuffer->size; if(endsWith(soundFontFileName.c_str(), ".dls")) { extra.dlsname = soundFontFileName.c_str(); } // Load a new song. FMOD_RESULT result; result = fmodSystem->createSound(songBuffer->data, FMOD_CREATESTREAM | FMOD_OPENMEMORY | (looped? FMOD_LOOP_NORMAL : 0), &extra, &song); DSFMOD_TRACE("Music_Play: songBuffer has " << songBuffer->size << " bytes, created Sound " << song); DSFMOD_ERRCHECK(result); needReleaseSong = true; // The song buffer remains in memory, in case FMOD needs to stream from it. } return startSong(); }
bool Music::loadSong(int songNumber) { debugC(kDebugLevelMusic, "Music: loadSong()"); if(songNumber == 100) songNumber = 55; else if(songNumber == 70) songNumber = 54; if((songNumber > 60) || (songNumber < 1)) return false; songNumber = ROOM_SONG[songNumber]; if(songNumber == 0) songNumber = 12; if((songNumber > NUM_SONGS) || (songNumber < 1)) return false; Common::String songName = Common::String(SONG_NAMES[songNumber - 1]); freeSong(); // free any song that is currently loaded stopMusic(); if (!playMusic(songName)) return false; startSong(); return true; }
/// @internal bool DMFmod_Music_PlaySound(FMOD::Sound* customSound, bool needRelease) { releaseSong(); releaseSongBuffer(); // Use this as the song. needReleaseSong = needRelease; song = customSound; return startSong(); }
bool Music::loadSong(const Common::String &songName) { freeSong(); // free any song that is currently loaded stopMusic(); if (!playMusic(songName)) return false; startSong(); return true; }