Esempio n. 1
0
def stop():
    """stop(): return None
       stop the music playback"""
    check_mixer()
    sdl.Mix_HaltMusic()
    global _queue_music
    if _queue_music:
        sdl.Mix_FreeMusic(_queue_music)
        _queue_music = None
Esempio n. 2
0
def autoquit():
    global _channeldata, _numchanneldata, _current_music, \
           _queue_music
    if sdl.SDL_WasInit(sdl.SDL_INIT_AUDIO):
        sdl.Mix_HaltMusic()
        # cleanup
        if _channeldata:
            _channeldata = None
            _numchanneldata = 0
        if _current_music:
            sdl.Mix_FreeMusic(_current_music)
            _current_music = None
        if _queue_music:
            sdl.Mix_FreeMusic(_queue_music)
            _queue_music = None

        sdl.Mix_CloseAudio()
        sdl.SDL_QuitSubSystem(sdl.SDL_INIT_AUDIO)
Esempio n. 3
0
def fadeout(milliseconds):
    """ fadeout(time) -> None
    stop music playback after fading out
    """
    check_mixer()
    milliseconds = int(milliseconds)
    sdl.Mix_FadeOutMusic(milliseconds)
    global _queue_music
    if _queue_music:
        sdl.Mix_FreeMusic(_queue_music)
        _queue_music = None
Esempio n. 4
0
def load(obj):
    """load(filename): return None
       load(object): return None

       Load a music file for playback"""
    check_mixer()
    global _current_music, _queue_music
    if isinstance(obj, (bytes_, unicode_)):
        filename = rwops_encode_file_path(obj)
        new_music = sdl.Mix_LoadMUS(filename)
    else:
        rwops = rwops_from_file(obj)
        new_music = sdl.Mix_LoadMUS_RW(rwops)
    if not new_music:
        raise SDLError.from_sdl_error()

    # Cleanup
    if _current_music:
        sdl.Mix_FreeMusic(_current_music)
    if _queue_music:
        sdl.Mix_FreeMusic(_queue_music)
        _queue_music = None

    _current_music = new_music
Esempio n. 5
0
def _endmusic_callback():
    global _current_music, _queue_music, _music_pos, _music_pos_time
    if _endmusic_event is not None and sdl.SDL_WasInit(sdl.SDL_INIT_AUDIO):
        event.post(event.Event(_endmusic_event))

    if _queue_music:
        if _current_music:
            sdl.Mix_FreeMusic(_current_music)
        _current_music = _queue_music
        _queue_music = None
        sdl.Mix_HookMusicFinished(_endmusic_callback)
        _music_pos = 0
        sdl.Mix_PlayMusic(_current_music, 0)
    else:
        _music_pos_time = -1
        sdl.Mix_SetPostMix(ffi.NULL, ffi.NULL)
Esempio n. 6
0
def _endmusic_callback():
    global _current_music, _queue_music, _music_pos, _music_pos_time
    if _endmusic_event is not None and sdl.SDL_WasInit(sdl.SDL_INIT_AUDIO):
        # Pygame doesn't do the same checks for this path as in
        # event.post, and people rely on that, so we also duplicate
        # the logic
        event = ffi.new('SDL_Event*')
        event.type = _endmusic_event
        sdl.SDL_PushEvent(event)

    if _queue_music:
        if _current_music:
            sdl.Mix_FreeMusic(_current_music)
        _current_music = _queue_music
        _queue_music = None
        sdl.Mix_HookMusicFinished(_endmusic_callback)
        _music_pos = 0
        sdl.Mix_PlayMusic(_current_music, 0)
    else:
        _music_pos_time = -1
        sdl.Mix_SetPostMix(ffi.NULL, ffi.NULL)