It’s finally here! A new version of Cantabile is now available that includes a complete reworking of the Binding system.
So what’s changed?
The biggest difference you’ll notice is the new UI.
Rather than bindings being edited in a single row like before, everything is now nicely contained to a single popup window and there’s a big text area where you can enter notes and comments.
Back in the main window bindings table, the number of columns has been significantly reduced and some of the less frequently used settings have been removed giving a cleaner, easier to read and understand view.
Also, in Cantabile Performer, the schedule and retrigger settings have moved to a single dialog accessed from the “Timing” button:
Once nice side effect of having binding settings in a separate window is you can switch away from the bindings tab to control other parts of Cantabile while having the selected binding visible/editable at the same time.
The biggest conceptual change is the idea that a binding is comprised of three distinct objects, each with their own set of properties:
- the source,
- the target and
- a mapper.
Previously these concepts existed but each object couldn’t maintain an arbitrary set of settings.
Practically this means that some previous bindings had to be separate (eg: Load bindings with Instant vs Delayed versions) but can now be combined to a single binding point with settings:
- Rather than separate binding points for each MIDI port, there’s now a general “MIDI Ports” binding object under which you choose the port.
- MIDI Ports on Plugins, Racks and Media Players are now binding points on those objects, rather than separate bindable objects.
- All the PC Keyboard binding points (both listening for key events and sending key events) have now been combined into a single “PC Keyboard” bindable object.
- Various other tweaks and consistency fixes to binding point names.
(TL;DR: everything from before is still there, but it might have moved and/or changed name)
The functionality of the new bindings is basically on-par with the old system. There’s a couple of new binding points - but they’re mostly for testing.
Internally, the binding framework has been completely rewritten providing the ground work for additional improvements to bindings in the future.
For example, previously (and currently) only MIDI to MIDI bindings ran on the audio thread, but the framework now supports any binding point running on the audio thread. This opens the possibility for real-time bindings and animations of audio mixer settings and plugin parameters.
When you load a song or rack file from an older build, Cantabile will automatically upgrade and convert all existing bindings to the new system. Your old song and rack files should continue to work in the new build as before.
IMPORTANT: Any song or rack files saved by this build, either by explicitly saving or automatic saving of racks will not load in previous builds. Before using this build, please back up your current song and rack files.
If you need to go back to an earlier build, you’ll need your old song and rack files.
(Actually, Cantabile will automatically save a backup copy of any song/rack before it overwrites it with a .pre4100 extension appended… but don’t rely on this and it’s better to be safe than sorry).
This update is available now to anyone with a update current subscription.
It’s being released as series 41xx to distinguish it from previous builds with older, incompatible binding system.
It's available now as the experimental build here:
Note this build is currently still considered experimental and shouldn't be used live just yet.
Feedback, Bugs and Suggestions
As always, I’m keen for any feedback on your experience including suggestions and bugs. I’ve done extensive testing including testing every single one of the hundreds of source and target binding points as well as all the mapping modes, but internally this is a big update and there might be the odd thing that's slipped through the cracks. Please let me know of anything that doesn’t work as before - either because the binding didn’t upgrade correctly or simply if the binding is working differently to before.