Jump to content

Feature Request to Apple: Change plugin sound (setting) on patch change for channel strip alias


MMU

Recommended Posts

Just like a new sound can be dialled up on external HW on patch change (via MIDI Output on External Instrument Channel Strip Inspector), need ability to dial up new sounds (i.e. plugin setting change) for a channel alias on patch change.

 

This would allow users to choose for each sound whether to allocate memory with a new channel strip or save memory but take a delay (due to setting change/sample loading etc) by changing the plugin settings of a channel strip alias.

 

At the moment, a new channel strip must be loaded into memory for each sound which can be very expensive.

 

I wonder how many others would like this.

Link to comment
Share on other sites

Thanks, I had already submitted my request there.

 

I was just interested if others also wished to save memory by being able to change sounds on a channel strip already loaded into memory rather than needing *a new channel strip in memory for each sound*.

 

For example, if I have two Omnisphere sounds (i.e. plugin settings which may be multi-timbral), A and B, I would like the choice whether to have two instances of Omnisphere in memory (one for sound A and one for sound B) vs changing the sound of a single Omnisphere instance (which may entail a delay due to sample loading).

 

If you have lots of patches, you will see that memory usage increases really fast with Mainstage. And using channel strip aliases at the moment is not as useful as it could be as plugin settings are not easy to change when a patch changes.

 

Memory is a major bottleneck for me when using Mainstage and this feature would make a huge difference for me as in my performance environment it is often possible to tolerate a e.g. up to 20 second delay when changing the settings of an instrument plugin. I would at least like the choice of having new plugins in memory for each patch vs changing their settings on patch change.

Link to comment
Share on other sites

I don't think the multiple instances of omnisphere is really taking up the memory, its the samples of each patch. As you noted, they pre load them all so that you can change patches quickly. For most people that is preferable, but I do understand your delima and I think a request to optionally be able to avoid loading the actual preset (with samples) until the patch is called would be interesting.

 

In the meantime, can you break your gig up into more smaller Sets in some way?

Link to comment
Share on other sites

I don't think sets help as again every new channel strip occupies new memory. I could use multiple concerts but changing concerts on-stage seems pretty risky.... In the case of Omnisphere, I can with the latest update I believe use MIDI messages from a controller to change sounds but this circumvents Mainstage's system for managing plugin settings and is not general for other plugins.

 

I think what I proposed is the right solution - for channel strips which are shared between patches (in Mainstage these are called aliases), Mainstage should allow plugin settings to be changed when a patch is selected. Just like an external synth can have MIDI program change messages sent when a patch is selected (see original post). Some plugins with extensive samples use huge amounts of memory (and they often have memory leaks making the situation worse) - it seems ridiculous to force users to load, upfront, all the sounds in a concert. : (

 

Anyway thanks for your helpful comments.

Link to comment
Share on other sites

Personally I don't think you will see the change you are asking for. Then it would not really an alias anymore. The whole point of the alias is to have a view of the same underlying channel strip.

 

The question is not whether its an alias or not...its whether the patch should be loaded ahead of time, regardless of whether its an alias. It would be an interesting feature add to allow presets to be loaded at the time the patch is called up. For most people that would result in undesirable delay between patches, which is why that is not the default, but I agree it would be an interesting option. I wouldn't hold your breath on that one from Apple though... they tend to avoid making things too complicated.

 

I used to use Brainspawn Forte on a PC, which is a similar application and it had this kind of option to choose whether to load presets (and samples) ahead of time or not.

 

I guess the best option in your case will be to try to break it up into multiple concerts, but just make sure you are changing concerts only at points in the show where you have some idle time.

 

Using omnisphere's capability to respond to patch changes is also not a terrible idea. You could setup a bunch of patches that each have an alias to the channel with one instance of omnisphere, or you could just put omnisphere channel at the set level, don't even need aliases. There are ways to get the desired program change sent to omnisphere with each one, including using the Scripter plugin.

Link to comment
Share on other sites

Thanks for the reply. I would really like a solution that is more general than just omnisphere and also something that doesn't require a lot of custom setup. I also think what I am proposing still keeps the alias concept intact as any changes to the alias are global (i.e. alias has a single state at any moment in time and represents a single instance in memory). Less advanced users would never even be aware of the option to load new settings into a channel strip alias on patch change. Anyway thanks for the discussion and let's see what updates to Mainstage bring. I also own Cantabile (on PC, coming to Mac soon), so hopefully we'll see a bit more competition in this market in the future.
Link to comment
Share on other sites

  • 3 weeks later...

As someone who uses some pretty complex patches, for guitar stuff, I think I can see one reason why its not implemented as you're thinking. MainStage has the means of doing immediate patch changes, that allow the previous sound to bleed over with FX, as the new patch is already switched to.

 

If you're having to load samples during a sound switch, there is no way it will be instantaneous. I would even guess that it would create an issue of a gap in the sound going with the method you're suggesting.

 

What kind of computer are you running? How much RAM do you have?

 

I ask because I have a template that has about 100 songs of patches contained in it. Which is several hundred plugins maybe closer to 1,000. All running on a MacBook Pro 2015 with 16gigs of RAM. It probably shows about 75% full on RAM with that many patches/plugins in it.

 

By no means do I run that template in my live show. My live show templates usually run about 30% of RAM capacity with upwards of well over 100 plugins in a setlist.

Link to comment
Share on other sites

Here's another program you can possibly check out: Gig Performer.

 

As far as your looking at Cantabile, it says this on their website: "Cantabile lets you pre-load every song, rack and plugin used by your set list so that switching songs is just that - switching, not loading."

 

Sounds like they're pre-loading everything in a set list as well. Which is exactly what MainStage does too. I couldn't find anywhere that said they were using aliases that were loading on the fly.

Link to comment
Share on other sites

  • 2 weeks later...

I'll have to check, but I seem to remember that we cannot send program change messages through to any AU v2 plugin. Dunno what's in the v3 standard except for > 16 MIDI channels. Perhaps PC messages too?

 

We *can* however send a PC message to an external instrument. If you can live with a single instance of Omnisphere, run they're standalone version, "learn" that to respond to PC messages, use SoundFlower to route audio, IAC for MIDI. Should work. I personally won't go this route because I'm already invested into Vienna Ensemble Pro, but I would think what I describe above could be a path towards a solution.

 

Every instance of Omni, Kontakt, whatever uses *some* RAM. Then there's whatever they pre-load, and then the actual memory used after actually having played patches. That's a consideration. Then there's the instance-tied-to-a-single-core question, so it's not as simple then as just loading 8 sounds into an Omni multi - sometimes we want stuff to spread out over cores. Your mileage will definitely vary - there are a lot of (inter)dependencies and much is dependent on your Mac, RAM, disk i/o...

 

I use Omni a *lot*. I have 3 instances, multi-timbral. Split out to max # of separate outputs. Ditto Kontakt. These get copied/pasted-as-aliases to actual patches where they're used (so the to-be-copied versions are stored in a set named "to be pasted as aliases". End up with a channel strip that sends MIDI to the channel strip. have to use multi-timbral on the midi input tab to change the MIDI channel on the fly. The audio coming back, is *not* pasted as an alias, but is an audio channel strip in the actual target patch. Why? EQ, effects, volume, all of that is specific to the patch. One piano goes a long, long way in this manner.

 

I've not found a better way and I've been using MS since v1.

Link to comment
Share on other sites

Program changes coming into main stage are typically used to change patches of main stage which might be why they don’t get through to the underlying au instrument. I’m not sure if it’s possible to configure ms to let them through somehow.

 

And as someone pointed out it seems that an MS patch can have an outgoing pc configured but only for external instruments.

 

But....

 

You can also write a very simple scripter script that will send the pc, and that definitely will get to the au. The trick is how to get that script to send the pc when the patch is loaded... I haven’t tried it... but look into that.

Link to comment
Share on other sites

ok here's a solution possibly, please let us know if this works for you or if you do some variation of this idea that works better in some way:

 

  1. In this example create a concert level instrument channel to host omnisphere and put an instance of omnisphere there
     
     
  2. Go to the LAYOUT tab of Mainstage, add a button to the screen somewhere by dragging from the screen controls palette.
    button.jpg.50e25a49e9f00690835a611e16f2a090.jpglayout.jpg.fd4a84ccbe10f64f498b648ddf54efff.jpg
     
  3. While the button is selected, look at the control inspector on the left side and configure it similar as shown here. For the "Number" parameter, set it to a CC controller you are not using, in this example I'm using controller 21. (note, need to make sure Omnisphere doesn't need it also.)
    buttoncfg.jpg.f2612f1a5c4c349ecbfb7deb6000283d.jpg
     
  4. Go back to the EDIT tab in mainstage
     
     
  5. Create a couple of patches in the concert.
     
     
  6. select the first patch, and seletct the "Assignments&Mappings sub-tab
    assignments.jpg.e4e8b3527f49445120a486da542c9b19.jpg
     
  7. Scroll down to the ctrl-21 line and select it
     
     
  8. Set up a mapping for the button to"program change". note that you want to set here the savedvalue, button on and button off values for the patch. Set all three values to the programchange number you intend to use inside omnisphere. In this example, "84"
    mapping.jpg.d74c59b2cce15eb012491d1b5a1f7797.jpg
     
  9. Do the same thing for each of the mainstage patches you intend to use this way, each one configured with the number you will use as a program change in omnispheres
     
     
  10. Now open ominspheres and find the preset you want to respond to a program change. Select it and right click to Learn Program change. Within a couple of seconds, select the patch in mainstage that is for that one. Omnispheres should indicate that the pc was learned. do the same thing for each of the other patches in mainstage.
    learn.jpg.bd9a187b5067aaad082189ce312f132b.jpg
     
  11. Now as you change patches in mainstage, the preset within omnisheres should change...while its just one instance of omnispheres at the concert level.

 

I also note that Omnispheres can respond to CC messages or keyswitches in order to change presets, which would be another alternative. Also, note that the ctrl-21 button could be just about anything, it doesn't have to be CC21...we have it set to ignore input from midi anyway. I just chose that as something that wouldn't interfere with anything else. There might be a better choice.

 

The real magic happens in the patch button mapping which basically makes sure that whenever the button is pressed, pc 84(in this example) will be sent out to omnispheres...and the "savedvalue" will be sent when the patch is loaded.

Link to comment
Share on other sites

looks promising, I'll try building this myself as well, but I would not want Omni at concert level, as it will always trigger and use resources, used or not. I like the screen control for saved values per patch and then remapping to PC - surprised that that works but if it does - cool!
Link to comment
Share on other sites

another thing, its a button so you can always hit the button on the screen to resend the pc to omni. But shouldn't need to.

 

And I agree about omni at the concert level... I was just trying to keep the example simple. But you could use the alias feature which means omni would only be active on the patches that are using aliases to that channel strip.

Link to comment
Share on other sites

okay, LOVE it. yeah, this is cool. what surprised me a bit is that your program change midi learns showed up in my Omni installation. Not sure what the further consequences of that would be (multiple concert files / multiple projects), but yeah... the fact that Omni now responds to midi learned program changes is very, very cool.

 

This single patches loaded really quickly on my machine, as expected.

 

There are some other upsides to this capability, among other things, Omni Remote works great with a single instance of Omni, but gets lost knowing which instance to connect to if there are more than one. So, *if* someone can live with loading Omni patches and multi's this way (I would think one would), then Omni remote is suddenly quite a bit more useful for us MS guys.

 

cool, cool, and again cool!

Link to comment
Share on other sites

You could still have several different unique instances of omnisphere a if you want. There is another way you could do it that I can’t put a demo together until next week, but you can have the button mapped to send some cc value instead of pc. Then use a scripter script to convert the cc into pc before hitting omni. Different cc for each instance of Omni. It’s not hard.
Link to comment
Share on other sites

Thanks. I’m familiar with the use of a screen control to save and send a value as you’ve done. Now that Omni responds to incoming prog chg messages, what you’ve done makes sense. And it actually works. :-) I can expand on this for multiple instances but need to think thru where this approach should be used and where it shouldn’t (load times, proximity to other Omni patches, patches that need to play through on patch changes, so forth and so on).

 

Great option to have now though

Link to comment
Share on other sites

  • 11 months later...
Thanks for interesting ideas! This was just something I was looking for. However, I downloaded the OmnispherePCsender.concert and the omnisphere preset doesn't change with the MS-patch. If I push the button, the preset changes. I can see the program change number next to the button changing correctly, but somehow it isn't sent to the Omnisphere. The preferences are correct (reset to saved value). What could be the problem?
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...