Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

MainStage 3 - MIDI program change to plug in workaround sought.

Have been trying to find a solution or workaround to this problem for several days, with no luck so far. Appealing to more experienced users in hopes of an answer. For my live performance keyboard rig, I've been using KORE 2 for the last several years. It's stable and elegantly does what I need, but since it has been discontinued by NI, I keep my ears open for possible replacements. Mainstage 3 on the face of it looked like a truly viable alternative, and my initial tests with CPU and memory comparisons (especially when using channel strip aliases) were promising enough to investigate further.


The brick wall I ran into was in trying to get MIDI Program change messages assigned to Kontakt instrument banks, software synths and Guitar Rig. With KORE, it's simplicity itself to assign an initial MIDI program change number to every instance used in a patch, and if I need to change any programs on instances within that patch, to assign a button sending PG increment or decrement messages to that particular instance.


From everything I've read and tried, it seems that Mainstage's only response to MIDI program change is to change Mainstage patches. Any instances used within that patch are completely ignored. This is a HUGE deal breaker. Kontakt instrument bank and Guitar Rig channel strips stay on whatever patch assignment they had on initial launch of Mainstage and changing Mainstage patches has no effect on the patches of the instances.


If someone has found a workaround, I'd love to hear about it. It could be that my mindset is used to a certain way of working and a little creative input could shake my approach enough to solve this vexing problem. I certainly hope so. Mainstage 3 seems to have so much to offer, but without the ability to assign individual instance patches within each Mainstage patch it's useless to my way of working.

MainStage, OS X Mavericks (10.9.1)

Posted on Feb 10, 2014 5:12 PM

Reply
9 replies

Feb 11, 2014 4:13 PM in response to CCTM

Hi CCT,


Thanks for the quick reply. I found that panel last week while trying to get things to work, but still couldn't get any response from either the Kontakt or Guitar Rig instances. Your comment raises more questions for me. I read the MS release notes introducing this feature, but have difficulty grasping where these 'unused Program Changes' originate, how MS differentiates between used and unused, and how the PG message gets to the channel strips, but will do some experimenting. I first thought it might work in tandem with the program change control in the patch attributes, but still not getting any patch change responses from my test file. Is there a specific assignment that needs to be created in Assingments & Mappings?


Here's a simplified example of what I'm trying to accomplish. A Mainstage patch contains two channel strips. The first is a Kontakt instrument bank containing 3 piano patches, the second is another containing 8 brass patches. I want this MS patch to call up piano patch 2 and brass patch 5. Is this possible in Mainstage? Hate to sound so dense, because I'm usually pretty good with MIDI implementation. If it is possible and in the absence of more detailed info from Apple, could you spare a brief walk through of how you got Kontakt to respond? Many thanks in advance.

Feb 12, 2014 12:47 AM in response to mbaritone

Hi



mbaritone wrote:


I read the MS release notes introducing this feature, but have difficulty grasping where these 'unused Program Changes' originate, how MS differentiates between used and unused, and how the PG message gets to the channel strips,

MS generally responds to Program Change messages that come in from an external MIDI controller. If the Patch List has individual patches assigned to distinct PC messages, MS will change Patch to the one mapped to the appropriate incoming message. These are the "USED" PC messages.


If MS receives an incoming PC message that is "UN-USED" (ie not mapped to a MS patch), the PC message will be passed through to any channel stripes in that Patch.


For example, if you have 4 Patches (PC1-4), MS will call up Patch 4 when it receives a PC4 message. Whichever patch MS is currently on, it will pass through any other PC (ie not 1-4) to the channel strips. If you have Kontakt on a channel strip on any of these patches, with a Bank setup such that your piano sounds are on "Unused" PC slots within the bank, Kontakt will switch sounds within the bank.


If you want to do this simultaneously with 2 Kontakts, you would probably need to make sure that all the correct sounds are in the right slots within each bank.



mbaritone wrote:


Here's a simplified example of what I'm trying to accomplish. A Mainstage patch contains two channel strips. The first is a Kontakt instrument bank containing 3 piano patches, the second is another containing 8 brass patches. I want this MS patch to call up piano patch 2 and brass patch 5. Is this possible in Mainstage?

Not easily accomplished using incoming PC messages.


If I understand correctly, you would probably do much better to set up each Kontakt as a standard multi-timbral device, and then use MS to select which part of which Kontakt is used in a particular MS patch. You could use Alias strips of these Kontakt instances to save loading multiple instances.


See my posts here for all the details


https://discussions.apple.com/thread/5219746?answerId=22663842022#22663842022


https://discussions.apple.com/thread/3953705?answerId=18400943022#18400943022



CCT

Apr 7, 2014 2:04 PM in response to CCTM

Hi CCT,


Apologies for the delay in responding, as I had to shelf Mainstage experimenting for awhile. Finally got a chance to try and implement your suggestion and after working through some tests it does indeed seem to work very well.

Thanks much for the tip! If I could only figure a way to set up insert FX plug ins that saved their settings on a per preset basis, I'd really be rolling along.

Apr 29, 2014 12:35 PM in response to CCTM

CCTM- I think you provided me with something awesome!!!! Man, if you are willing- would love to invite you over to Hillsong Omnisphere Sounds in Facebook- lots of Mainstage users could use your expertise. I think this solution is awesome if it does what I am hoping it will do. Based on this, I could make an Omnisphere Multi loaded with 8 patches, alias copy it, edit the multimbral channels, and for each song (either by song, or song section), automatically choose any or all of the 8 parts on the fly- without having to go through finger gymnastics on my controller turning on and off parts. Is this correct?

Apr 29, 2014 1:15 PM in response to JavaJ

Hi



JavaJ wrote:


Based on this, I could make an Omnisphere Multi loaded with 8 patches, alias copy it, edit the multimbral channels, and for each song (either by song, or song section), automatically choose any or all of the 8 parts on the fly- without having to go through finger gymnastics on my controller turning on and off parts. Is this correct?

Yep :-)



CCT

Dec 5, 2014 1:38 PM in response to mbaritone

Found a breakthrough at last! CCT's multitimbral option to this problem was a great step forward, but did not address an efficiency issue. In my previous live performance rig (NI's KORE) if I needed several Kontakt sounds (piano, strings, whatever) that had different settings, yet the used the same core samples, a Kontakt instrument bank would load the samples and each instrument would share from the same pool of samples without reloading them multiple times. Sending MIDI program change (PG) commands would call up each patch in the bank as it was needed. MainStage's big Achilles heel was that PG commands would only change the MainStage patches themselves and anything within a channel strip that might make use of PG commands was ignored.


But here's the workaround. Create a MainStage patch and add an instrument channel strip. In the channel strip, create a Kontakt instrument bank with a few instruments in it. Now create additional MainStage patches to accommodate each instrument in the Kontakt instrument bank, copy the original channel strip and paste aliases of it into the additional MainStage patches.


Now, create a new mapping assignment. When performing, I use Logic Remote on an iPad to change patches and provide a visual reference to MainStage, so I set that as the device. For the other settings I use Channel: Unassigned, Type: Absolute, Number: Any, and MIDI thru: Do not pass through. I named this mapping 'Patch Change'.


In the Control Inspector, select the Unmapped tab and you'll be presented with some control options. Choose the instrument you created and another list of options appears. Choose the folder labeled MIDI Controller and in the next list of controllers, the third one from the top is Program Change. Select that and you'll see the map parameter options, Saved Value, Range Max and Range Min. You want to set them all to the same number, which will correspond to the patch you want to choose in your Kontakt instrument bank.


Now go through the other MainStage patches and repeat the actions in the last paragraph, changing the map parameter numbers to match the instrument in the Kontakt bank you want that patch to use.


Voila, you're done! Check your work by opening the Kontakt bank from the channel strip (or alias) and select different MainStage patches while watching the instrument selector jump around within the bank to reflect the PG numbers you assigned. Though I haven't done an exhaustive test, this method also works perfectly for some of the Arturia instruments and Guitar Rig.

Dec 25, 2015 4:30 PM in response to mbaritone

Hey all - I've been reading this thread in hopes of finding a solution to a problem I'm having...


I want to use 1 instance of Guitar Rig with Rig Kontrol at the Set level - that's the only way to have access to Rig Kontrols functions - patch changes, Wah etc... If you load GR instances to each MS patch, only the first one sees data coming from the RK...


However, I'd like to have MS send a patch or program change to the set level Guitar Rig plugin when switiching to another MS patch, so the right GR sound would be there right away on loading the patch...


Could I do this by creating an object in the MS patch with an attributation or mapping that would send a CC to GR when loading?


Thanks in advance if you can offer me any suggestions - and since today is Christmas 2015 - MERRY CHRISTMAS ALL!


James

MainStage 3 - MIDI program change to plug in workaround sought.

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