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

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

Build 3668 up now has this.

Brad, you’re a genius!

Thanks.

I did think about getting caught in a loop of these, I think I should be ok though, like I said in a post above, I need Inception bindings…

Cheers.

P

1 Like

Hi Brad… You’re going to hate me!

The change you made doesn’t work for me. I’ve tried both ‘Refire State on Load’ and ‘Refire Rack on Load’ and neither of them send anything… (At least not to where I need it…)

Just to make sure I’m using them correctly, here’s how I’ve got them set:

I’ve tried different combinations, using one binding and changing the target and using 4 like shown here and enabling/disabling them as the states change. I’ve got the bindings in the top level of the rack, I thought that maybe I should have them in the embedded racks, like this:

That doesn’t work either.

Just to reiterate, in case I hadn’t mentioned this already, if I toggle the running suspended state of the top level embedded racks (Piano, Rhodes, Clav, Organ) by clicking on the green light in the rack, this does exactly what I need, which is what the previous bindings were achieving, by turning them on or off dependant on state.

Sorry…

P