/*! * Stops the music with a fadeout. * \param ms The length in milliseconds of the fade out. */ void SdlMixerMusic::stopFadeOut(int ms) const { while (!Mix_FadeOutMusic(ms) && Mix_PlayingMusic()) { SDL_Delay(100); } Mix_RewindMusic(); }
void sndMusic::Rewind() { if ( m_playing ) { Mix_RewindMusic(); m_startTick = sysTimer::Instance()->GetMicroseconds(); } }
static void free_music(void) { if (!info.music) return; Mix_HaltMusic(); Mix_RewindMusic(); Mix_FreeMusic(info.music); info.music = NULL; }
void sndMusic::Start() { int loops = (m_looping)?-1:1; if ( m_playing ) Mix_HaltMusic(); if(Mix_PlayMusic(m_music, loops)!=-1) { m_playing = true; Mix_RewindMusic(); // this is stupid, but it's the only way I've found to Mix_RewindMusic(); // make SDL_Mixer start playing at a reliable place and time. Mix_RewindMusic(); // Why three calls? I don't know. But it works, as a hack. :( // (Without this, there was up to a 1 second uncertainty in when music actually started) m_startTick = sysTimer::Instance()->GetMicroseconds(); } else printf("Mix_PlayMusic: %s\n", Mix_GetError()); // well, there's no music, but most games don't break without music, so don't assert. }
void ReplayWave ( int no ) { switch ( s_iYGSSoundType[no] ) { case YGS_SOUNDTYPE_WAV: Mix_Resume(no); break; case YGS_SOUNDTYPE_MUS: Mix_RewindMusic(); break; } }
void SoundManager::pauseMusic() { if (m_state != ERROR) { // If music is playing, handle the pause request if (Mix_PlayingMusic() == 1) { if (Mix_PausedMusic() == 1) { // If the music is already paused, resume it with a rewind Mix_RewindMusic(); Mix_PlayMusic(m_music, -1); m_state = PLAYING; } else { // Otherwise, pause the music Mix_PauseMusic(); m_state = PAUSED; } } } }
void CMusic::Rewind() { Mix_RewindMusic(); }
int main( int argc, char* args[] ) { int quit = false; if( init() == false ) { return false; } if( load_files() == false ) { return false; } apply_surface( 0, 0, background, screen ); message = TTF_RenderText_Solid( font, "Start game", textColor ); if( message == NULL ) { return false; } apply_surface( ( SCREEN_WIDTH - message->w ) / 2, 100, message, screen ); SDL_FreeSurface( message ); message = TTF_RenderText_Solid( font, "Options", textColor ); if( message == NULL ) { return false; } apply_surface( ( SCREEN_WIDTH - message->w ) / 2, 200, message, screen ); SDL_FreeSurface( message ); message = TTF_RenderText_Solid( font, "Exit", textColor ); if( message == NULL ) { return false; } apply_surface( ( SCREEN_WIDTH - message->w ) / 2, 300, message, screen ); SDL_FreeSurface( message ); message = TTF_RenderText_Solid( font, "Press 9 to play/pause the music", textColor ); if( message == NULL ) { return false; } apply_surface( ( SCREEN_WIDTH - message->w ) / 2, 400, message, screen ); SDL_FreeSurface( message ); message = TTF_RenderText_Solid( font, "Press 0 to stop the music", textColor ); if( message == NULL ) { return false; } apply_surface( ( SCREEN_WIDTH - message->w ) / 2, 500, message, screen ); SDL_FreeSurface( message ); if( SDL_Flip( screen ) == -1 ) { return false; } while( quit == false ) { while( SDL_PollEvent( &event ) ) { if( event.type == SDL_KEYDOWN ) { if( event.key.keysym.sym == SDLK_6) { Mix_RewindMusic(); if(Mix_SetMusicPosition(60.0)==-1) { return false; } } else if( event.key.keysym.sym == SDLK_9 ) { if( Mix_PlayingMusic() == 0 ) { if( Mix_PlayMusic( music, -1 ) == -1 ) { return false; } } else { if( Mix_PausedMusic() == 1 ) { Mix_ResumeMusic(); } else { Mix_PauseMusic(); } } } else if( event.key.keysym.sym == SDLK_0 ) { Mix_HaltMusic(); } } if( event.type == SDL_QUIT ) { quit = true; } } } clean_up(); return 0; }
void Music::restart() { Mix_RewindMusic(); }
void SoundManager::stopBackground() { Mix_PauseMusic(); Mix_RewindMusic(); }
void Music::Pause() { Mix_RewindMusic (); }
/*! * Stops the music from playing. */ void SdlMixerMusic::stop() const { Mix_HaltMusic(); Mix_RewindMusic(); }
static mrb_value mrb_sdl2_mixer_rewind_music(mrb_state *mrb, mrb_value self) { Mix_RewindMusic(); return mrb_nil_value(); }
/* On arrete la lecture du midi et on repart du debut */ void StopMidi() { Mix_HaltMusic(); Mix_RewindMusic(); }
bool SDLAudio::RewindMUS(void) { Mix_RewindMusic(); return true; }
void Music::rewind() { Mix_RewindMusic(); }
int main(int argc, char **argv) { int audio_rate,audio_channels; Uint16 audio_format; Uint32 t; Mix_Music *music; int volume=SDL_MIX_MAXVOLUME; /* initialize SDL for audio and video */ if(SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO)<0) cleanExit("SDL_Init"); atexit(SDL_Quit); int initted=Mix_Init(0); printf("Before Mix_Init SDL_mixer supported: "); print_init_flags(initted); initted=Mix_Init(~0); printf("After Mix_Init SDL_mixer supported: "); print_init_flags(initted); Mix_Quit(); if(argc<2 || argc>4) { fprintf(stderr,"Usage: %s filename [depth] [any 3rd argument...]\n" " filename is any music file supported by your SDL_mixer library\n" " depth is screen depth, default is 8bits\n" " if there is a third argument given, we go fullscreen for maximum fun!\n", *argv); return 1; } /* open a screen for the wav output */ if(!(s=SDL_SetVideoMode(W,H,(argc>2?atoi(argv[2]):8),(argc>3?SDL_FULLSCREEN:0)|SDL_HWSURFACE|SDL_DOUBLEBUF))) cleanExit("SDL_SetVideoMode"); SDL_WM_SetCaption("sdlwav - SDL_mixer demo","sdlwav"); /* hide the annoying mouse pointer */ SDL_ShowCursor(SDL_DISABLE); /* get the colors we use */ white=SDL_MapRGB(s->format,0xff,0xff,0xff); black=SDL_MapRGB(s->format,0,0,0); /* initialize sdl mixer, open up the audio device */ if(Mix_OpenAudio(44100,MIX_DEFAULT_FORMAT,2,BUFFER)<0) cleanExit("Mix_OpenAudio"); /* we play no samples, so deallocate the default 8 channels... */ Mix_AllocateChannels(0); /* print out some info on the formats this run of SDL_mixer supports */ { int i,n=Mix_GetNumChunkDecoders(); printf("There are %d available chunk(sample) decoders:\n",n); for(i=0; i<n; ++i) printf(" %s\n", Mix_GetChunkDecoder(i)); n = Mix_GetNumMusicDecoders(); printf("There are %d available music decoders:\n",n); for(i=0; i<n; ++i) printf(" %s\n", Mix_GetMusicDecoder(i)); } /* print out some info on the audio device and stream */ Mix_QuerySpec(&audio_rate, &audio_format, &audio_channels); bits=audio_format&0xFF; sample_size=bits/8+audio_channels; rate=audio_rate; printf("Opened audio at %d Hz %d bit %s, %d bytes audio buffer\n", audio_rate, bits, audio_channels>1?"stereo":"mono", BUFFER ); /* calculate some parameters for the wav display */ dy=s->h/2.0/(float)(0x1<<bits); /* load the song */ if(!(music=Mix_LoadMUS(argv[1]))) cleanExit("Mix_LoadMUS(\"%s\")",argv[1]); { Mix_MusicType type=Mix_GetMusicType(music); printf("Music type: %s\n", type==MUS_NONE?"MUS_NONE": type==MUS_CMD?"MUS_CMD": type==MUS_WAV?"MUS_WAV": /*type==MUS_MOD_MODPLUG?"MUS_MOD_MODPLUG":*/ type==MUS_MOD?"MUS_MOD": type==MUS_MID?"MUS_MID": type==MUS_OGG?"MUS_OGG": type==MUS_MP3?"MUS_MP3": type==MUS_MP3_MAD?"MUS_MP3_MAD": type==MUS_FLAC?"MUS_FLAC": "Unknown"); } /* set the post mix processor up */ Mix_SetPostMix(postmix,argv[1]); SDL_FillRect(s,NULL,black); SDL_Flip(s); SDL_FillRect(s,NULL,black); SDL_Flip(s); /* start playing and displaying the wav */ /* wait for escape key of the quit event to finish */ t=SDL_GetTicks(); if(Mix_PlayMusic(music, 1)==-1) cleanExit("Mix_PlayMusic(0x%p,1)",music); Mix_VolumeMusic(volume); while((Mix_PlayingMusic() || Mix_PausedMusic()) && !done) { SDL_Event e; while(SDL_PollEvent(&e)) { switch(e.type) { case SDL_KEYDOWN: switch(e.key.keysym.sym) { case SDLK_ESCAPE: done=1; break; case SDLK_LEFT: if(e.key.keysym.mod&KMOD_SHIFT) { Mix_RewindMusic(); position=0; } else { int pos=position/audio_rate-1; if(pos<0) pos=0; Mix_SetMusicPosition(pos); position=pos*audio_rate; } break; case SDLK_RIGHT: switch(Mix_GetMusicType(NULL)) { case MUS_MP3: Mix_SetMusicPosition(+5); position+=5*audio_rate; break; case MUS_OGG: case MUS_FLAC: case MUS_MP3_MAD: /*case MUS_MOD_MODPLUG:*/ Mix_SetMusicPosition(position/audio_rate+1); position+=audio_rate; break; default: printf("cannot fast-forward this type of music\n"); break; } break; case SDLK_UP: volume=(volume+1)<<1; if(volume>SDL_MIX_MAXVOLUME) volume=SDL_MIX_MAXVOLUME; Mix_VolumeMusic(volume); break; case SDLK_DOWN: volume>>=1; Mix_VolumeMusic(volume); break; case SDLK_SPACE: if(Mix_PausedMusic()) Mix_ResumeMusic(); else Mix_PauseMusic(); break; default: break; } break; case SDL_QUIT: done=1; break; default: break; } } /* the postmix processor tells us when there's new data to draw */ if(need_refresh) refresh(); SDL_Delay(0); } t=SDL_GetTicks()-t; /* free & close */ Mix_FreeMusic(music); Mix_CloseAudio(); SDL_Quit(); /* show a silly statistic */ printf("fps=%.2f\n",((float)flips)/(t/1000.0)); return(0); }
void stop_music(void) { Mix_RewindMusic(); Mix_HaltMusic(); }