Yes, what you're seeing is normal behavior, at least in the rarefied air of the seamless soundtrack. Basically, Ren'Py has three things its considering when it's playing music:
* The currently playing track.
* A list of queued tracks. (the "queue")
* A list of tracks that will be added to the queue if it ever gets empty. (the "loop")
When you call renpy.music.play:
* the currently playing track is stopped
* the queue is cleared out
* your track is added to the queue
* the loop is set to a list containing your track
When you call renpy.music.queue:
* the queue is optionally cleared out
* your track is added to the queue
* the loops is set to a list containing your track
Due to the way Ren'Py is implemented, tracks only start playing while inside an interaction. Whenever we're in an interaction with no currently playing track, we take the first one in the queue, remove it from the queue, and play it. If the queue is empty and the loop is not, we add the loop to the end of the queue.
So what's happening with your code is that the old music is stopped, the queue is cleared out, pla_intro is added to the queue, the queue is cleared out again, pla_play is added to it, and only then does an interaction occur, causing pla_play to start playing.
What you want to do is to disable the clearing of the queue as part of the queue statement, which you can do by setting clear_queue=False. So something like this:
Code: Select all
$ renpy.music.play(pla_intro)
$ renpy.music.queue(pla_play, clear_queue=False)
will do what you want.
The pass statement isn't equivalent to renpy.pause... it's simply a control flow statement that never causes an interaction to occur.