Load Song and select State within that Song

Been at this for hours (and failed). Before I grind my teeth down any more …

I’ve got a Song with two States, Talk and Play.

I load Song from either of two MIDI events, M1 and M2.

What I would like to do is:

  • select state Talk if M1 loaded the song, and
  • select state Play if M2 loaded Song.

I have Background Rack bindings for M1 and M2 that both load Song.
I have bindings in Song for M1 and M2 to select states Talk and Play, respectively.
Both of these Song bindings are set to “Suppress”, preventing the M1 and M2 events from reaching the Background Rack if Song is already loaded (which would trigger a re-load).

Everything works great except: I cannot get M2 to load Song and then select the Play. I’ve tried adding state selection bindings in the Background paired with the song load binding, but they don’t work (maybe because the song load is not actually loaded when the state selection binding triggers?)

Yes, I could make two copies of Song, but that’s a slippery slope — I have similar situations with dozens of song states … I would need dozens of song copies (ugh) … defeating the purpose of states.

Another hack I’ve used is to have three MIDI triggers, one to load the song and two for state selection. Multiple taps is a pain in a live situation and wasteful of my MIDI trigger buttons. I also have to remember if my song is loaded or not. I’ve screwed that up more than once …

1 Like

I do similar things in a different way (and it works): put the state binding in the background rack, not in the song. So you have 4 bindings in the in the bg rack - and the order is important):

  • On M1 load song
  • On M1 select state Talk
  • On M2 load song
  • On M2 select state Play

I do similar but not identical things like, M1 select a song in a media player, then start the transport; M2 select a different song in a different media player, then start the transport. That works for me.

3 Likes

OK, that’s a winner, @Tom_Tollenaere!!

The gotcha is: things worked only after I changed the Song Load bindings to the (Instant) variants. I had been using the (Delayed) variants.

I actually changed all the 6 bindings from (Delayed) to (Instant) - the 4 in the background rack and the 2 in the song which change between States (and are marked Suppress to avoid the Song re-load).

It all works, and all actions - song loads and state changes - are noticeably faster.

2 Likes

@ClintGoss : It makes kinda sense that a delayed setup would NOT work: binding are executed in the order they are defined. If you load a song (delayed) then you don’t (yet) load a song; next binding is “set a state” which gets executed before your song is actually loaded… In this use case delaying things is all but guarantee that the orders get messed up;

1 Like