Sostenuto MIDI Filter

Cantabile now supports a “Sustenuto” MIDI filter…

Using the sostenuto filter is pretty simple.


This is a companion discussion topic for the original entry at https://www.cantabilesoftware.com/blog/sostenuto-midi-filter-d53257535cde/

@brad
I think there may be an error in the implementation.
Insert the Sostenuto filter.
Play a note and then hold down the sostenuto controller.
Lift up your finger, the note continues, which is correct behavior.
Place your finger back on the note and release the sostenuto.
The note is cut off.
This is incorrect behavior.
For comparison, the PIZ MIDI Sostenuto plugin allows the note on to be reintroduced and does not cut off the note when the sostenuto is released.

Hi Ade,

Thanks for reporting - I’ll look into it.

Brad

Hi Ade,

I’ve made a fix for the next build.

To clarify some behaviour, for notes that were held when the sostento pedal was pressed:

  • playing the note again, will send a note off followed immediately by a note on (to prevent stuck notes with instruments that don’t support so called “triple sensor” keys).

  • releasing the note will not forward a note off until the sostenuto pedal is released. (ie: notes held when the pedal is pressed, behave like the sustain pedal is held while the sostentu pedal is pressed). I wasn’t sure about this behaviour but that’s what my digital Kawai piano does so…

  • keep a note held while the pedal is released will keep the note sounding until the note is released (ie: the originally reported fault should be fixed).

Brad

Hi @brad
I’m not sure this addresses the issue.
The objective is to reintroduce the note on as if the finger had never left the key.
This provides uninterrupted sustain, allows for additional notes to be introduced and removed and then locked back on when sostenuto is reintroduced.
I suspect your approach will kill any notes playing when the note off /note on moment happens.
At the very least, a retrigger.
Were you able to examine PizMIDI behavior?

All the best

Hi @Ade

I did a comparison to piz sostenuto and it does the same - introduces a note off before retriggering the note.

Cantabile (with fixes):

Piz:

Let me know if there’s a different case you’d like me to test.

My bad @brad.
You’re absolutely right. In the context I’m using it, the resissued note on is barely noticeable. My particular use case ‘gets away with it’ using Piz, which is why I missed that note offs are issued when a sounding note is reintroduced.

On a regular midi piano sound however, it kills the held notes, which is not viable.

Testing with a regular midi piano results in sounding notes being cut off as soon as those notes are reissued.
The question becomes whether there is an alternative protocol which performs as I thought it was operating, which is that note ons for sostenuto’d notes would be filtered out if replayed.

Notes would only shut down if the sostenuto and held notes are both released.
This would provide seamless transition between the sostenuto’d condition , the introduction of new notes into the sostenuto’d condition, and the off condition, while allowing non sos’d notes to be played anywhere except on currently sos’d notes.

It’s understood that no real piano can ignore replayed notes but, as it stands, a midi piano which only understands note ons/offs and sustain does not perform under current piz sostenuto protocol.

Is this doable?

Just some thoughts on this. As I understand sostenuto for a piano any held notes when the pedal is pressed will be sustained (as in damper pedal). If I strike any of those already sustained keys it sounds again (sends another note on). So wouldn’t you want to send another note on when a sostenuto held key was hit instead of ignoring it?

1 Like

Hi Dave, I alluded to this in my post.
The necessity to issue another note on event is a limitation of the mechanical action of a piano.
This is not something we have to concern ourselves with in the MIDI world, although for pianos which can fully take advantage of it, use a ‘conventional’ approach.
I described the current operation of PIZ’s offering above.
On a good old fashioned midi piano which only understands note on, note off and sustain, the implementation chokes a note of the same pitch value if it is already sos’d.
Useless in every scenario I can think of, unless the VST plugin can function under those circumstances.
In general use, sostenuto simply locks all notes currently on when the pedal goes down, but how do different plugins respond to sostenuto?
Differently.
A VB3 will not reissue percussion but will key click. A Cherry Memorymode reiterates the same note but does not stack voices as it would if CC64 were used.
A Mercury 4 offers 2 assign modes, mode 1 which cycles through the oscillators in turn, and mode 2 which reiterates the same voice. Under sos conditions, Mode 1 retrigs the envelope but does not cycle, Mode 2 ignores the retrig and sustains seamlessly.
It’s that Mercury behavior I’d like to guarantee.

To sum up:

  1. There’s no advantage to a a regular midi piano choking. It doesn’t behave like a real piano. Maybe some exotic piano plugins do.
  2. As there is unpredictable behavior introduced by (sos’d) note offs with note ons being produced immediately, I’m suggesting that a mode be offered which eliminates the note off until all registered notes are released and the sos is also released.

Thanks Ade, for the extra explanation. I get it all now. I hope a solution is on the horizon. :slight_smile:

1 Like

Hi Ade: I don’t know whether this helps, but my SustainPedalVST plugin has a “Retrigger” parameter that, when set to “off” (0), does (I think) what you’re describing.

1 Like

Wow - checking that out​:+1:t2::+1:t2::+1:t2:

I’m happy to add a new mode to the filter, but want to make sure I precisely understand it.

As I understand it, it should:

  1. suppress note on/off events for notes currently held by sostenuto.
  2. only release sostenuto held notes when both sostenuto pedal and the note is released.
  3. when a held note by sostenuto is released and pressed again before the sostenuto is released, capture that note as sostenuto again should the sostenuto pedal be pressed again before the note is released.

What descriptive name would one give such a mode that fits in a checkbox label?

1 Like

That’s it @Brad.
I guess the single sostenuto filter would still suffice as long as a check box for ‘retrigger’ was introduced.

“Re-trigger” sounds like this would allow the note to be re-triggered while held by sostenuto? Isn’t that the opposite of what this mode does?

Oh, I was just visualizing the current Sostenuto filter with a Retrigger field. If enabled by default, the current behavior is preserved. If unchecked, then no retrigger occurs under the conditions we’ve defined. Does that not do it?

Ah ok that makes more sense.

1 Like

Coming soon… (also added option to suppress the sostenuto CC)

1 Like

Quick question on this.
Not quite sure what the suppress Sos 64 indicates, as CC64 is sustain.
Is it a converter for 64 to 66, then suppressing the 64? If so, great!

Oops, you’re right. Typo, should be 66.