Jump to content

Stuck Notes


HOOK

Recommended Posts

I noticed this in the new update:

Optionally send Send All Notes Off message to VST plug-ins

Using certain VST plugins can result in stuck notes after playback stops. You can now optionally send "All Notes Off" messages to all VST plugins when the transport stops, by enabling Send All-Notes-Off Messages on Stop in Edit > Preferences > File - VST Settings.

This option is off by default to avoid incurring delays when stopping playback when using many virtual instruments.

I've used Cakewalk to record only audio for 27 years.  You heard me...lol.  But I've begun learning to use the MIDI features over the last few months.  I've been having this stuck note issue on occasion so I'm glad to see an option to stop it.  But I'm curious to know...is there something that I'm doing to cause these stuck notes, or is it just a nuisance we all have to deal with?

Also...with this option enabled, roughly, how long of a delay are we talking about when stopping playback?

Thanks.

Link to comment
Share on other sites

1. Stuck notes in general
When starting with MIDI, the #1 reason for stuck notes is down to sustain pedal events (CC #64).

For most instruments a sustain pedal event is either on or off - so a CC#64 of either over 64, or in some cases over zero will mean "sustain on" and a CC#64 value of zero will mean "sustain off".

A non-zero CC#64 value is sent when the pedal is down, and a CC#64 value of zero is sent when the pedal goes back up.

Even if a note off event is sent, if the synth hasn't received CC#64 value is still not zero, then the notes will continue to play until a CC#64 event is received.  For piano, the sound just decays slowly, but for an organ sound or synth pad sound, it'll keep on playing - this is really useful BTW when you're playing live with multiple keyboards and need to switch both hands from one keyboard to another!

So if you stop playback before CC#64 goes back to zero (or a "Reset All Controllers" message), you'll get stuck notes.   You can get around this by:

a. Having Cakewalk send "All Notes Off" / "Reset All Controllers" on playback stop; or
b. Clicking the "Reset MIDI and Audio" button next to the transport module:   

image.png.65ee82adb1d5b4cd0e249c02102d6959.png
c. Pressing and releasing the sustain pedal if the stuck notes are on the active track

2. VST's receiving All Notes Off
The delay in playback is completely dependent on (a) how the VST handles All Notes Off messages, and (b) how many of those VST's you have in the project.

The All Notes Message is a channel message, which means to silence a synth, which means it needs to be sent on all 16 MIDI channels per VST.  If you've got 100 VST's, then that's 1600 messages... and each message is 2 bytes long.

A lot of VST's simply ignore the All Notes Off message.

Some VST's / VSTi's deal with the message quickly, by just stopping everything.  If the VST isn't multi-timbral, or always listens in MIDI Omni mode, it can do this.

Some VSTi's however deal with it in a slow way by internally sending a note off on all 128 notes, on all 16 channels - so 2048 internal MIDI messages per instance of that VST.... and MIDI note off messages are 3 bytes long.

What makes this worse is if the VST processes this on the UI thread, as it will literally block everything else until it's done handling the messages.  Only then can it go on to the next VST. Although this might be only a fraction of a second, multiplied by 100's of instances, it can add up to a few seconds.

  • Like 1
Link to comment
Share on other sites

@msmcleod  Thank you.  I'm generally running 4 or 5 VST's tops, so it shouldn't be much of an issue.

You're right about the sustain pedal.  I usually notice stuck notes on midi sections that I use the sustain pedal on.  And it's even more frequent when I split a midi clip and move stuff around.  I was wondering if that was causing the sustain to remain in sustain mode because sometimes I can click on the clips pane well after the midi clips and push play twice...that stops the stuck note.

Link to comment
Share on other sites

Just to clarify a bit:

All Notes Off used to be sent by default;  having it off by default with an option to enable it is new behavior.  Also note that in a synth with a proper MIDI implementation, a pedal down (CC64 > 63) message will override All Notes Off (CC123 = 127) so you additionally need to have Zero Controllers When Play Stops enabled when working with tracks that use sustain. (the one exception I know of is TruePianos which does not honor the standard and will not keep sustaining when it gets All Notes Off).

Also I should mention that a common casue of stuck notes in CW/CbB historically is having the VSTi inserted in the FX Bin instead of in the Synth Rack. Using the FX bin to get the synth audio into the track is supported for compatibility with projects that used that legacy configuration but is not the preferred setup.

And, finally, since @msmcleod is watching, I'll re-iterate my longstanding request to be able to enable Zero Controllers selectively - e.g. only for Sustain - so that synths that use Modulation and Expression controllers for volume control (e.g. Garritan JABB/GPO) don't go silent on Stop. Having appropriate controllers for Searchback to find helps on restarting playback but it doesn't address the need to be able to rehearse with the tranport stopped. The only option in that case is to disable Zero Controllers.

  • Like 1
Link to comment
Share on other sites

1 hour ago, David Baay said:

And, finally, since @msmcleod is watching, I'll re-iterate my longstanding request to be able to enable Zero Controllers selectively - e.g. only for Sustain - so that synths that use Modulation and Expression controllers for volume control (e.g. Garritan JABB/GPO) don't go silent on Stop. Having appropriate controllers for Searchback to find helps on restarting playback but it doesn't address the need to be able to rehearse with the tranport stopped. The only option in that case is to disable Zero Controllers.

While I can definitely see the advantage of this, it's really up to those VST/Kontakt Library developers to either not abuse modulation/expression for other things and/or implement Zero All Controllers better - i.e. if they know that Modulation is volume, then don't set it to zero when a zero all controllers message is received.

Zero All Controllers is really a misnomer in some respects, as what it really means is "Reset all controllers to default".  The default for volume is usually 100, and the default for expression is usually 127.   Most MIDI devices/VST's set these values for volume & expression, and set everything else to zero.  In addition, Bank Select MSB ( CC#0) and Bank Select LSB (CC#32) are usually excluded, as these are really just extensions to Program Change.

The default for Modulation (CC#1) is 0 - however if a VST is using CC#1 for something else, they should reset it to a more sensible value.

There's no way to exclude controllers from a zero-all-controllers message, as it's a single message.  The only way to exclude a message, is to send a individual CC message for all other controllers...  so instead of one message, you'd be sending 126 of them - on every channel, and to every device. This will be slow to say the least.

  • Like 1
Link to comment
Share on other sites

Curiously, I can't recall ever having a stuck note issue with anything other than certain Kontakt instruments. There must be some scripting trick that's not universally known, as evidenced by vendors whose products never seem to exhibit this problem (e.g. OTS, Indiginus, Spitfire). Probably not coincidentally, those vendors are also known to employ sophisticated scripting, suggesting deep expertise.

OP: which synths have you experienced stuck notes with?  

  • Like 1
Link to comment
Share on other sites

23 hours ago, msmcleod said:

The default for Modulation (CC#1) is 0 - however if a VST is using CC#1 for something else, they should reset it to a more sensible value.

There's no way to exclude controllers from a zero-all-controllers message, as it's a single message.  The only way to exclude a message, is to send a individual CC message for all other controllers...  so instead of one message, you'd be sending 126 of them - on every channel, and to every device. This will be slow to say the least.

"Zeroing" Modulation causes trouble with a lot of synths/patches, including hardware, because it's often used for some sort of tonal or FX control, yielding a 'nominal'  sound somewhere around 64.

I understand that you wouldn't want to send hundreds of individual messages to reset everything. I'm thinking that you might have just a few radio options like "All", which would still use CC121 - Reset Controllers, and then some individual ones like "Sustain Only" or maybe checkboxes for a few key ones that could be combined when "All" is disabled (not sure offhand what else might be useful). Alternatively, it occurs ot me this might be solved by doing the Searchback on Stop instead of - or in addition to - on Start. I haven't thought through all the implications of that; just "spitballing" as they say. Just having the "Sustain Only" option would suite my needs.

Edited by David Baay
  • Like 1
Link to comment
Share on other sites

15 hours ago, HOOK said:

I've used Cakewalk to record only audio for 27 years.  You heard me...lol.  But I've begun learning to use the MIDI features over the last few months.  I've been having this stuck note issue on occasion so I'm glad to see an option to stop it.  But I'm curious to know...is there something that I'm doing to cause these stuck notes, or is it just a nuisance we all have to deal with?

Also...with this option enabled, roughly, how long of a delay are we talking about when stopping playback?

FWIW as David mentioned we used to do this by default. I changed it because for some errant VSTi's it would lead to delays when we tried to turn off all notes on stopping playback. You should generally not run into stuck notes even with it off, but if you do you can turn it on as an extra safety.

  • Like 1
Link to comment
Share on other sites

On 11/11/2022 at 1:29 PM, bitflipper said:

Curiously, I can't recall ever having a stuck note issue with anything other than certain Kontakt instruments. There must be some scripting trick that's not universally known, as evidenced by vendors whose products never seem to exhibit this problem (e.g. OTS, Indiginus, Spitfire). Probably not coincidentally, those vendors are also known to employ sophisticated scripting, suggesting deep expertise.

OP: which synths have you experienced stuck notes with?  

Hey Bit.  I've had others that I won't be able to recall...but currently, I have a problem in one track with the SI-String Section.  Sticks every time I stop playback unless I stop playback after the last passage about 3/4 through the song.  

Link to comment
Share on other sites

1 hour ago, Max Arwood said:

I have a lot of stuck notes. All are Kontakt samples. I click on the reset button like McLeod said. As soon as I hit play the stuck note starts again. It is very bothersome! I’ll go check my settings 

 

Are you sure you've not got a sustain pedal on (CC#64) event somewhere without a matching sustain pedal off event?  This can be very easy to do if you're moving notes/controllers around.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...