Here is a take on it using just Cantabile elements. The main part of it is the linked rack you make to control the sostenuto pedal effect. Inside it is composed of all bindings. In state one which is labeled Normal the first 2 bindings set up up what is effectively a Notes Only route. The last binding is set up for a CC66 pedal to toggle the states of the rack, when it’s value = 0 the Normal state is selected
& when it’s = 127 the Hold state is selected. Note that there is a binding that is activated on this route that sends an all notes off message when you change back to the normal state or release the sostenuto pedal.
I set up a song using a single VSTi and did a split and sent the lower range to the chordz VSTi which then sent to the String machine VSTi. On the route I wanted to use for solo over the chords I set the range to avoid conflict with the chordz range and set the route to “Notes Only” so it wouldn’t send any unwanted CC messages to the String VST.
In practice you play the note with chord attached that you want to hold and while holding it press the Sostenuto pedal or whatever CC you use and it will prevent the note off for that note from passing to the Chordz Vst. Meanwhile you can solo in stacato on the upper range of the same Vsti or another Vsti if you want to route to 2 Vstis. When you release the pedal it sends an all notes off message to the Chordz Vst to silence the chord and returns to the Normal state waiting for new input. Here’s the rack to try out. (v4063)
I’m playing a Wind Controller, and my instruments typically use Breath Controller (CC2) to control volume (and filter and other stuff). Even through midiSostenuto blocks (delays, actually) the Note Off message, the CC2 messages are still getting through and the held note/chord goes silent.
But thanks for this suggestion - I have a new interest in the PIZ utilities that I have never fully checked out …
Including the Looper, which I have played with in the past, but it doesn’t quite do the trick …
Well that’s cool. I have not yet tried it, but I see how it works.
In my case, things are complicated by the need for managing Breath Controller CCs and I will probably need to run two (state drive) different paths for my chords and my lead, since the Breath Controller still need to go through for the lead (but not the held chords). (I don’t really have an option for “Staccato” notes on my breath controller without some level of Breath Controller action).
So … next question:
Should I learn ReaJS for this (I’m comfortable with programming in general), or should I try to swing all this by a significantly more complex version of the MIDI Hold rack?
If you want elegant go with scripted solution. In Cantabile as you know the parts and pieces do a lot of interesting things but it’s not for everyone. Learning ReaJS would be good I think considering your complex setups. FWIW the rack could be modified to include re-routing the lead notes to a different channel or output if you wanted.
Here’s the link to the documentation that @TorstenH mentioned:
Looks at first glance to be similar in functionality to the PizMIDI Sostenuto VST … so it probably will not work as-is for wind controllers … And I’m guessing it would not be in the cards for @brad to add functionality to the Sostenuto filter for the (miniscule) wind controller sub-sub-cohort of Cantabile users.
So it’s likely I’ll go down the ReaJS route and then maybe (if successful) provide that as a working model for a native-coded filter in C4 (or C5?) …
If you use two routes, one for sostenuto and one for ‘normal’, then I would imagine that you can use the conditions on routes to block for the CC02 on the sostenuto when it has been activated, i.e. when the sostenuto pedal has been used.
This would be a slightly more complex version of the rack. It accepts a single MIDI input but switches it between 2 target ports to allow using either a single VSTi or 2 different ones. Same basic idea but the splits if any would be on the output ports of the rack instead of the inputs to it.