Questions on new binding logic

Since I’m currently re-building my songs and global rack according to the new Binding logic, some questions have popped up:

  • Is there a way to bind a note to toggle a controller? I’d love to be able to use notes to toggle certain external effects via a controller. Hit the key once --> CC 114=127; hit the key next --> CC114=0. Guess we’d need a new Binding target for this: Controller (Toggle)
  • What do “Controller (Button)” and “Controller (No Edge Button)” mean as TARGETS? I assume that “Controller (Button)” sends out 127 when the source is active and 0 when the source isn’t - correct? And does “Controller (No Edge Button)” then only send out 127 when the source gets activated?
  • If “Controller (Button)” works as I assume above, does this work for a “Note”, i.e. does it send value 127 when the key is pressed and value 0 when the key is released?

Thanx for any clarification!

Cheers,

Torsten

As a workaround, could you use two bindings for this? One binding the note event to an existing toggleable target (I know Live Mode is toggleable, but there must be others - maybe something like rack bypass, on an empty rack?), and then use that as the source of another binding to your controller? I’m away from a Cantabile setup at the moment, so can’t test this possible method…

Neil

Hmmmm, that’s a nasty way to do this :wink:

Just fiddled around with this in my background rack - and found a bug (I think): When binding a note from my main keyboard to “Running/Suspended - Toggle” for an embedded rack, this doesn’t work!
Binding the same note to “Resume/Suspend” for a plugin in my master rack works flawlessly.

Next, I started a new song, inserted one of my existing racks and tried a similar binding: Main Keyboard - Note - 60-C4 --> MainPianoRack - Running/Suspended - Toggle

Same result: none!

Again, changing the target of this binding to a plugin works flawlessly.

@brad: there seems to be something wrong with suspending racks via bindings!

Cheers,

Torsten

@neil: with a (suspended) plugin, your idea works nicely:

  • one binding to toggle bypass state for this plugin on a note
  • another that reacts to changes in the bypass state by sending out controller data

Thanx for the idea!

Cheers,

Torsten

1 Like

It’s still nasty :relaxed: - hopefully Brad can work some magic to provide a more elegant solution.

Neil

I looks like the real solution to this would be user variables. You could use Bome MT, but …

The only thing I can think of with an IF/ELSE condition is MIDI Route Settings, Condition, “Only Route when Program Number “X” is Active” or "Only route when CC is >or < “X”. Set a patch or CC > 0 for on. Then the note or event passes, ELSE not. I think it’d have to be in a rack.

Actually, if you choose to realize this via a Route, it’s easier: simply insert a MIDI filter “Latch Controller” - allows you to switch between a sequence of values. It’s just that I want to clean out my Routes and do all my controller stuff via Bindings - far cleaner and more explicit than having to dig into the Midi Filters. Plus, Bindings can be state dependent, while MIDI filters can’t.

So, if @brad can copy the concept realized in his “Latch Controller” MIDI filter to Bindings, things could be super-clean…

Cheers,

Torsten

Not at the moment. The way I will eventually implement this is as target event kind “Controller (Switch)” and if you binding a command source (eg: a single note) to it, you’d get the toggle option. The problem at the moment is that MIDI target’s can’t be “read back” from to find out what the toggled value should be. I’ve considered two ways of implementing this:

  1. Store the last sent value in the binding. This would be simplest.
  2. Store the last sent value down at the actual target object (eg: MIDI Output Port). This is more complex.

Option 2 would be better because the binding would then work correctly if you had two of the same bindings in two different songs. ie: the state wouldn’t be lost after switching songs.

Then again, if you put these kinds of bindings in the background rack and/or in a rack shared across songs then the state won’t get lost.

Leaning towards option 1. What do you think?

Not quite. These can be bound to from source events - when the event happens Controller (Button) sends 127 followed immediately by 0, while Controller (No Edge Button) sends just 127. Basically it’s simulating a person pressing a button.

Note bindings are treated as events - not switch/value sources, so no.

I agree - I’d keep it simple and consistent. When starting a new song with such a binding, I’d expect such a toggle (or multi-value-latch) to start at the beginning, not remember something from some time before. Of course, this will be different in persistent racks and the background rack!

Cheers,

Torsten

P.S.: hope you also saw the bit about suspending racks not working - needs to be fixed!

I’m doing this right now, Torsten.
Have you used plzmidi plugins? They are a free suite of midi manipulators that you insert exactly as you would any VST plugin.
Here they are:
plzmidi

I’m playing a C2, having C3 transform it to CC55 and then using the MidiCCToggle plug in to create the toggle of CC55 between values 29 and 80 on every alternate keypress.

2 Likes

Nice idea! So in my case I have now inserted MidiCCToggle in my background rack, routed it to my external device and configured it to toggle CC114 between 0 and 127. Then, I created a binding Note B0 --> MidiCCToggle Midi In - Controller (Button) - 114

Works like a charm!

Cool idea - thanx!

Cheers,

Torsten

1 Like

Great post Ade! I always forget about plzmidi - thanks for reminding me of those cool tools!

Neil

Next build will include fix for running/suspended binding + ability to bind an event (eg: note press) to MIDI Controller (Switch) and the ability for it to toggle.

In the end I decided against storing the state in the binding so that you can have an on-load binding to set it on or off and then the toggle binding will follow on from that. If you don’t have a binding to set it on load it will carry over from previous song.

2 Likes

And what if it hasn’t been set before (no previous song)?

It’ll assume off - so the first toggle event will turn it on.

1 Like

@brad - well that makes plzmidi a little more redundant :smile:
Having now had a reason to dust the cobwebs off the MidiCCToggle plugin, I can see that it does have some useful extras, such as the ability to determine the value of the highest and lowest values being toggled between.
This doesn’t seem to be an easy proposition for the current Filter implementation.
How would one reproduce the result I posted in the GIF above?