This is great! Thanks for the new functions, they will make this a lot easier to use. I have already set up a song to exercise it and I’m getting great results. We had simple comparison before but now we have complex comparison capability where the condition of several values of elements in your session or song to decide when a binding will fire. I already set up some control buttons that can change their function depending on the selected song state using several bindings that can be left enabled all the time. I used to do this but would have to disable bindings using states. This, in my case eliminates that practice. For me, this new change is huge, I’ll be tinkering for a while I’ve got a feeling.
Ugh. I just reviewed all the changes in build 4152 and there weren’t that many. My main suspicion is the changes related to this - which should be a simple fix, but I can’t reproduce it and it’s being difficult.
Easiest way to confirm that would be to back that change out and get you to test it, but I’d prefer to understand what’s going on with it so if you’ve got time to crash a crash dump that’d be great.
OK, using the Diagnostics Tool is a bit of a non-starter. Having the capture task active will make my pre-loading process take AGES - I noticedthe Korg plugins (Wavestation, M1) take more than a minute each to load with the Diagnostics Collection active, but it’s not only the Korg stuff, but also others like UVI Workstation. Seems there is a bit of an incompatibility with the plugin loading process.
After waiting more than 15 minutes for UVI Workstation to load, I finally gave up on trying to capture a crash report using the Diagnostics Tool. @brad, that might be something for you to look into when you have a minute…
But what I found: I don’t even need to start Cantabile 4152 with the full pre-loaded setlist - starting it empty is sufficient to make it crash every time.
I can actually start Cantabile when I tell it to not activate the audio engine, but as soon as I activate the audio engine, everything comes crashing down.
Here are the logs (Cantabile and Diagnostics Tool) - @brad, I hope you can make something of them.
I’ve had a look at this and all I can tell right now it’s a stack overflow exception (which is why Cantabile couldn’t capture it)
The fact that it’s happening when starting the audio engine is a bit mysterious as nothing there has changed. I expected to see something like a view layout issue with GuiKit, but I guess I’m off base.
When you captured this with DebugDiag, did it also generate a .mdmp file? That would be really helpful if you have it.
If it didn’t, you could try this approach with procdump. (Or maybe not… I’ve just been testing with this and struggling to get it work)
If it didn’t, I’ve updated the page here to describe how to install ProcDump as a post-mortem crash capture tool.
In the meantime, I’ll see if I can figure out how to map the addresses listed in the stack overflow trace back to functions and see if I can understand what’s happening. But that’s going to be hard because it looks like all the module load addresses in the DebugDiag log have been truncated to 32-bit - so I can’t even confirm what module it’s in.
the Cantabile log shows that starting with an empty Background Rack works nicely, but as soon as I set my specific Background rack, Cantabile crashes when returning from Options and starting the audio engine.
Are these new features available under the Solo license?
As I’ve mentioned before, I’m never sure which features are allowed in which license version, and it often turns out that new ones are only available under the more expensive licenses. It would be good if this information could be added to the documentation in a clear and transparent way, preferably so that reading any one page of documentation in isolation makes that clear.
Hey @brad, could you post an example of the new curve function with respect to the new expression mapping for bindings? Just wanted a little guidance on how to apply it. I got it going but the range was limited to “1” so the gain slider I was binding to only went to 0db and not max or 7.3db.
Push pitch bend up - sends CC1@127, push pitch bend down - sends CC1@0
All done with two simple expression bindings - the trick is using the “when expression becomes true” to create a kind of “edge detection” for the pitch wheel half-way up or down from its center position.
If you can I’d like a little help on another expression case. I tried to link from a standard MIDI controller bar popup slider to a controller knob inside a VST using the expression mapping and it returns an error message "Error mapping value, can’t convert “Double to numeric”. Here is my binding. It works for binding to Cantabile knobs which are 0~1 based but errs when I try binding to a controller in a Vst. Any insights welcome and thx in advance.