Behavior of On Song when you change Setlist

Hi.

I am using On Song() in a Gig Script to do some per-song setup whenever I select a new song. This works fine when I switch from one song to another within a setlist.

However, if I change to a new setlist (thus landing on the first song in the new setlist) On Song() apparently is not called and thus the desired setup does not happen as currently implemented.

I would have thought that the arrival at the (first, new) song in the new setlist would trigger On Song().

Was this a specific design decision, or more of an oversight?

Two questions -

  1. Should GP behave differently in this respect?

  2. Given the current GP behavior, what is the expected user action to accomplish/trigger setup of the new song (in the new setlist) when first chosen?

Thanks!

Sounds like a buglet - will add to our tracking system - thanks

1 Like

I can confirm on Mac, when a SetList is switched the onSong callback is not executed.

1 Like

I can imagine scenarios where having a song activate automatically upon changing setlists would not be desirable. To me it makes more sense to have to purposefully select a song in a setlist for it to be considered active.

1 Like

I can imagine different folks in different situations might want it either way.

If such a choice were to be accommodated, where would it be done? (as I see no ‘Setlist Properties’ area)

Since it is a Gig Script that is using On Song(), maybe On Song() should take an argument (or a setup call) to specify the behavior (?).

At current, the song selected in a setlist is the song that is recalled the next time you switch to that setlist—e.g Let’s say you were on Song 4 in Setlist “A” and then move to Setlist “B”. When you return to Setlist “A”, the song it moves to automatically will be Song 4.

Now, let’s image Song 4 in Setlist “A” was the last song in a set from a previous gig, that had a triggered File Player starting and lighting events upon moving to that song—it was for a finale type scenario.
So, a week later you’re at a new gig, haven’t done anything to Setlist “A” since—you’re in Setlist “B”.
You then realize you need to load a song from Setlist “A” —but it’s not Song 4.
You load Setlist “A” and—bam, the lights change and the File Player starts playing a song.

Do we really want that to be the default behavior?
If so, then how would one then move from one setlist to another without activating the song automatically selected in that new setlist?

I would say that if we had the ability to move from Setlist A, Song 3 to Setlist B, Song 7 in one selection, then what you suggest would make sense—you’re arriving at a specific, intentioned location.
However, since we have to move in stages instead—Choose Setlist B, and then choose Song 7—it creates an odd scenario where you initially arrive in a setlist without an intentioned destination, and that can be very awkward.

Arriving at a setlist and initially doing nothing seems fine and desirable (I agree), but then you need to be able to take an action to activate the song you arrived at without having to first switch to another (wrong) song. Having to switch to a “wrong” song before switching back to the “right” one creates the same problem you describe, but within a setlist rather than when switching setlists.

It’s tricky!

Yes, true----and your suggestion is more consistent with what already happens with SongPart actions and such. I just want to point out that since we can’t automatically select a destination in a new setlist, there can be pitfalls to automatically activating the song selected by switching to that new setlist–even when one isn’t using any scripting.

That may be worth doing. Or we could perhaps always select the first song of a setlist when switching and one could arrange for that song to be a “do nothing”

The problem with that is that the first song in a setlist is not necessarily the one that is automatically selected when switching setlists. It will switch to the song that was selected the last time the setlist was active. What’s wrong with selecting nothing at all?
switch

Which is why I suggested (above) that we might want to change that behavior so that when you switch set lists, you always get the first song

Why not select nothing instead? Then whichever song you select is done so purposefully, not by default. Paging through setlists doesn’t necessarily mean you want to switch to a song in that particular list–at least, not at that moment.

Because that is an entirely different and complicated notion that would break a lot of code.
In GP there is always something selected and to introduce the concept of nothing would require major changes to the code because we would now have to check if something is selected, all over the place, before continuing.
I don’t see the value of adding such a complication to solve his particular issue.

Not true.

  • Open a gig file that has songs in the All Songs list
  • Add a new setlist
  • Add songs to setlist

Nothing is selected.

It’s like the difference between adjusting a tax vs. introducing a tax. The former is reasonably easy (from now on the sales tax will be 8% instead of 7%) vs the latter (every company now has to start keeping track of all sales and have a system to collect taxes and send them to the government)

That’s a bug waiting to happen! I need to check that. Whenever you add a song the system should either switch it or stay with some already selected song.

But why? Each Song/songpart can have actions that are automatically triggered by switching to it. If you don’t specifically want that song, and subsequently those actions, then that is not desirable behavior. As per one of my above examples, consider a songpart in a song sending out DMX commands.

But that is why I suggested that when you switch setlists, you always get the very first item, which can be blank.

The dilemma here is the modeless model. In GP, we don’t really distinguish between editing (adding or removing songs, say) and performing so here is no notion of “nothing happens when you select a different part” if you are editing rather than performing.