void Audio::stop() { stopBGM(); if (SoundCache == nullptr || SoundCache->isEmpty()) return; SoundCache->clear(); }
void GameAudioImpl::dispose() { stopBGM(0); stopBGS(0); stopME(); stopSE(); // 再生終了後の解放リストに入っているサウンドを解放 mReleaseAtPlayEndList.clear(); mBGM = nullptr; mBGS = nullptr; mME = nullptr; }
void Audio::stop() { if (System == NULL) return; int n; FMOD_System_GetChannelsPlaying(System, &n); QList<FMOD_CHANNEL *> channels; for (int i = 0; i < n; i++) { FMOD_CHANNEL *channel; FMOD_RESULT result = FMOD_System_GetChannel(System, i, &channel); if (result == FMOD_OK) channels << channel; } foreach (FMOD_CHANNEL * const &channel, channels) FMOD_Channel_Stop(channel); stopBGM(); FMOD_System_Update(System); }
void xaeBGMPlayer::setBGM(string filename) { if(NULL == m_pBGM) { m_pBGM = new xaeSound(filename, true, 0); m_pBGM->play(); m_pBGM->slide_to(BGM_FADE_TIMER, g_nVolume); m_szFilename = filename; } else { stopBGM(); if(NULL != m_pNxtBGM) { delete m_pNxtBGM; m_pNxtBGM = NULL; } m_pNxtBGM = new xaeSound(filename, true, 0); m_szNxtFilename = filename; } }
void ONScripter::flushEventSub( SDL_Event &event ) { if ( event.type == ONS_MUSIC_EVENT ){ if ( music_play_loop_flag || (cd_play_loop_flag && !cdaudio_flag ) ){ stopBGM( true ); if (music_file_name) playSound(music_file_name, SOUND_MUSIC, true); else playCDAudio(); } else{ stopBGM( false ); } } else if ((event.type == ONS_BGMFADE_EVENT) && (event.user.code == BGM_FADEOUT)){ Uint32 cur_fade_duration = mp3fadeout_duration_internal; if (skip_mode & (SKIP_NORMAL | SKIP_TO_EOP) || ctrl_pressed_status) { cur_fade_duration = 0; Mix_VolumeMusic( 0 ); } Uint32 tmp = SDL_GetTicks() - mp3fade_start; if ( tmp < cur_fade_duration ) { tmp = cur_fade_duration - tmp; tmp *= music_volume; tmp /= cur_fade_duration; Mix_VolumeMusic( tmp * MIX_MAX_VOLUME / 100 ); } else { char *ext = NULL; if (music_file_name) ext = strrchr(music_file_name, '.'); if (ext && (strcmp(ext+1, "OGG") && strcmp(ext+1, "ogg"))){ // set break event to return to script processing when playing music other than ogg SDL_RemoveTimer( break_id ); break_id = NULL; SDL_Event event; event.type = ONS_BREAK_EVENT; SDL_PushEvent( &event ); } stopBGM( false ); } } else if ((event.type == ONS_BGMFADE_EVENT) && (event.user.code == BGM_FADEIN)){ Uint32 cur_fade_duration = mp3fadein_duration_internal; if (skip_mode & (SKIP_NORMAL | SKIP_TO_EOP) || ctrl_pressed_status) { cur_fade_duration = 0; Mix_VolumeMusic( music_volume * MIX_MAX_VOLUME / 100 ); } Uint32 tmp = SDL_GetTicks() - mp3fade_start; if ( tmp < cur_fade_duration ) { tmp *= music_volume; tmp /= cur_fade_duration; Mix_VolumeMusic( tmp * MIX_MAX_VOLUME / 100 ); } else { if (timer_bgmfade_id) SDL_RemoveTimer( timer_bgmfade_id ); timer_bgmfade_id = NULL; mp3fadeout_duration_internal = 0; char *ext = NULL; if (music_file_name) ext = strrchr(music_file_name, '.'); if (ext && (strcmp(ext+1, "OGG") && strcmp(ext+1, "ogg"))){ // set break event to return to script processing when playing music other than ogg SDL_RemoveTimer( break_id ); break_id = NULL; SDL_Event event; event.type = ONS_BREAK_EVENT; SDL_PushEvent( &event ); } } } else if ( event.type == ONS_CDAUDIO_EVENT ){ if ( cd_play_loop_flag ){ stopBGM( true ); playCDAudio(); } else{ stopBGM( false ); } } else if ( event.type == ONS_MIDI_EVENT ){ ext_music_play_once_flag = !midi_play_loop_flag; Mix_FreeMusic( midi_info ); playMIDI(midi_play_loop_flag); } else if ( event.type == ONS_CHUNK_EVENT ){ // for processing btntim2 and automode correctly if ( wave_sample[event.user.code] ){ Mix_FreeChunk( wave_sample[event.user.code] ); wave_sample[event.user.code] = NULL; if (event.user.code == MIX_LOOPBGM_CHANNEL0 && loop_bgm_name[1] && wave_sample[MIX_LOOPBGM_CHANNEL1]) Mix_PlayChannel(MIX_LOOPBGM_CHANNEL1, wave_sample[MIX_LOOPBGM_CHANNEL1], -1); } } }
void CJMultimedia::stopAllSound() { SimpleAudioEngine::sharedEngine()->stopAllEffects(); stopBGM(); stopAllNarration(); }
void PonscripterLabel::flushEventSub(SDL_Event &event) { if (event.type == ONS_SOUND_EVENT) { if (music_play_loop_flag) { stopBGM(true); if (music_file_name) playSound(music_file_name, SOUND_OGG_STREAMING | SOUND_MP3, true); } else { stopBGM(false); } } // The event handler for the mp3 fadeout event itself. Simply sets the volume of the mp3 being played lower and lower until it's 0, // and until the requisite mp3 fadeout time has passed. Recommend for integration. [Seung Park, 20060621] else if (event.type == ONS_FADE_EVENT) { if (skip_flag || draw_one_page_flag || ctrl_pressed_status || skip_to_wait) { mp3fadeout_duration = 0; if (mp3_sample) SMPEG_setvolume(mp3_sample, 0); } Uint32 tmp = SDL_GetTicks() - mp3fadeout_start; if (tmp < mp3fadeout_duration) { tmp = mp3fadeout_duration - tmp; tmp *= music_volume; tmp /= mp3fadeout_duration; if (mp3_sample) SMPEG_setvolume(mp3_sample, tmp); } else { SDL_RemoveTimer(timer_mp3fadeout_id); timer_mp3fadeout_id = 0; event_mode &= ~WAIT_TIMER_MODE; stopBGM(false); advancePhase(); } } else if (event.type == ONS_MIDI_EVENT) { #ifdef MACOSX if (!Mix_PlayingMusic()) { ext_music_play_once_flag = !midi_play_loop_flag; Mix_FreeMusic(midi_info); playMIDI(midi_play_loop_flag); } #else ext_music_play_once_flag = !midi_play_loop_flag; Mix_FreeMusic(midi_info); playMIDI(midi_play_loop_flag); #endif } else if (event.type == ONS_MUSIC_EVENT) { ext_music_play_once_flag = !music_play_loop_flag; Mix_FreeMusic(music_info); playExternalMusic(music_play_loop_flag); } else if (event.type == ONS_WAVE_EVENT) { // for processing btntim2 and automode correctly if (wave_sample[event.user.code]) { Mix_FreeChunk(wave_sample[event.user.code]); wave_sample[event.user.code] = NULL; if (event.user.code == MIX_LOOPBGM_CHANNEL0 && loop_bgm_name[1] && wave_sample[MIX_LOOPBGM_CHANNEL1]) Mix_PlayChannel(MIX_LOOPBGM_CHANNEL1, wave_sample[MIX_LOOPBGM_CHANNEL1], -1); } } }