[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] loading ogg or mp3 files
If you want, I can post music.py, a set of functions for working with
music relatively easily.
Sure!
This might be useful to you:
## Music.py
## Easy functions for using music and sound in Python/Pygame.
## By Kris Schnee, borrowing heavily from Pygame's docs and examples.
import pygame, os.path
pygame.mixer.init()
MUSIC_ON = True
MUSIC_DEFAULT_SONG = "xenogears-village.mid" ## MIDI or MP3, in \graphics
PRELOAD_SONG = True ## Load default music to prevent a crash in case user
                    ## stupidly calls CueMusic(None) w/o loading a song?
def ToggleMusicEnabled(music_on=None):
    if music_on == True:
        MUSIC_ON = True
    elif music_on == False:
        MUSIC_ON = False
    else:## Toggle by default
        if MUSIC_ON:
            MUSIC_ON = False
        else:
            MUSIC_ON = True
def CueMusic(name=None, interrupt=True):
    ## If "interrupt" is True, the new song will play
    ## even if one is already playing.
    ## If "name" is None, the same song will play again.
    ## Warning: If no music has been loaded, calling this w/o name
    ## will cause a crash.
    global MUSIC_ON
    if not MUSIC_ON:
        return ## Never mind.
    if not interrupt:
        if pygame.mixer.music.get_busy():
            return ## It's busy; go away.
    pygame.mixer.music.stop()
    if name:
        pygame.mixer.music.load(name)
    pygame.mixer.music.play()
def StopMusic():
    pygame.mixer.music.stop()
def PlaySound(sound):
    if type(sound) is str: ## Have to load it first.
        x = pygame.mixer.Sound(SOUND)
    else:
        x = sound
    x.play()
def QuitMusic():
    """Shuts off Pygame's music code."""
    pygame.mixer.music.stop()
    pygame.mixer.quit()
##### AUTORUN #####
if __name__ == '__main__':
    print "Now playing default music as a test. Enjoy. (StopMusic() to 
quit.)"
    CueMusic(os.path.join("sound",MUSIC_DEFAULT_SONG))
else:
    if PRELOAD_SONG:
        pygame.mixer.music.load(os.path.join("sound",MUSIC_DEFAULT_SONG))
        StopMusic()