2 channel sostenuto; isolated question

Hello all!
Is this possible?

So; CC 71, [127], holds the sound on channel 1 and simultaneously, routes future input to Channel 2, Resulting in the sound assigned to channel 2 being played over the held sound of channel 1.

ON Pedal up, cc 71[=1], the process, and returns to “normal”; in A, ch 1, routes to out vA channel 1

Thanks much!!


A-Dispatcher-Virtual port 1

Virtual port 1-Ch filter Ch1-Sustain (mapped to CC71)-Output Port

Virtual port 1-Ch filter Ch2-Sustain (mapped to CC71)-Output Port (Map bypass to CC71)

Edit: I forgot about the delay needed for the bypass on the CH2 pipeline. That’s all that needs to be figured out really. Actually might need to rethink the dispatcher because that’s only going to separate notes. Maybe that’s desirable but what if you want chords on different channels?

Something like this should do the job:


Ch1 Sostenuto Ch2 switch.mhp (445 Bytes)

2nd line send to Ch. 1, 3rd line to Ch. 2.

CC71 switches the functionality, CC72 is generated internally for inverse control of some pipe bypass params.

Thank you, both of you for responding!
Trying out your patch, G:
Pressing cc71 [confirmed by monitor], ch 1 does not sustain, and ch 2 is not enabled on pedal down.

I tried removing the physical loopback currently on port D [from our last patch], and that made no change.

The preset I posted expects MIDI input coming in at MIDI IN A, and send output to MIDI OUT A. CC71 is expected at MIDI IN A, Ch. 1. Please make sure these expectations are met.

Right, except it goes out, virtual A channel one, and virtual A channel 2.

The outputs in this case are not virtual, but MIDI A ch.1 and ch. 2.

Did you open the attached preset as ‘standalone’ or did you insert it to an existing preset?

i opened as a stand alone. I did see the info entering the computer as it would for a virtual A.

I tried switching the two outputs at the end of the second and third pipelines to virtually, with no difference

This is my currently used patch that has an inversion option and out B option…

Midihub 2023.12.05 PJE.mhp (1.4 KB)

There’s too many moving parts - your preset looks quite different from what I posted.

Let’s take this one step at a time.

Please open my preset as-is, and hook up your MIDI controller’s output to MIDI IN A, and it will produce notes on MIDI OUT A, on Channel 1 when CC71 Ch.1 value sent to MIDI IN A is below 63, and on Channel 2 when CC71 Ch.1 value is above or equal to 64. Whatever notes that were still held at the time CC71 Ch.1 went above or equal to 64 will be held, until the CC falls below the threshold again.

Please keep the center Sustain pipe selected so its events are monitored, and if it does not work the way I described, please do “Settings → Export as CSV…” in the MIDI Monitor pane and attach the .csv file here for me to take a look.

If it does work, we’ll see how to integrate it into something bigger, according to your requirements.


Here’s what it looks like when I opened it.


Midi Monitor confirms what you have said. However, my sounds are in the computer, not Out A…

I tried switching the two outputs to virtual A, and although I could still see the events in midi monitor, Nothing appears at my host, Digital Performer. So there is no sound.


So my current question before we proceed is : how do I make the output go to channels one and two, virtual A, so I can confirm things work, and we can proceed.

Thank you!

In case you haven’t rectified this already, you don’t have any ports going out the MIDHUB. All I see in your screenshot is virtual pipes, meaning that no data will ever leave MidiHub. The ports that were originally DIN A needs to be a USB or Din Output that you will reference in your DAW.

Thanks for checking in Joey! Attn:R-
I replaced to Midi at the end of the second and third line,with to USB and it works!!
…BUT…ONLY cc71 should enable sostenuto- currently ANY cc seems to do the same thing. I use breath control ,cc2, so this is havoc. How do we make this patch specific to cc71
Ch1 Sostenuto Ch2 switchFOR MAC.mhp (445 Bytes)

i’ll take a closer look at it and see. More than likely you just need to be sure the transform pipe isn’t transforming ALL CCs to CC71.

Edit: I see where the discrepancy is. Go to the transform pipe and set the work with CC number, high and low, to whatever CC you want to control your sustain with.

1 Like

YES!!-that did it. Thanks much Joey!!
Next to combine with my 1st patch[attached]
which includes:: cc 69 inverts the notes, CC 66 switches to out B of midi hub, cc70 is straight sustain
11:30sus worx.mhp (1.4 KB)

How to get these to not interfere with each other…

Are you trying to save pipes? You have 255 max.

If you a have plenty of room, it is better just to have separate pipelines for your other desired functions.

This isn’t exactly how you would accomplish what you want to do but this is how you would add functionality. You have to take care of how you are filtering or allowing messages to pass. To test, go through pipe by pipe. Send your messages by pressing a key or twisting a knob, then move on to the next one and do the same.

Follow your messages all the way down the chain. Then you can figure out if you need to filter out messages or if they are fine going through. Don’t forget that the transform pipe can also drop specific messages so if you need something to vanish out of the chain you have that option.

Basically for your added functionality use virtual pipes to a new pipeline and do your remaining transformations there. The LFOS in the pic are just placeholders.

1 Like

whew!..I’ll try. Does the Signal flow go down the page?; left to right, next line etc.

It goes left to right then to the final port on the line.

If the final pipe on the line is a virtual pipe then it will go to a corresponding virtual pipe at the start of another line then go left to right towards the final port in the line. Example is Virtual A at the end of the line MUST go to Virtual A at the start of another line.

Just to clarify on your question how not to have things interfere. One of the first things you do is make sure any pipes that CAN target specific CC or channel DOES affect specifically that channel, CC, Note or Value. When you are setting up your transform pipes always specify which message and channel to “work with”. You can even fine tune it with the “work with value” range.

When doing rescales, be sure to set the message “ID”. Doing these makes it harder to get in a bind when you get to the end of your patch and you have a bunch of unwanted messages.

1 Like

Ha, ha -no need to save pipes:
Here are the patches I want to integrate.[some explanation under description}.
I really don’t know where to start. Despite the best of your advice. Perhaps when you get a chance… :slight_smile:

11:30sus worx+APPENDAGE -Ch 1Sos…mhp (1.6 KB)
Here is the first patch alone;
11:30sus worx.mhp (1.4 KB)
Here is the patch being appended
Ch1 Sostenuto Ch2 switchFOR MAC2.mhp (445 Bytes)

Thanks Joey and any/all that consider this!!