Notifications
Clear all

Performance of preset selection


Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

Hi,

I have converted my live set to (almost) always use Unify to manage the swithcing and patch selection of my various plugin instruments I play live (in Ableton).  I've noticed that the selection of some presets (most notably with Omnisphere), can take a few seconds, during which time controls freeze.  Audio continues to play fine, so it's no super critical.  However it does mean that if I have 3 midi tracks each with an instance of Unify and requiring all 3 to select a new preset, that only one seems to fire at a time.  I am needing to try stagger the 3 tracks preset selection using Ableton clip follow instructions.

A couple of questions:

1) Is it normal for the patch selection to take a few seconds per Unify instance - I don't remember that always being an issue.

2) Is the patch selection a serial process (ie cannot have 3 happening at the same time)

3) Is there anything I can do to streamline this - I thought I vaguely remembered there being someway you could get the instrument loaded in memory separately before patch selection???  It's all a very vague memory and I might have this mixed up with a Reaktor thing.

 

Thanks in advance

 

Steve

 

 


Quote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

Just subscribing


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2788
 
Posted by: @pottz

1) Is it normal for the patch selection to take a few seconds per Unify instance - I don't remember that always being an issue.

Unify can change patches very quickly, but third-party plug-ins (in this case Omnisphere 2) cannot restore from saved state instantly (mostly because it takes time to unload and load samples). I have no control over this.

2) Is the patch selection a serial process (ie cannot have 3 happening at the same time)

It's usually serial, but Omnisphere and other Spectrasonics plug-ins are exceptions--multiple instances can restore saved states simultaneously, because of the way they do it internally.

3) Is there anything I can do to streamline this - I thought I vaguely remembered there being someway you could get the instrument loaded in memory separately before patch selection???  It's all a very vague memory and I might have this mixed up with a Reaktor thing.

The technique is to set up all the combinations you need in embedded Unify instances (so everything loads into RAM once and for all), and then enable/disable individual INST layers at the top level using a MIDI Controller File, or carefully-crafted links to the midiEnable parameters (see https://pluginguru.net/unify/manual/doku.php?id=param-paths). This will be a bit easier in Unify 1.6.0, which is set to ship later today.

I have also just asked John to consider making a short dedicated video about this.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 11 months ago
Posts: 89
 

@pottz

I experimented with doing something similar back in Nov 2020 where I had 2 instances of Unify in Cakewalk and I was alternating patch changes between the 2 instances.  Basically while I was playing one instance with my midi controller kybd, automated patch changes were sent to the other instance in the background ahead of when I would need to play it.  I had a way for my midi controller to jump between the two instances when desired and this was automated as well.  I eventually decided it was too much hassle to set the timing of this up.  Also, I found that Cakewalk time control would freeze during the background program change but didn't cause any problems otherwise.  I now load all my instances ahead of time but still switch between the instances using automation, which is easier to setup.  And I also often create one Unify instance and do as Shane indicated with automating midiEnable of the layers, which I control thru Macro automations in Cakewalk. Lately I've been leaning more towards the latter.

I know we discussed some of this in your post: https://forums.pluginguru.com/unify-live/controlling-patch-selection-with-multiple-unify-instances/#post-5384

This post was modified 2 weeks ago by craigr68

ReplyQuote
SSquared
(@ssquared)
Member
Joined: 2 years ago
Posts: 164
 

I recommend, whether in a DAW or Standalone to have ALL of your sounds pre-loaded.  This will prevent having to switch, make program changes, or introduce possible glitches as you wait for something to load.

One option I use is to use MIDI Channels for everything.  Prepare your sounds in Unify, assigning specific MIDI Channels to them.  Then, on your keyboard controller, you can change MIDI Channels to play a different patch.  I have found this a much smoother experience with keyboard workstations as opposed to plain, no sound, MIDI controllers.

Ableton Live 10, Omnisphere, Native Instruments (Pianos), Spire, Diva, SynthMaster, Alchemy 1.55, Addictive Keys, Unify


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 11 months ago
Posts: 89
 
Posted by: @ssquared

One option I use is to use MIDI Channels for everything. 

That's basically what I'm doing in my method1 above.  I do have a couple synths like Rapture, that seem prone to stuck notes with Midi Channel switching on the fly.  In those cases I embed sustain off (cc64) events after the change to insure no problems.


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

Thanks all for the tips. What you are suggesting is largely what I used to do, but without Unify. I used a nested chain of each vst and would then do program selection on each of those, or have a standalone instance for things like Kontakt and Reaktor where the ensemble selection could not be done on the fly.

So where I have got to now with Unify is already a huge improvement. I’ve replaced 3 midi tracks each with about 15 plugins in a chain, with 3 midi tracks with one instance of Unity each. I can live with the timing issues I have for the convenience and simplicity of my solution. I play house and techno, so generally have DJ style crossfades between tracks where I have time to switch.  I also have some nifty tricks like an automated way to record 4 bars of any synth into a looper that can keep playing whilst I change it n the background. 

thanks again for suggestions…


SSquared liked
ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2788
 

John is going to demonstrate this in tomorrow's livestream, and probably also create a short dedicated video about it sometime later.

I have just added a new page to the Unify manual which includes a nice example you can download, for setting up exactly what you (@pottz) asked about.

This example also demonstrates the new patch variation display feature in Unify v1.6, which is just about to ship. This allows your multi-part patches to display the name of the active part at the top of the GUI, next to the patch name.


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

Great, thanks - will look out for that.


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

I just had a quick look and that looks like it could be really useful.  I'm prepping for a gig this evening so no time now, but def will have a deeper dive tomorrow.  I think I might be able to use this.  thx for the continual innovation!


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 11 months ago
Posts: 89
 
Posted by: @pottz

I’ve replaced 3 midi tracks each with about 15 plugins in a chain, with 3 midi tracks with one instance of Unity each.

So how do you switch between all those vsts?  So you've got like 45 vsts loaded simultaneously?  Do you use midiEnable parameters to switch levels on/off?  Where does the switching between vsts originate - via controller keyboard or Ableton automation (thru Unify macro controls)?  Curious what your hardware setup is.


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

@craigr68 the 45 vst solution is my old solution. Back when I did it that way each of the 3 midi tracks would have a nested chain n Ableton (not sure if you know Ableton , but think of it as 15 midi paths in parallel) Ableton has the ability to select one of these chain paths via the Chan selector and, through mapping, also enable that vst (all others will be loaded, but switched off).

I could map a dial, or buttons to the Chain selector for vst selection, but that’s too fiddly for a live techno set and esp if i need to change 3.  Instead I use dummy midi clips to do that. These dummy clips select the correct vst and the right preset (Bank/Sub/Program). I use a scripting language called Clyphx to do this and a bunch of other Song-specific stuff (timed tempo change, dynamic controller binding relevant for the song and instruments, key changes for tuned effects and percussion etc).

I use Push2 as my controller to trigger the dummy clips. The dummy clips and all other audio clips are saved as a song unit so it’s really easy to set up a setlist for a gig. I just drag in the songs I want into my template and everything works for a seamless set (my longest to date was a 3 hour 35 song set at Burning Man 2019).

With Unify, the 15 vsts are replaced by 1 Unify instance and an external instrument connection (for hardware synths).


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 31
Topic starter  

@getdunne, I thought I'd report back in that now that I have updated to version 1.6.1., the timing issues I mentioned in the original post have gone, and I am back to the (totally acceptable) timings I remember when I first started implementing this functionality.  It's almost as if the indexing on my control file had got screwed and has been put right now.  Either way, I'm really happy with performance now.  What was taking ~5 secs to select an Omnisphere patch, now takes about the same time it takes in Omnisphere ~<1sec.

 

Love your work!


getdunne liked
ReplyQuote
Share: