Controller Bar Bindings

Cantabile now supports Controller Bar bindings so you can now create bindings that interact directly with the buttons on the controller bar.

In order to create bindings to/from a controller bar button you first need to give it a name.

  1. Right click on the button and choose "Customize...", or right click else where in the Controller Bar and choose "Add Button..." to add a new button.
  2. In the "Binding Name" field enter any name you like.

You'll also notice the Action field can now be set to "None (bindings only)".   This creates a button that doesn't perform any actions on its own but can be controlled through bindings.

Now the button has a name it's available in the binding editor.

  1. Create a new binding
  2. For the "Object" of the source or target side of the binding, choose "Controller Bar".
  3. For the "Point" choose the action of the button you want to control or respond to.
  4. In the "Button" field type or choose the name of the controller bar button.  This should match the name you entered above for the "Binding Name" on the button.

For example, here's a binding that will set the master output gain to 0dB when a controller bar button is clicked:

Available Binding Points

The controller bar buttons support the following binding points:

  • Button Caption (source/target) - the caption displayed on the main part of the button.  When used as a source any variables will be unexpanded.
  • Button Color (source/target) - the color of the button
  • Button Tip (source/target) - the tip text displayed just above the main button. When used as a source any variables will be unexpanded.
  • On Clicked (source) - fired when the button is clicked (press + release)
  • On Pressed (source) - fired when the button is pressed
  • On Released (source) - fired when the button is released
  • Value (source/target) - the value of the button (or slider)
  • Click (target) - when invoked by a binding, simulates clicking the button

Available now in build 4174 and later.


This is a companion discussion topic for the original entry at https://www.cantabilesoftware.com/blog/controller-bar-bindings
10 Likes

Yes!!!

Awesome.
How does it differ to routing the on-screen keyboard and creating a midi controller binding?

Thanks @brad looks greats! Are there any plans to incorporate buttons/sliders into the WebUI? I use a touchscreen laptop to remotely control Cantabile, and it would be immensely helpful to have a tab where custom bindings could be added and triggered.

For listening to buttons itā€™s not much different except you donā€™t need to route a MIDI controller and then bind from that.

But it also allows the reverse controlā€¦eg: a binding setting the color or text on a controller bar button.

Possible. Not sure on timeline though. Coincidentally, right now Iā€™m also working on a new front-end web client framework for another project and while working on it, it occurred to me that it would be a great framework for Cantabileā€™s Web UI. If I was to swap over to it, then Iā€™d also be considering some new functionality to make it worthwhile, and remote sliders/buttons would definitely be a consideration.

5 Likes

Nice! Iā€™ve been poking around on this for a couple of days. Is there a way to use States to control the Controller Bar Bindings? Or remember the settings and such? Like if a button had a pop up fader.

(Nothing related to the deep philosophical question about ā€œwho controls the controllersā€ :laughing:)

Not directly, but it depends what you want to do. eg: you could use State On Load binding to invoke actions on the controller bar, or use states to enable/disable bindings that are responding to actions in the controller bar.

Struggling with getting Controller Button caption to change when the button is clicked.
It works when addressed by MIDI as per this screen shot. When MIDI is received, the button swaps its caption from ā€˜upperā€™ to ā€˜lowerā€™.


If I change the source to the Controller Button itself, I canā€™t get any joy.
What am I missing?

Hi Ade,

What does the second binding look like on source? Is it the Onscreen Keyboard(Out) or the Controller Bar source? Also, it seems to me that it would have to be a toggled switch or a slider for the source or it wouldnā€™t work. This example toggle switch binding does work FWIW.

Dave

Ahh - the cavalry comes over the hill :smiley:
Dave, I think this is probably tied to the onscreen keyboard. I use it only for occasional testing but never include it in bindings or as a source.
I now have tweaked the binding as per your example, (my CCs of course) and when tested from the binding window, it operates correctly.
I cannot get the actual Controller Bar button to respond when clicked, apart from the color change which is handled on another binding.
So, the situation is, a MIDI button has been configured as part of a 5 binding group so that color and text change, along with the required Cantabile routing targets, which respond correctly.
The missing piece of the puzzle is to have all of that happen if I mouse click on the controller bar button. I foolishly assumed that that button could address its own caption when clicked, but that doesnā€™t work.
Iā€™m not sure I understand the concept of why the onscreen keyboard is crucial to this task, and why I ainā€™t getting it in any event.
Thanks as ever!

A GIF which shows MIDI control successfully addressing the Controller Button text and then the abysmal failure of my pathetic mouse clicks.
lower upper

OK, the onscreen keyboard acts as a buffer that can store CC values. in your use case the CC value you want to store is the same as the button producing the CC message so confusion occurs. In this (non Toggled) example I suggest that you use an unused CC to store the value that is different than the CC that is being sent when you press a controller bar button. This second CC value acts as the memory storage for the label display choice. So you would need 2 bindings to do it. First the momentary swt to toggle swt binding. It receives CC45 momentary switches and produces a CC46 output that sequences from 0 to 127.

The second binding receives the CC 46 messages in the onscreen keyboard and controls the button label displays.

Hope this helps ā€¦ :slightly_smiling_face:

Dave

Thanks for your help Dave. Iā€™ve created bindings as shown and I still cannot mouse click onto the Controller Bar button and achieve any text change. When I test the expression binding from its window, it works. Just canā€™t translate that into a mouse click on the Controller Bar button.
OK(in) bindings, Source CC98 Target CC99 Mapping Automatc 0,127
Expression OK (in) Source CC99 Target Button Caption etc Mapping, as prescribed.

Stumped.

It all sounds correct to me. I am not sure why it works here and not there. I will investigate furtherā€¦

Edited my previous response for clarity.

Can you post the bindings for the

I think your other external control binding that does work must be conflicting somehow. Can you either send me your song file you are testing with or post the external binding that is related to this button and itā€™s text changes?

1 Like

Well @dave_dore gets there again.
I missed configuring the controller bar switch midi return.
One little sync issue but, thanks to Dave, I understand more of the process.
:+1:t2::+1:t2:

Exceptā€¦ I donā€™t understand more. :woozy_face:
I thought I could simplify my captioning issue for another scenario - where midi keys switch the caption. As there is not a switch required at the expression, just a text output bound to a midi note, I tried removing the second part of the text, from the colon onwards. That fails. I faked it by making both sides of the colon=the same text,
Input > 1 ? ā€œmy messageā€:ā€œmy messageā€
but thatā€™s cheating, even though it works.
Tried Input == ā€œmy messageā€ to no avail, along with other sundry guesses.
What is the syntax for issuing a text string?
Feeling dumb.

Hi Ade,

I think this is what you need. A MIDI key note triggers the display of a Caption on a ā€˜binding namedā€™ controller bar button. Just put the caption in Quotes in the Result box.

Dave