A Method to Layer Piano and Sustained Instruments (Pads, strings)


Thank you for checking on that for me!

So, here’s what keeps happening:

  1. NOTE ON - I press down a note.
  2. SUSTAIN ON - I press the sustain.
  3. NOTE OFF - I release that same note, but the sustain pedal is still pressed and the note is still sounding.
  4. NOTE ON - I press the same note again. As designed, it doesn’t retrigger. Perfect so far!
  5. SUSTAIN OFF - As soon as I release the sustain, the note turns off, even though I am still pressing it.

My hope is that the note would continue sounding for as long as it is pressed. Any thoughts on this?

Thanks again!


Hi Cordaro,

well, this is actually how the script is designed:

  • when you release the note in step 3, this note is now signaled to the instrument as released (a note-off has been sent to the plugin) - the only thing that keeps it sounding is the sustain pedal.

  • Now when you press the same note again, it is ignored by the script, because a previous note is already being held by sustain - the note-on-event is (correctly) not sent to the plugin.

  • Prolonging the previously held note is not possible, since it has already been released (the note-off has been sent to the plugin).

  • once you release the sustain pedal, your plugin will automatically release all sustained notes - and it doesn’t know about your second strike that you are holding, because we have correctly ignored that one.

There is no real way around this behavior - the only way to continue the note beyond the pedal release would be to re-trigger it, which is exactly what we don’t want.

The only way to avoid this would be to completely re-work the way the sustain pedal is handled and realize a MIDI-sustain within the script instead of at the instrument level (i.e. hold all note-offs until the pedal AND all relevant notes are released) - this would be a significantly more complex script; I’ll probably not go to that extreme…




No worries! I’m super grateful for what it can do as is! I’ve learned a ton here. My work around will be to just use two pedals, one for the deduplicator and the other as a regular sustain.

I’d love to learn JSFX. I’ll be going on tour next week. I think I’ll start looking into it while on the road.

I just got the green light from the band to purchase the software! So I’ll be making a few more tweaks to my setup and test it for stability, and if all is well, I’m taking the plunge, just in time for our next set of shows.


Hi Cordaro,

I had some more time to look at this challenge and came up with a another idea that might work. It involves a rack I made that does the needed actions. Below I show roughly the same example song as before but you see another rack added called ‘Note Latcher’. The piano is routed without any filters to the main speaker outs and the Strings are routed to the Note Latcher rack and then to the string plugin.

In operation you play normally while the damper pedal is not pressed. When you press the damper pedal down what ever condition the string plugin is in is held. You can continue sounding piano notes (you’d be playing into an open damper because the pedal is still pressed ) over the held notes of the Note Latcher as long as the pedal is pressed. When you release the pedal the notes that were held for the string plugin by the Note Latcher rack are released and do their release envelope. The piano acts independently from all this so it doesn’t cancel any notes on the held string notes here when tested. The CC 64 on message gets out of the rack to the string plugin before the state switches and blocks all MIDI so the plugin keeps waiting for the off which is allowed through as soon as the state changes back when the pedal is released. Like all experiments it might not behave the same for you and has not been tested rigorously yet.

If you want to try it, here you go, just so you know it’s made for a standard damper switch and not a variable half pedaling type.

Note Latcher.cantabileRack (10.6 KB)

For the rack geeks this is how it works … There are 2 rack states Normal and Hold. On the routing tab for each state it is pretty straight forward. The NORMAL state allows the notes and CC data to pass through to the rack unchanged to the string plugin

In state 2 the pass through route is disabled preventing notes from re-sounding to the string plugin. Since all that was done was an interruption of MIDI data flow on that route to the plugin it is held captive by the last commands before the route was cut off.

On the bindings each rack state is manipulated by the damper pedal in a momentary press style of action because of the source using a straight Controller as opposed to a Edge Triggered Switch. So, state 1 is the unpressed condition of the damper pedal and synchronizes with the enabled pass through route.

when you press the damper down the first binding above calls the second binding that is synchronized with the blocked route condition. When you release the pedal the binding fires and calls state 1 back up for some more notes to happen.

So when I start out playing state 1 remains in effect till I press the pedal down and it instantly goes to state 2 where it remains until I release the pedal and it instantly goes back to state 1 and allows notes and data to get to the plugin again.

So. it’s not really a note latcher rack as much as a conditional route inhibitor I just liked the name better … geeking complete :sleeping::sleeping:



Yet another follow up on this subject. The previous post had a method that worked OK but when tested rigorously had some problems. In particular fast switching of the damper pedal would confuse my intended logic and get it reversed. So I don’t recommend this approach but since I was sitting there fooling with it on a full rig I found a very good alternative that is more responsive and does not suffer from the drawbacks of the rack. So, here is what I found that worked best for me. The same test example is shown below with the strings and the piano layered to a common controller keyboard.

this time I set the Control window route Condition for the strings plugin route to allow notes and CC to pass while CC 64 = 0. Any other value shuts the route down until CC64 = 0 again.

To hold the notes (since blocking the route also blocks the CC64 it needs to know it should hold) I made a binding at song level to the plugin directly to handle the CC 64 hold messages that is independent of the route that has the notes and added a CC11 direct binding so the swell still worked even with held notes.

In practice method this worked the best of all the solutions I tried. It was very playable after a short adjustment period. It didn’t get “turned around” like my rack idea making it stable and reliable. Since it uses route blocking it also will not sound held notes when the damper is released and only releases the held notes. In use you play the layered instruments with the pedal up. When you press the pedal down it holds the notes that were being held when the pedal was pressed via the binding. You can then play the sustained piano notes over top of the held string notes til you release the pedal. At that point the held notes of the strings are released and the sustained notes of the piano as well. Another interesting extra performance feature is that if you press the damper before playing any notes the piano only will play though the damper. In terms of how to play using this method you have to be precise in your pedal work so you always have the notes pressed that you want at the instant you press the pedal and released when you release the pedal. After playing with it a half hour or so it got very playable. Very good for B3 with piano over top as well



Gonna try this one. Thanks Dave. :grinning:


You bet Corky, hope it works for you …:grinning:


Oh yeah! Duh. Good idea,