Ok, I'm getting myself in a mess now!

Ok, this is going to be another long post I’m afraid, so apologies…

From the previous saga, you may have worked out what I’m trying to do. I’m trying to set up a general song that has a selection of oft used sounds so that I can do gigs (2 keyboards) that have no specific list of songs or sets.

I’ve got a song that has 2 linked racks, one for each keyboard:

Inside each of these racks are embedded racks that select categories of sound using states (this is the main Board one)

As you can see, there are four states and four racks, one for each category of sound. These are selected by the pad buttons on my Keylab MKII and the light colours are sent from the Pad Lights rack fine. This works great because the Categories are exclusive, ie, I don’t want to have the Piano and Clav Categories enabled at the same time.

So, in the sub racks, (this is the Rhodes Rack)

There are sounds in the category and in this case a couple of effects that I can switch in and out. Again, the bindings are working fine and once in the sub state, the lights do what I want.
My issue comes when I want to switch between categories of sounds…

Say for example, when I’ve switched to my Rhodes Rack, I’ve selected 80s Rhodes. Then I switch to Piano. The channel lights which are contolled by the ‘Categories’ racks, not the ‘Main Board’ racks don’t update to show the current state of the rack… (If that makes sense) What I want is for the bindings that control the lights to refire when I re-select the ‘Categories’ rack to show the rack state that it was in when I left it. I can do this by resetting the Categories rack every time that I select it but I don’t want that because, for example if I wanted to go from state 2 in the Clav rack to state 3 in the Rhodes rack back and forth in a song, if I reset the racks on switching every time to make the lights right for the first state, I’d have to Switch song, then hit the right sub sound button, adjust the effects etc every time.

Basically, I want the categories racks to stay in the same state I leave them but to fire the right bindings when I reselect them to light the right lights to reflect what’s going on in the rack… (I’m hoping this makes sense to someone!)

Basically, I need a binding at the ‘Main Board Rack’ level to tell Cantabile to re-send all the bindings when I select the ‘Categories’ racks. I’ve tried various ‘States’ ‘On Load’ bindings, but there seem to be none that will do what I want? (It’s entirely possible that I’ve missed an obvious one!)

Thanks again, I’m sure @terrybritton, @dave_dore, @Tom_Tollenaere, @Torsten or @brad will know what I’m missing…

As always, in this great group, thanks in advance for any help! (I’m sure I’m trying to do something truly awkward, but that seems to be my way in life!)

Cheers,

P

Ok, so I’ve discovered that if I suspend and resume the running of the channel lights racks, it resends the light information, so I created bindings that do that on state load:

The problem with that is, that they don’t fire when I go back to the Rhodes rack, because the state is already loaded… So, I guess what I’m trying to find is how to get Cantabile to ‘refire’ a rack state without changing it from what it was… (or just fire the bindings again from where they were)

:joy: :rofl: :exploding_head:

P

For me if I want a rack state to stay in the state it is in after i focus away from it and then back is to set the rack state behaviors for the rack in question so that it stays where you left last by unchecking the Selected Rack State and the Exported State boxes. That’s the only easy way I know to do what you want and I am not sure if it will adversely affect the rest of the racks and such. It should be ok but would need some experimenting with to see how it behaved. Try it out and we’ll see what comes of it.

SnapShot 334

Cheers,

Dave

Yes, I can do that @dave_dore. The rack is staying in the state I left it in. What I need it to do is refire the bindings that set the lights etc. as the different category racks have different set ups as far as the lights go. All the behaviours are fine as far as what the racks are actually doing but I’m having problems with the lights being in the wrong states until I push them to get the state to change once the Category state is pushed…

See below for what I mean…

So, here’s the pad lights for the Piano Category rack setting. These are controlled by Rack States of the Pad lights Rack in the ‘Main Board’ Rack. (They’re exclusive, like I said so I just have to set the colour of each light with states of the pad lights racks)

Here’s what they look like with the Rhodes rack selected:

And here’s the channel lights as I want them set up in the piano rack:

The control of these lights is done within each category rack. In this case, the two blue buttons toggle a strings layer and a pad layer on and off and the bindings change the state of the Channel Lights racks from Blue to White, so I can see which layer is on or off. So far, so good.

Then I change to the Rhodes rack and this is what I want to see:

So, I’ve got 3 different Rhodes sounds that are selected by the blue lights. They go white when one is selected, radio button style. The red lights are a chorus and a phaser, which light red when bypassed and green when on.

So, my issue is this. If I start with the piano sound selected (here with the pad layer on) and go to the Rhodes sound, I get this:

which is the state of the lights as they were in the piano sound.

If I push all the buttons that I know are supposed to be lit in the Rhodes sound, they catch up and sync with the states in the rack, and all is now working properly. Like this:

However, when I go back to the piano sound, the lights stay as they were, because nothing in the piano rack has changed state.

So what I need is to be able to tell cantabile to ‘resend’ the state of the rack to the lights even when nothing has changed. Does that make sense?

P

Ok Pierce,

Thanks for the post for us all to look at to hopefully help. My apologies as I must step out for several hours but I will look at this later and in the meantime maybe someone else has an answer …

Cheers,
Dave

I think I may be trying to do. something that’s beyond the capabilities of Cantabile…

Again, as always, you’re amzing for trying to sort out my ineptitude!

Cheers,

P

Well. in this case you may have found a limit for sure. I’ve rolled it over in my head and I keep coming back to the fact that without a way to recall, reset or reload the lowest level embedded racks you are not going to be able to get this to work this way. As far as other ways to go I’m sure there must be a scheme that would work. I will think more on the overall plan you have to see if there is a way to do it.

Cheers,

Dave

Thanks Dave!

I’ve been wracking my brain to work out a way round this. The binding needs to fire at the Main board rack level to go with the state changes but needs to target the racks one level down…

What we need is inception bindings…

@brad, any ideas?

P

Maybe I need to have a look at your trigger suggestion, see if there’s a way to make that do it…

P

Hi @Toaster,

Not sure I’m following exactly what’s going on here. Sounds like a problem firing a binding, but there’s no screen shots of the actual bindings. What are you triggering on?

The way the binding trigger sources work is they only fire when the source thing changes. If you’re trying to re-send something when something else (other than the trigger source changes) then you’re probably going to be a bit stuck.

Happy to add something to work around this specific issue but want to understand it properly first.

Brad

Hi Brad and thanks for the reply.

I had a brain wave last night which seems to work, but it’s brought up another weird thing that I can’t understand…
If I turn the ‘Category’ racks off and on again (toggle the running light) they resend the bindings in whatever state they were left in, hurrah! This means that all the lights I need are in the right states. (@brad, I can show you the bindings in inside the racks if you want, but toggling the running state of the rack does what I want)

However, I can’t get my head around why the following binding doesn’t seem to work right… (The ones in the ‘Channel Lights Reset’ Group

This is the binding that I’m using to try and switch the piano rack on and off, with the Piano rack state selected.

This is the binding when the Rhodes state is selected (ignore the delays for now, I was just trying to see if they made any difference…)

The next two pics show what happens to the state of the Running suspended states when Piano and Rhodes states are selected… All it’s doing is switching the Rhodes rack on and off…

I’m obviously misunderstanding something somewhere about the Running/Suspended binding target. I’ve tried all combinations of Running/Suspended, Is Running, Is Suspended, Run Mode and all the On/Off/Toggle settings but nothing seems to do what I want, which is to turn the rack I’m switching to off then on again when the state loads…

@brad and @dave_dore, what am I doing wrong?

Again, thanks for all your help,

Pierce

Sorry, just had another thought. Maybe the running/suspended state is state controlled. Away from the computer right now, will check when I get in…

P

Hi Pierce,

I looked at this for a few times now and I am convinced that without some workaround or feature addition you will not get it to go. My thoughts are as follows

  • you use rack states to select everything at 3 levels (Category, Keyboard type & patch selection)

  • each C♪3 Keyboard type (e,g,Rhodes ,Clav etc …) state changes the panel button indicators on the controller Keyboard to reflect the available patch buttons for that keyboard state

  • On first load of the a Keyboard type State (e.g. Rhodes) the indicators and buttons on the controller are properly configuring

  • while performing if you change to an A piano state from the initial Rhodes state it successfully configures the buttons on the controller keyboard to show its’ selectors

  • when you switch back to the Rhodes state it does not reconfigure the patch controller keyboard buttons & instead the patch buttons are still set for the previous state you were in (A piano)

What is desired I think is that state changes are not rack state " on loads" but instead a new category called say “on State Select” that fires what are currently set as “rack state on load” bindings for the selector buttons and lights every time you selected that state in a live session with it’s back and forth between different states we talked of here. The rack state “on load” bindings work on the first use but do not on subsequent re-use in the same session.

@brad , that is my take on it from helping on it a few times, I hope it explains what Pierce is trying to do.

Cheers,

Dave

Yeah, that’s exactly it Dave.

However, like I said, toggling the running/suspended state of the ‘category’ rack refires the bindings to put the lights back into the right place.

So all I need is to fire a binding(s) on state load in the Main Board rack to toggle the category rack on and off and it’ll all work.

Like I said above, I’m away from the machine at the moment, I think maybe the state behaviour of the running/suspend is clashing with the binding I showed above. When I get back I’ll check…

Again, thanks for putting succinctly what it is I’m trying to achieve.

P

1 Like

Success!!! (ish!)

So, I’ve used a 4 bindings. One to turn on the selected rack and 3 to turn the others off, on State load, in the Main Keyboard Rack bindings as below:

So this works! It resends the state that the rack was in when I left it, to update the state of the lights.

However… this method cuts the sound of the playing rack…

Now, this is not a huge issue, I’ve got what I wanted to work working, but it would be nice if I could do it with seamless changes. I’ve tried just using bindings to stop and start the rack that I’m going to which obviously wouldn’t affect the sound from the rack I’m coming from… (at least I think it wouldn’t…) but when I use just two bindings, like this:

It doesn’t work. Actually @brad, the delay setting on the 2nd one makes no difference at all, it seems to fire them both On Load at the same time, which I’m supposing is why it doesn’t work… Obviously, I set the delay high just to see what would happen.

I can’t see a reason why this wouldn’t work as I intend, why won’t it fire both bindings, one after the other? That would solve all my issues!

Like I said though, using the 4 bindings works, although I avoided this solution to begin with because I was aware that switching the rack off when changing away from it would cut the sound. In an ideal world, I’d be incredibly happy if I could do these switches without cutting the sound though…

I’m getting there though. Just one step left!

I really can’t thank you enough, if @dave_dore and @brad weren’t thousands of miles away, (and we weren’t living in this crazy pandemic world) I’d buy you both a big drink!

Cheers,

P

Hi @Toaster,

Firstly, glad you found a working solution. Unfortunately I’m not really sure why this isn’t working, but one thing that might help explain would be to turn on binding logging. Try this:

  1. Go to Options -> Diagnostics
  2. Turn on Console Logging and Log Bindings.
  3. Reproduce the problem.

You might be able to figure out from the log what’s firing when and debug it from there.

Also, what you’ve described as the solution isn’t very satisfying and I’d like to address this better. If you’ve got time to reduce this to a standalone song/rack(s) that demonstrates the issue I’d be happy to take a closer look and see if I can come up with something better.

This whole concept of re-sending bindings has come up a couple of times and I really want to understand the requirement before making any changes. Anyone else facing similar issues, please let me know.

Brad

Ok, So I looked at the binding log (sounds painful… :wink:)

And the bindings to switch the running state on and off seem to be firing:

But it’s not actually turning the rack on and off…

Here’s the Main Board rack in all it’s slightly Heath Robinson Glory…

https://www.dropbox.com/s/h9zzhxwexztlm2p/Main%20Board%20Rack%20run%20suspend%20not%20working.cantabileRack?dl=0

(It’s too big to post here)

See if you can work out why that set of bindings doesn’t work… Like I say, I’ve tried with all the combinations of Running/Suspended, Is Running, Is Suspended, Run Mode etc

Cheers again, there’s going to be a great cheer from North West London if this can work!

P

Sorry,

Forgot to add, if I fire the bindings manually (ie click on the play button next to the binding), they work…

:man_shrugging:

P

Any thoughts on this, @brad?

P

Hi @Toaster,

Sorry for the slow reply. I think what’s happening is the routing engine is detecting the rack being disabled and then immediately re-enabled and converting it to a no-op thinking “what’s the point”. You could try putting a small delay on the second binding that re-enables - that might fix it, not sure.

Thinking about this more, the simplest fix seemed to be to add a new binding target on racks to tell them to re-fire their on load bindings. So…

I’ve added two invokable command targets - one to fire the rack onload events and one to fire the rack state onload events.

Note you need to be careful with this to not create circular reloads. If you do, the universe will turn inside out and it’ll be your fault. Be careful :slight_smile:

This will be in the next experimental build (hopefully today).

Brad