Bug? Sostenuto on the sustain pipe

I think?..

the sostenuto setting on the Sustain pipe is not working as described.

It allows through a note off message for a sustained note after it is played again. This is the behaviour described for semi-sostenuto, unless I am misunderstanding something.

Could be user error, but the midi monitor seems to suggest this is what is happening.

It is only fair to point out I have mapped the ‘Mode’ to a CC so I can switch modes remotely, but the editor certainly says it’s on sostenuto mode.

When a note is retriggered in Sostenuto mode, it produces a Note Off and a Note On event immediately. The reason for this is that the number of Note On messages a synthesizer receives should match the number of Note Off events, otherwise, there’s a risk for hanging notes, depending on how the synthesizer software is implemented.

Both, Semi Sostenuto and Sostenuto modes seem to behave as described in the docs:

Semi Sostenuto: The notes that were playing at the time the Pedal was pushed will be held, while new notes will play as normal. Replaying a previously played note will retrigger it, once released, it will no longer be sustained.

Sostenuto: Same as Semi Sostenuto, except replayed notes will retrigger and keep being sustained.

Thanks Giedrius

I was just about to get back to you with a screenshot, when I suddenly realised what the problem was. I am using an MPE controller - a linnstrument. I think the reason why the sostenuto is not working is because the notes come through on different channels.

In fact, before I go any further, let me check my theory

Yep - for definite. It’s the MPE that is confusing the latch pipe.

Would there be any way of fixing it?

Can you send me some MIDI monitor screenshots showing what’s your input, what outputs you get, and what’s the expectations?

One obvious way to fix it would be to remap all channels to a single channel, if the receiving device does not require using different channels.

Hopefully you can see the note has come through on a different midi channel, which means that the note off message leaks through. I was trying to think if there was a workaround using a filter in some way, but I haven’t come up with anything. It needs a dynamic note filter or something so that you could then collapse the latched notes to a single channel. But even if that worked you’d have to run parallel pipes for the latched notes and the played notes, each with filters.

I recognise that MPE is pretty niche though, so I’m not expecting anything.

Cheers

I think I may have an idea. Collapse the channels before the pipe and then redistribute them afterwards. I’ll give it a try, but I may not be able to get to it before tomorrow. I’ll let you know how I get on.

No, of course that won’t work because then the note is divorced from the MPE expression data. Anything could end up anywhere.

Yeah, Sustain works by sustaining pipes according to both, the note number and channel - the same note in a different channel is considered as an unrelated note to what you had sustained before.

Does the sound producing device require all the per-channel expression? If not, you can place a Channel Remap [1;16] → [1;1] for example, before Sustain pipe, to map all channels to a single channel.

If it does matter, can the MPE keyboard be configured to try and use the same channel slot for the same note?