What's new

Kill existing sustaining note on legato transition (with sustain pedal)

peterharket

Music is life
Hi.

I am an avid user of the Multi Divisi script from the multiscript wizard @Jay EM to create flowing polyphonic legato lines.
To do this convincingly, I use the sustain pedal to have time to reach for a new chord, and then "legato" between the old and the new chord (so basically constantly holding down the pedal). However, not all libraries are equally suited to using such a script...
For instance, I am now trying to get it to work with Claire Woodwinds from 8Dio.
This library have turned off the sustain pedal functionality by default, which I've now turn on under "Instrument Options".
The issue though is that the notes stack, so that when I put down a new chord, the old notes still ring.
I would like the new chord to "kill" the notes of the old chord, so that there is a consistent number of vocings at any given time.
Is this possible from a user's point of view (perhaps with another multiscript), or must this be hard coded on the developer's end?
The library has the wrench option, and not the cog - however, the script is locked.

Thanks
 
Last edited:
Managed to get it to work with this additional multiscript and enabling the option "Ignore pedal CC”:

Only caveat is that I have to hold down the sustain pedal before playing anything - and then keep holding it - as doing so after a chord is laid down kills all notes.
 
Last edited:
each library that has its custom scripts has a random chance of working with a multi script trying to perform legato, I would say that in most cases this random chance of success if very low since there is no way the multi script will know how the custom scripts from the library you chose work.
 
Last edited:
Hi.

I am an avid user of the Multi Divisi script from the multiscript wizard @Jay EM to create flowing polyphonic legato lines.
To do this convincingly, I use the sustain pedal to have time to reach for a new chord, and then "legato" between the old and the new chord (so basically constantly holding down the pedal). However, not all libraries are equally suited to using such a script...
For instance, I am now trying to get it to work with Claire Woodwinds from 8Dio.
This library have turned off the sustain pedal functionality by default, which I've managed to turn on under "Instrument Options".
The issue though is that the notes stack, so that when I put down a new chord, the old notes still ring.
Using a sustain pedal is not the brightest idea. I recommend a MIDI Latch Multi script which does everything automatically. I have developed such a prototype 100% working but never had time to finish it's UI for official distribution.
 
Using a sustain pedal is not the brightest idea. I recommend a MIDI Latch Multi script which does everything automatically. I have developed such a prototype 100% working but never had time to finish it's UI for official distribution.
Cool! However, the sustain pedal works wonders for me with the Blake Robinson multiscript I posted. What would the benefit of a Latch multiscript be?
 
Cool! However, the sustain pedal works wonders for me with the Blake Robinson multiscript I posted. What would the benefit of a Latch multiscript be?
The Latch works with all libraries without any hanging notes. It is a quick and smart auto "MIDI HOLD" script, which emulates the hardware " Intelligent Workstation" synths.
 
The Latch works with all libraries without any hanging notes. It is a quick and smart auto "MIDI HOLD" script, which emulates the hardware " Intelligent Workstation" synths.
Got it - I’ll have a look once it is ready.
 
  • Like
Reactions: A.G
I've got a divisi script as well that has sustain pedal options. The default mode, "Sus Ped: Replace", does what you want, if I'm not mistaken. Granted, this would mean switching to divisi logic which may or may not be what you're used to coming from JayEM's script. You'd have to just try it to see if it works out for you.


That's if you're still exploring for solutions, of course.
 
I've got a divisi script as well that has sustain pedal options. The default mode, "Sus Ped: Replace", does what you want, if I'm not mistaken. Granted, this would mean switching to divisi logic which may or may not be what you're used to coming from JayEM's script. You'd have to just try it to see if it works out for you.


That's if you're still exploring for solutions, of course.
Lovely! I’ll have a look 😃
 
I've got a divisi script as well that has sustain pedal options. The default mode, "Sus Ped: Replace", does what you want, if I'm not mistaken. Granted, this would mean switching to divisi logic which may or may not be what you're used to coming from JayEM's script. You'd have to just try it to see if it works out for you.


That's if you're still exploring for solutions, of course.
When using the Sus Ped: Replace, the legato transition is lost unfortunately. However, when using the Sus Ped: Append, the script is actually better than the dedicated sustain multiscript from Blake, as letting go of the sustain pedal does not result in killing the notes (given that you still hold down the chord). That said, I do get quite a lot of hung notes though which defeats the purpose - but thanks anyways @kpmuzik!
 
Last edited:
I took the liberty to modify Blake's multiscript so that it does not kill the notes on pedal off, but it results in the same hung notes. I guess once you have the sustain pedal pressed "forever", this might be inevitable... That being said, it works with LASS, but that is next level wizardry.
 

Attachments

  • Sustain Pedal Support Modified.nkp.zip
    2 KB · Views: 1
When using the Sus Ped: Replace, the legato transition is lost unfortunately. However, when using the Sus Ped: Append, the script is actually better than the dedicated sustain multiscript from Blake, as letting go of the sustain pedal does not result in killing the notes (given that you still hold down the chord). That said, I do get quite a lot of hung notes though which defeats the purpose - but thanks anyways @kpmuzik!
Did you try the last mode: the "Sus Ped: Ignore" mode? It'll let the sustain messages reach the instrument. If the instrument can use sustain to connect notes for legato, letting the instrument do so by letting the sustain messages through could work.

I almost forgot that I may actually own one of some of the Claire instruments that I could try this out on, so if you don't beat me to it, I may try myself when I'm back at my workstation.

EDIT: Okay I see, yeah this isn't working. Claire doesn't have native sustain support (and manipulating the sustain-handling behavior as you have doesn't work that well), a case that my divisi script design doesn't consider (hence the lack of effort to force overlaps in the "replace" mode). I may address that if I find the time. "Append" mode is close, but it doesn't re-fill the chord like "replace" mode does. I'm glad that I learned of this edge-case though as I'm sure that I'll revisit this problem in my future endeavors.

And as always, I appreciate you giving it a shot.
 
Last edited:
Did you try the last mode: the "Sus Ped: Ignore" mode? It'll let the sustain messages reach the instrument. If the instrument can use sustain to connect notes for legato, letting the instrument do so by letting the sustain messages through could work.

I almost forgot that I may actually own one of some of the Claire instruments that I could try this out on, so if you don't beat me to it, I may try myself when I'm back at my workstation.

EDIT: Okay I see, yeah this isn't working. Claire doesn't have native sustain support (and manipulating the sustain-handling behavior as you have doesn't work that well), a case that my divisi script design doesn't consider (hence the lack of effort to force overlaps in the "replace" mode). I may address that if I find the time. "Append" mode is close, but it doesn't re-fill the chord like "replace" mode does. I'm glad that I learned of this edge-case though as I'm sure that I'll revisit this problem in my future endeavors.

And as always, I appreciate you giving it a shot.
It is I who shall give thanks! May I ask what it is that results in hung notes? Is it going from a higher set of voicing (say four notes) and down to a lower one (say two note chord) all within one “run” with the sustain pedal?
 
Last edited:
It is I who shall give thanks to you! May I ask what it is that results in hung notes? Is it going from a higher set of voicing (say four notes) and down to a lower one (say two note chord) all within one “run” with the sustain pedal?
Did some more experimenting, and the answer is: nope. Seems to be due to an oversight in how the Claire woodwinds are scripted. (I'm using the clarinet as that's the only one I have, but I imagine the rest are similar or the same.)

If you do a same-note repeat without a note-off in between (using my script's Append mode or using a triple-sensor keyboard by barely lifting the key before striking again), the Claire instrument gets "lost" and doesn't cut the extra voice(s) when other pitches are introduced. (This is without modifying the instrument's pedal handling, by the way.) So if you're holding the pedal down and whatever script your using suspends note-offs while the pedal is down, any note that gets "stacked" like this will not get legato-transitioned from when you introduce other pitches. They will hang until their note-off is received as no neighboring notes can ever do so.

That means you can play chords with a Claire woodwind if you just double attack (and hold) each note in sequence even in legato mode. (Like C-C-E-E-G without note-offs to get a Cmaj chord.)

So with that figured out, you might be able to dodge this. If you have a progression of chords that share any notes between them, try holding the shared notes to avoid re-attacking them.
 
Did some more experimenting, and the answer is: nope. Seems to be due to an oversight in how the Claire woodwinds are scripted. (I'm using the clarinet as that's the only one I have, but I imagine the rest are similar or the same.)

If you do a same-note repeat without a note-off in between (using my script's Append mode or using a triple-sensor keyboard by barely lifting the key before striking again), the Claire instrument gets "lost" and doesn't cut the extra voice(s) when other pitches are introduced. (This is without modifying the instrument's pedal handling, by the way.) So if you're holding the pedal down and whatever script your using suspends note-offs while the pedal is down, any note that gets "stacked" like this will not get legato-transitioned from when you introduce other pitches. They will hang until their note-off is received as no neighboring notes can ever do so.

That means you can play chords with a Claire woodwind if you just double attack (and hold) each note in sequence even in legato mode. (Like C-C-E-E-G without note-offs to get a Cmaj chord.)

So with that figured out, you might be able to dodge this. If you have a progression of chords that share any notes between them, try holding the shared notes to avoid re-attacking them.
I’ll have a look with your script without modifying the default sustain pedal behaviour (which I had changed to make it work with the Blake Robinson script). Thanks again!
 
Did some more experimenting, and the answer is: nope. Seems to be due to an oversight in how the Claire woodwinds are scripted. (I'm using the clarinet as that's the only one I have, but I imagine the rest are similar or the same.)

If you do a same-note repeat without a note-off in between (using my script's Append mode or using a triple-sensor keyboard by barely lifting the key before striking again), the Claire instrument gets "lost" and doesn't cut the extra voice(s) when other pitches are introduced. (This is without modifying the instrument's pedal handling, by the way.) So if you're holding the pedal down and whatever script your using suspends note-offs while the pedal is down, any note that gets "stacked" like this will not get legato-transitioned from when you introduce other pitches. They will hang until their note-off is received as no neighboring notes can ever do so.

That means you can play chords with a Claire woodwind if you just double attack (and hold) each note in sequence even in legato mode. (Like C-C-E-E-G without note-offs to get a Cmaj chord.)

So with that figured out, you might be able to dodge this. If you have a progression of chords that share any notes between them, try holding the shared notes to avoid re-attacking them.
Your script works wonders with divisimate if I set the numbers of players to 1 and sustain pedal to append (with the CC only sustain pedal behaviour enabled in the instrument options).

However, I am not able to combine your script with the JM multiscript, which requires the different instances to be on separate channels - as such only the first instance is “let through” to your script which is further down the multiscript chain.

Here, I just use the Blake Robinson script instead, so I guess I got the best of both worlds 😃
 
Last edited:
Did some more experimenting, and the answer is: nope. Seems to be due to an oversight in how the Claire woodwinds are scripted. (I'm using the clarinet as that's the only one I have, but I imagine the rest are similar or the same.)

If you do a same-note repeat without a note-off in between (using my script's Append mode or using a triple-sensor keyboard by barely lifting the key before striking again), the Claire instrument gets "lost" and doesn't cut the extra voice(s) when other pitches are introduced. (This is without modifying the instrument's pedal handling, by the way.) So if you're holding the pedal down and whatever script your using suspends note-offs while the pedal is down, any note that gets "stacked" like this will not get legato-transitioned from when you introduce other pitches. They will hang until their note-off is received as no neighboring notes can ever do so.

That means you can play chords with a Claire woodwind if you just double attack (and hold) each note in sequence even in legato mode. (Like C-C-E-E-G without note-offs to get a Cmaj chord.)

So with that figured out, you might be able to dodge this. If you have a progression of chords that share any notes between them, try holding the shared notes to avoid re-attacking them.
Hi again there kpmuzik!

Is there any chance you could help me out with a script similar to what you have in the Sus Ped: Append (from the Simple Divisi script) - only that it is an instrument script instead of a multi script?
 
Hi again there kpmuzik!

Is there any chance you could help me out with a script similar to what you have in the Sus Ped: Append (from the Simple Divisi script) - only that it is an instrument script instead of a multi script?
Sorry to say I'm only experienced with multi scripts. I've tweaked an instrument script here and there in the past, but I don't know how I'd port MIDI-based multi script logic to a note-/voice-based instrument script. And I'm not really in the position currently to see about figuring it out.

I believe that all "append" is doing is suspending note offs until you lift the pedal. So every note-off gets tracked and ignored when the pedal is down, then the pedal up triggers a process that loops through and plays all the note-offs that we ignored. So if you're the type to try this yourself (or if someone else wants to contribute), that's the process you'd be replicating in the instrument script.
 
Sorry to say I'm only experienced with multi scripts. I've tweaked an instrument script here and there in the past, but I don't know how I'd port MIDI-based multi script logic to a note-/voice-based instrument script. And I'm not really in the position currently to see about figuring it out.

I believe that all "append" is doing is suspending note offs until you lift the pedal. So every note-off gets tracked and ignored when the pedal is down, then the pedal up triggers a process that loops through and plays all the note-offs that we ignored. So if you're the type to try this yourself (or if someone else wants to contribute), that's the process you'd be replicating in the instrument script.
Got it - and totally understandable.

After some more digging, I believe a multiscript is the only way to go anyways, as the information has to come before the internal script of the library in question.
 
Top Bottom