There’s a peculiarity in the implementation of state behaviour that I’ve been aware of for a while now, which I think is by design, but nevertheless, could cause people problems unless they have some insight into what Cantabile is doing under the covers.
Suppose I have a song with, say, 5 states. and I have a plugin with state behaviour disabled on its fader. And suppose the fader is fully down for all 5 states.
While I’m on state 5, say, I turn that fader up. Because state behaviour is disabled on it, if I then switch to other states, the fader remains up on all other states. That’s fine, and as expected.
However suppose after turning up the fader on state 5, before selecting any other states, I save the song and select a different song. When I return to the song again, Cantabile loads state 1, and lo and behold, the fader is fully down. Furthermore, if I select any other states, including state 5, they’re all fully down. My change to state 5 has disappeared, even though I saved the song. I would say this is not what people would expect.
Now I think I understand why this happens; each state has a stored fader value in the song file, and if state behaviour is disabled, the value is left untouched instead of the saved value being read, when selecting a state. And when you move away from the state, the current value is saved, thus overwriting the original. This is fine in general, but obviously not good in the above case; the state hasn’t had chance to overwrite the value into the file with the intended one.
It’s even more confusing with rack states, since their states are generally accessed in arbitrary order. So if you have a rack where a parameter has state behaviour disabled, but you haven’t stepped through all states to ensure it’s the same for all states, then the rack could behave and become modified differently depending on the order you select songs (and thus the order of rack states being selected). This feels wrong to me.
So basically, to understand state behaviour properly, you need to know how this implementation works under the covers, in terms of values being read / overwritten, and states being saved.
My question is - would it make sense to give some thought to rationalising this, so that when you change a value with state behaviour disabled, all other states get assigned that value there and then? Is there any reason why it couldn’t work that way?
Neil