Problems with sending MIDI Program Changes

I am using MS2 to manage a large live keyboard/synth rig. Whenever I select a new song in MS2, it is supposed to send program changes (and possibly bank switches) to my external devices so that they update to the desired sounds.

However, from time to time, two of my external instruments (a Minimoog Voyager and a Muse Research Receptor) don't always respond properly.

The Moog changes to the desired patch but one of the parameters is always wrong --- that's 100% reproducible. However, if I send a program change to the Moog using a special purpose little gadget I had made that JUST sends out program changes, the Moog works fine.

The Receptor sometimes just stops responding to MIDI program changes. I can change patches manually on the Receptor from that point on and it still responds just fine to MIDI notes, etc but that's it.

This afternoon, I finally decided to take a look at the actual MIDI data being sent to those devices. I did this using my iPad with the Line6 MIDI Mobilizer and a free MIDI Monitor app.

I discovered that immediately AFTER MainStage sends out a program change, it sends out (most of the time) two CC messages (CC80 with value 0, CC81 with value 0). It turns out that the Moog responds to CC80 by turning off the HiLo freq range of Osc3, which was exactly the parameter that was breaking on each patch).

I don't know how the Receptor is responding to it yet.

The question is why are those CCs being sent out after program changes and how can I stop them. I certainly have no buttons, wheels or pedals defined in MainStage that would be responsible for sending such events.

Macbook Pro, Desk Pro, Mac OS X (10.6.6), www.deskew.com (digitize your sheet music for the iPad)

Posted on Apr 11, 2011 4:28 PM

Reply
11 replies

Apr 12, 2011 2:41 AM in response to dhjdhj

I would suggest you to check Mainstage's preferences for the the parameter value behavior on patch change. If it is set to "restore saved value", then it will be sent over your MIDI bus.
Using the other mode make MS only send values when the screen controllers are modified.

I had a problem also related to patch change sent to hardware synths, that I described on an earlier thread, but no one helped; when patch number and volume (or any CC) are sent on patch change, if your device takes some little time to load the patch, the CC are simply ignored, so i would need a way to delay the sending of some MIDI params on patch change.

hope it helps,
Valgreen

Apr 22, 2011 4:24 AM in response to dhjdhj

Hi. How do you actually change patches, with a mouse click or the up-down arrows ? Or with a MIDI hardware controller ?

Try to create in your Layout a couple of soft switches for patch change up and down, and check what kind of MIDI messages they send along with program change number. MIDI patch change management seems quite buggy in MainStage, with hardware synths and especially with third-part VIs: I didn't find a way to send them correctly to B4 and my other plugins yet.

Maybe there's something wrong in the Layout, too: sometimes it really drives me crazy. Yesterday the volume pedal assignment switched from CC11 to Note On/Off, I don't know how, and it took me some time, patience (and curses...) to understand where the trouble was

Try to export your Layout from the concert you're working, then create an empty concert with a simple Layout and export it too. Next, open your concert, import the simple Layout and check if program changes are working.

Hope it helps. Good luck.

Apr 25, 2011 7:55 PM in response to jantoman

I just use mouse clicks --- I'm not using MainStage to send program changes to plugins, it's just sending them to external MIDI devices.


I would be interested to know exactly what went wrong with volume pedal assignment, in particular the fact that you were able to understand what went wrong would be useful --- I have things go wrong from time to time and I've no idea why. Things that were working perfectly on one occasion fail to work properly on a different occasion even though the concert has not been changed at all.


It's getting really tired.

Apr 26, 2011 1:59 AM in response to nvssm

I'm sorry, I didn't fully read your first post: I missed the part about the "special purpose little gadget"... I suggested you the same trick you already tried, excuse me 😊


About my volume pedal issue, I was programming a two-layer patch with split point at C5. All of a sudden A4 started to trigger both sounds... I drove myself crazy trying to understand what was happening, until I switched to Layout and noticed that volume pedal was triggering A4 Note On-Off instead of sending CC11 😠

Maybe I accidentally hit A4 while the "Learn" button was enabled... but I wasn't working on Layout since about an hour. It could be a bug, after all: anybody experienced anything like that ?


About your issue, I guess your Receptor's MIDI buffer gets full with CC messages sent by MS2, then skips them until you reset it, while Minimoog tries to handle them, correctly or not. In fact it's a good idea to monitor MS2 MIDI out and check if "every" patch change sends out the same CC numbers and values: check it on other Concerts and Layouts too.

By the way, did you try to send patch changes to MS2 from your master keyboard and route them to your synths ?


As a temporary workaround, I would suggest you to follow Valgreen's advice and disable "restore saved value" on patch change, at least to see what happens. Last-chance solution could be a hardware MIDI filter... but it's not simple to find it and to set it up.


Just one wish for the next MS update... a fully user-configurable patch change section.

Apr 26, 2011 7:18 AM in response to jantoman

There are two other solutions I am currently considering


1) Rather than extra hardware, I could implement some MIDI filters using Max/MSP. Then rather than associating external MIDI ports with channel strips in MainStage, I would associate Max/MSP MIDI inputs with them and then have the Max/MSP MIDI outputs routed to the external MIDI ports. One advantage of this approach is the ability to use delays so that, for example, if a program change gets transmitted, then Max can hold the subsequent MIDI events (CC events) for a few seconds to give the hardware time to setup.


I just begrudge spending the time to do this as well as having to have extra software running all the time.


2) Switch to a Windows machine and use something like Cantibile (http://www.cantabilesoftware.com/), which I'm about to evaluate, it looks like it might to the job.

Apr 28, 2011 1:00 PM in response to dhjdhj

I just figured out this problem


(interpret these nice words between parentheses to mean the most obnoxious swear words that you can imagine!)



The problem is a consequence of a problem I originally reported a long time ago (https://discussions.apple.com/thread/2643580?answerId=12572359022#12572359022) which others have inexplicably suggested is a feature.


It is related to the problem where incoming control changes from any MIDI input device are arbitrarily sent out to all channel strips even though the control change or input has absolutely NOTHING to do with the channel strip.


I discovered this today by accident while using the MIDI Monitor to check something entirely unrelated.


Here's what's happening. I have a patch that contains channel strips for the following external MIDI devices

(A) Minimoog (B) Receptor and (C) Korg Oasys. All three strips have Program Change commands in them to setup those devices appropriately. The strip for the receptor also has another keyboard controller as its input. Neither the Moog nor the Oasys have any keyboard controllers assigned, they are both intended to be just played using their own keyboards.


However, when the Oasys receives its Program Change message, it switches to its new patch and then sends out some control changes. Guess what, those CC control changes are 80 and 81.


Those CC control changes are being received by MainStage and immediately sent out to all channel strips so they are received by both the Moog and the Receptor. If you have multiple channel strips going to the same instrument (e.g, using different MIDI channels for a multitimbral device such as the receptor, the CC numbers are sent out for each defined channel).


Those CC numbers have absolutely no meaning for other instruments and just shouldn't be relayed unless there is an explicit mapping.


The good news is that once I discovered this, creating a few sliders and configuring them at the concert level to block those CC control changes from the OASYS solves the problem.


I hope this helps someone else --- it has been incredibly frustrating.

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.

Problems with sending MIDI Program Changes

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