Buckle up, this post is a comprehensive rundown of VEPro optimizations! The community was helpful to me to get to the finish line so I wanted to give back 😊 That or maybe the cold brew just hit extra hard today...
Shout out to Adam Kloc who helped me build a plan of action and all of you who helped me jump some hurdles on the way.
I recently spent about 2 full weeks building a new template in VEPro 7 and finally broke through to a fully functioning set up without clicks and pops. It feels amazing and I can already feel how powerful this will be to my workflows!
I wanted to share my system, what worked for me, and some workflow ideas that I hope will help others aiming to build or rebuild their templates with VE Pro. As expected, the goal was to offload all static orchestral, keyboards and world instruments to a second computer. That way I could offload all the ram, cpu, disk demands off my computer.
EXPRESSION MAPS
I'm using Art Conductor 10 expression maps with attribution type. I mostly love it and am extremely impressed! They've taken a ton of work to unify every library to the same keyswitches starting at c-2 so you don't have to think about different library mappings, light guides, or anything else. All legatos are C#-2 so i can just select a track and go without thought! It's also well organized by name and easy to search on so things seem more alphabetical and organized while navigating it!
I also split out shorts from the longs for strings (and may do others) by assigning short articulations to channel 2 with a duplicate of the instrument on channel 2. This way I can have either a single midi track to trigger all articulations on one track, or split it so shorts are on one and longs are on another which allows better track predelay. I'd recommend if you use expression maps to explore this for sure as it must have saved me 20 hours of work and headaches and it's extremely thorough after spending an hour to wrap your head around it. For strings I split the midi and mix, but for others I just plan to split midi for track delay purposes of short vs. long.
Downside is you have to import one by one, and change channels one by one. It's still work and can be tedious compared to using one track per articulation, but I prefer a single playable instrument for inspirational flow. In the end it feels worth it to have everything totally unified at my fingertips!
I wouldn't bother with expression maps if I didn't have Art Conductor given Cubase workflows are tedious as things stand and improvements are slow coming.
PLANNING AHEAD
Plan ahead here! It's all a balancing act of Ram, CPU and Disk use. Any bottlenecks and it will sound like a bowl of Rice Krispies (snap/crackle/pop).
I built my template on a local machine as it was faster to iterate this way. I couldn't balance ram properly, but loading, building, and midi mapping was super fast this way. I then cloned my samples drives and remapped them in Spitfire/Native access which had a few minor hiccups and manual repairs, but it definitely paid off in my opinion unless you have things next to each other or using some smart software keyswitch.
THREADS
For instances it's an act of balancing your virtual thread amounts to your instances. The easy path here is to load it all into one single instance and put it at the maximimum threads for your computer. That way it's all equally spread to the highest potential. However, that is an organizational issue for me and only 48 midi channels made me want to split it out. So I used Strings, WW, Brass, Perc and Keys (other) to spread the load. I have 48 virtual cores so i went with 9 threads each (45 total across 5 instances) and left 3 for kontakt multithread (to handle the multitimbral patches which appears to be unnecessary so far).
What I probably should do is shuffle it around not by orchestral family, but by CPU usage and which hits 100% first so the threads go to the hungry patches. I wish VEPro had a filter or search and show what midi tracks/outputs are in use so we could just leave one big instance, but for now it seems best to use the least instances possible to really maximize threading and cpu balance in an easy way.
If your cpu hits around 85% and you hear glitches it's probably hitting 100% briefly so you need to allocate more threads to that instance.
Check the cpu per instance and adjust accordingly. Remember, you can make a whole new server to mathematically maximize your threads. Say you have 12 cores and 2 instances, that maxes out at 10 with 2 each, but you could have another server project with 2 threads thus using all 12!
DISK %
Check resource manager for peaks if you hear glitching. Add more ram to fix it so it preloads more of the samples and stops hammering the disk. You may also need to spread the samples across SSDs if one is overloaded with demand and you are out of ram trying to do more DFD.
RAM
Maximize the ram use by adjusting the preload of Kontakt, BBCSO, and samplers. This is tough to do all at the end so I recommend staying at the defaults and as you add libraries evaluate and continue. Save adding outputs and routing things until AFTER you get things tuned because you'll probably just have to redo that later and it's a big waste of time at this stage. Focus on Ram/CPU and Disk balance first.
Changing ram with too many instances open takes a long time to see the effects. I often had to close, reopen a single instance, then change it and reopen and wait 10-15 minutes to see the effect given the template size. To save you tuning time I put some metrics below.
For reference, here are some images. on optimizing Kontakt and BBCSO. Lower preload numbers use less ram, but more CPU, higher numbers use more ram and less cpu. At the end the goal is to use as much ram as you can. Note, standby ram is just accessible ram and not blocked ram.
For kontakt users be sure to check the Monitor/Engine tab to see CPU usage. It isn't 100% accurate to all ram used, but helps you know when loading is done, stalled, and general metrics for all kontakt instances.
For pc users use Resource manager to monitor your ram, disk and threads. Not that "Virtual Threads" here are the same as what VEPro calls thread in the multiprocessing tab!
_______________________________________________________________
CUBASE TEMPLATE
Rather than build from scratch, I joined Tom Schipper's patreon and used his template as a baseline. It's well thought out for routing and very similar to the approach I would have had. Note I am modifying it to only have shared reverb while playing rather than verbs per stem. If you don't already use one it's worth joining to get and supporting Tom too. Having routing and named tracks first helped me organize and consolidate my VEPro summing prior to hitting cubase.
Cool tip, you can adjust ALL plug in parameters for selected tracks at once with q-link. So if you want all cinematic rooms to have longer tails select all tracks, hit q link, and adjust (or maybe hit alt and adjust).
___________________________________________________________________________________
CRITICAL GENERAL NOTES
- VEPro
- Open VEPro first so it auto connects. Do so in the morning and wait it out :)
- Save groups of tracks as you finish them.
- As you finish libraries save them as a set so you can reload them later in other instances and shuffle things around! To move between instances it otherwise very tricky. If you move things it loses routing to named outputs so do things assembly line style here to save time IMO.
- If VEPro freezes, force quit in resource monitor or task manager. It unloads much fast this way and bypasses limitations of slowly unloading. It seems stable to do it this way.
- Automation to disable/enable is painstaking work. Save it for AFTER you have a functioning system so you don't have to do it again if you shuffle things around. Same goes for outputs. Get things tuned BEFORE naming and organizing outputs.
- More outputs = more cpu. I stuck to 44 and read 256 sits at 11-20% cpu just idling. Try to sum by group.
- You can pre-mix in VEPro with multitimbral patches by adding outputs which correspond to kontakt outputs, then using those vepro outputs to cubase to group and name them in cubase.
-
Cubase
- If notes get stuck or hang, you can disconnect and reconnect the instance in cubase to reset them. Saves time rather than track down and hit the ! in kontakt or otherwise losing time.
-
Asio Guard needs to be disabled for all vienna ensemble VST 3 plugins!
-
KONTAKT CRITICAL LOADING ISSUE:
-
I recommend double checking kontakt 7 instances and doing a manual reload all samples each time after you connect to start your VEPro session It seems some kontakt instances get stuck sometimes in a red state until this is clicked!
-
(File-Purge all instances-Reload all samples) each time it's loaded.
-
Example: I loaded my fully loaded session at 173gb ram. It had stopped loading, but several kontakt instruments were still red and showing 0 memory! Click reload all samples made the kontakt/monitor/engine move again and eventually loaded them all hitting over 194gb! Somehow, until manually triggered over 20gb of instruments didn't load at all (purged) when recalling.
_______________________________________________________________________