Greetings, Urtling. There's a few ways, I think, and maybe more.

1. When you fade the song that's playing, also queue the next song at that
time: pygame.mixer.music.queue(). No fuss. The next song will start playing
immediately.

2. Tell Pygame to send an event when a song stops playing:
pygame.mixer.music.set_event(). As I recall, you have to use a valid Pygame
event type, such as something between USEREVENT and NUMEVENTS. Because this
passes control to your program, you can employ a programmed delay before the
next song.

3. Your game loop can check if the song is playing and start it up if it's
not: pygame.mixer.music.get_busy(). Likewise, this supports the option of a
programmed delay.

Gumm

On Tue, Jul 6, 2010 at 5:14 PM, Fawkes <fawkesga...@gmail.com> wrote:

> Hello,
>
> I need some help with using Pygame's music module. Specifically, is
> there a way to fade between two songs?
>
> Suppose I have a song playing called via:
>
> pygame.mixer.music.load('song1.ogg')
> pygame.mixer.music.play(-1)
>
> I tried to use Pygame's Music Module's fadeout, but that didn't work:
>
> [Song is already playing]
>
> pygame.mixer.music.fadeout(1000)
> pygame.mixer.music.load('song2.ogg')
> pygame.mixer.music.play(-1)
>
> The music fadeout function seems to block out all input during that
> time (Despite comments to the contrary in the documentation). I'd like
> to transition smoothly between those songs without blocking the user's
> input. Is there a good way to do this?
>
> Thanks in advance.
> -Fawkes
>

Reply via email to