How do I filter OUT unwanted MIDI-messages on patch change?

Here's my situation:


I see in the MIDI-Message-monitor that the value of the expression knob from each External Instrument Channel Strip gets send out as a CC11[value] message upon patch change. The receiving app doesn't need this information and it somehow misinterprets it, creating issues. My current solution now is to have MidiPipe filter this message out, solving the issues. My question: is it possible to somehow filter out this particular message within Mainstage?


Thanks!

MainStage, OS X Mountain Lion (10.8.5)

Posted on Mar 28, 2014 3:54 AM

Reply
12 replies

Mar 28, 2014 6:19 AM in response to melleweijters

To filter out unwanted incoming MIDI messages, at the concert level select assignments and mappings and scroll to the bottom of the list. Select unassigned and uncheck "send unassigned MIDI to all channel strips".

For outgoing MIDI, in the channel strip inspector>MIDI input, you can filter some outgoing messages, including CC#11 expression, on a per channel strip basis.

Mar 28, 2014 12:12 PM in response to lifenoise

Thank you, lifenoise, for your quick answer.


My hardware input device is setup that it doesn't send Expression data by default, so filtering the Expression (11) in the MIDI input tab for every channel strip didn't make the difference: every channels strip keeps sending out the value of the Expression knob in the External Instrument upon patch change.


Next, I setup my input device to also send Expression data to check if your method works for me and, yes, I am able to filter it out with your method for every channel strip in every patch. However, upon patch change, every channel strip still sends out its value for the Expression knob as a CC11 message. It doesn't matter if I set them to 0 or 127, or anything in between, as soon as the receiving application receives a CC11, it creates issues.


So maybe I should rephrase my question: is it possible to bypass the Expression knob altogether?

Mar 29, 2014 8:11 AM in response to lifenoise

Dear lifenoise,


your last answer didn't bring me any closer to a solution. I tried to eliminate all redundant factors to show the heart of my problem.


First, I created an empty concert. No inputs, no controllers, nothing.

In the first patch, I added an External Instruments Channel Strip and turned the expression knob to 0.

In the second patch, I added an External Instruments Channel Strip and left the expression knob at 127.


In both channel strips, I checked the filter Expression in the MIDI-Input tab and on concert level, I unchecked 'send unassigned MIDI to all Channel strips'.


I attached two screenshots which show what Mainstage does when I change patches: it sends out the value of the Expression knob as a CC11[value] message. This is exactly what creates issues in the receiving app. Any thoughts on how to filter out this message upon patch change?


thanks again!


User uploaded fileUser uploaded file

Mar 29, 2014 11:35 AM in response to lifenoise

Did you click on the images for a better view? The MIDI-output goes into a software application which provides assistance when performing with the real (or virtual) 31-tone Fokker-organ here in Amsterdam. I know the developer of the software, so I will ask him if he can close the door for unwanted incoming CC11's. For now, I will stay with the solution which I mentioned in my original post: route the MIDI output to MidiPipe-patch which filters the message out before it goes to the application. Still, if anybody knows a solution in Mainstage, I'd like to know!

Apr 9, 2015 11:09 AM in response to lifenoise

My last suggestion probably wouldn't be ideal. If you filtered outgoing MIDI CC#11, you wouldn't be able use expression on the external instrument channel strip. You might be able to use the Scripter plugin to block only the first CC#11 message and let all others pass through for that patch. I'm not yet familiar enough with Scripter to do it, but someone else in the community might know how to do it.

Apr 10, 2015 7:48 AM in response to lifenoise

ok. i came up with a solution that seems to work, using the midi scripter plugin and this simple snippet :


function HandleMIDI(e) {
        if (e instanceof ControlChange && e.number == 11)
        e.trace();
}


it simply monitors CC#11 but does not send it through. i have now an instance of scripter on top of all channel strips where I need to keep CC#11 from being sent to my synth. Working like a charm so far, finally. Peace of mind and back to work 🙂

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

How do I filter OUT unwanted MIDI-messages on patch change?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.