# Kontakt - Individual Instances vs Instance + MIDI



## Zhao Shen (Jan 9, 2016)

Hey guys,

Up until now I've composed using one instance of Kontakt per instrument track. I like the flexibility it gives me in terms of volume modulation, effects routing, and ease of use (no extensive scrolling). 

However, almost everyone I know uses an instance of Kontakt per 8 or 16 MIDI channels. I hear it conserves resources to use this method - is that true? I am perfectly content with the workflow I have currently, but on my latest project I found myself resorting to freezing a few tracks after I found myself with over 70 instances of Kontakt and other plugins. Would switching to using the "one instance per multiple MIDI tracks" method cut down on the CPU usage significantly.

I've tried switching before and found the resultant workflow a little indirect for my taste, but yeah - what are your guys' thoughts? Thanks in advance!


----------



## P.N. (Jan 9, 2016)

Hi.
I use both methods, depending on the project. Other musical genres and light orchestral stuff, normally i add a Kontakt instance per instrument. One for violins, other for percussion, other for bass, etc.
If the project is more complex (full blown orchestration), i use one instance per section - strings, brass, winds, etc.
Volume modulation and effects routing are also easy to achieve in a single instance, using Kontakt's multiple audio outputs.
Other advantage for using less instances is, for example, when working with non keyswitchable instruments. You can use one midi track with multiple channels for each note, in which each note can correspond to a different instrument.
(Some people hate working like this though, but i think it can be quite handy and allow you to have a clean midi track). This can also work if you have lot's of unisson instruments. In this case, reversing the idea - assigning multiple instruments to the same midi channel.
Scrolling can be confusing, and actually limit the workflow, i agree. The only solution i have is minimizing the instruments GUI, but it doesn't help a lot.
Regarding CPU usage, i did read somewhere that using many Kontakt instances will "significantly" increase it. By how much? No idea.


----------



## jtnyc (Jan 9, 2016)

I think it depends on what DAW your using. In Logic 1 instance per instrument is the way to go as Logic uses only 1 core for a record enabled instrument track, so if you have 4 instruments loaded into 1 instance, you will end up really pushing that 1 core while recording, and you'll be recording 4 tracks of midi, so by the time your recording the 4th track there is a pile up of resources being used on that 1 core. 

Other DAWS may distribute the workload more efficiently in this situation.


----------



## tack (Jan 9, 2016)

Zhao Shen said:


> However, almost everyone I know uses an instance of Kontakt per 8 or 16 MIDI channels. I hear it conserves resources to use this method - is that true?


I started this way, but since moved away to the separate Kontakt instance per instrument setup. I am much, much happier with the simplicity of this, and it's actually lighter on resources in practice. But yes, being able to bring tracks offline (by which I mean fully unload Kontakt) and online is a crucial element to the resource savings -- not so much for CPU (at least my DAW, REAPER, is quite good at optimizing away empty tracks) but memory.

If you're mostly happy with your current workflow, I'd look at trying to improve the convenience of working with offlined tracks (what Cubase calls freezing I guess?).


----------



## willbedford (Jan 10, 2016)

From what I understand, when you use multiple patches in a single instance of Kontakt, each sample will only be loaded once, even if multiple instruments are using it. So if you have a string sustain patch and a legato patch which uses the same sustain samples, those sustain samples will only be loaded once. If you load those patches in separate instances, Kontakt isn't 'aware' that those other instances exist, so it will load the same samples twice. I believe this is solved by using Kontakt Memory Server (but that comes with its own set of problems).

In short- in certain cases, sharing a Kontakt instance will reduce memory footprint and load times.

Someone correct me if I'm wrong. This is just what I've noticed when watching the sample memory meter.


----------



## Tod (Jan 10, 2016)

willbedford said:


> From what I understand, when you use multiple patches in a single instance of Kontakt, each sample will only be loaded once, even if multiple instruments are using it.
> 
> Someone correct me if I'm wrong. This is just what I've noticed when watching the sample memory meter.



No, you are not wrong, this is one of the many great aspects of Kontakt.


----------



## tack (Jan 10, 2016)

willbedford said:


> If you load those patches in separate instances, Kontakt isn't 'aware' that those other instances exist, so it will load the same samples twice. I believe this is solved by using Kontakt Memory Server (but that comes with its own set of problems).


I don't know about Mac, but this isn't the case with Windows provided the Kontakt instances are loaded in the same process space (i.e. your DAW does not do bridging for each separate Kontakt instance). Samples are shared across instances provided the Kontakt instances are in the same process space (not bridged).


----------



## Zhao Shen (Jan 10, 2016)

Wow, thanks for your input guys. Lots more than I expected. I don't find myself running out of RAM ever, so it's usually a CPU issue.



P.N. said:


> Volume modulation and effects routing are also easy to achieve in a single instance, using Kontakt's multiple audio outputs.


Could you elaborate on this - How is this achieved? Never managed to figure that out. For reference, I'm on Cubase 8.


----------



## P.N. (Jan 10, 2016)

It's a bit tricky to explain, but i'll try. 
I don't know about Cubase, but in Sonar you have the option to, when inserting Kontakt, you can choose to insert an instance of Kontakt with extra outputs, ready to be routed to. (Kontakt 5 16out, Kontakt 5 8out).
Otherwise, you'll have to create empty audio tracks and assign them to the Kontakt outputs.

First, i'd recommend you press the "Output" button on each instrument, and "create separate Master Output Channel". (This will guide you when routing out each instrument in the next step.)

Then you need to click on Kontakt's "Output" button which brings Kontakt's "mixer". Here you assign outputs that will correspond to output tracks on your daw. If you created separate channels for each channel, they should be easy to identify.

By default, the instruments are routed to 1/2 output. You can assigned the second instrument to the aux1, for example, aux1 will correspond to output 3/4, etc, if you'd like to have things organized.

Hope this helps.


----------



## Tod (Jan 11, 2016)

tack said:


> I don't know about Mac, but this isn't the case with Windows provided the Kontakt instances are loaded in the same process space (i.e. your DAW does not do bridging for each separate Kontakt instance). Samples are shared across instances provided the Kontakt instances are in the same process space (not bridged).



Humm, could you explain what you mean by "same process space"?

I've tested this with Reaper before, and the RAM used for 8 instruments in 8 instances of Kontakt is nearly double the RAM used with 1 instance in 8 instruments.


----------



## tack (Jan 11, 2016)

Tod said:


> Humm, could you explain what you mean by "same process space"?


Just the area of virtual memory that is assigned to a single process. Separate processes get their own VM space. Kontakt doesn't seem to use shared memory, so samples can't be leveraged between processes. But within the same process it does work.



Tod said:


> I've tested this with Reaper before, and the RAM used for 8 instruments in 8 instances of Kontakt is nearly double the RAM used with 1 instance in 8 instruments.


Assuming you aren't using VST bridging with each Kontakt instance (or at least the mode of bridging that assigns each VST to a separate process), Kontakt will share sample memory between instances.

But of course each Kontakt instance itself does consume additional memory. I think it was somewhere around 60MB when I looked (though this probably depends on the size of your Kontakt database, if you have that enabled). So if you're talking about a patch with relatively low overhead, then indeed having separate Kontakt instances is going to add up quite fast, relative to the amount of memory used by samples. For large patches, the Kontakt overhead is a much smaller percentage.

Try this experiment: create two tracks with separate Kontakt instances, each holding the same patch. (Pick one that uses a fairly large set of samples to make the results clearer. For example, Friedlander violin uses about 1GB of samples.) Purge samples in both, and save the project out. Restart REAPER and load the project in, just to establish a clear memory baseline. Now open one of the Kontakt instances, and reload all samples. Take note of the memory consumed by REAPER, which should increase a fair bit based on the memory used by the samples. Now open the second Kontakt instance and do the same thing. This time, the memory consumption will not increase (beyond a little bit presumably caused by the GUI), because the samples are being shared between the instances.


----------



## SamTheAudiocrat (Jul 24, 2017)

P.N. said:


> Hi.
> I use both methods, depending on the project. Other musical genres and light orchestral stuff, normally i add a Kontakt instance per instrument. One for violins, other for percussion, other for bass, etc.
> If the project is more complex (full blown orchestration), i use one instance per section - strings, brass, winds, etc.
> Volume modulation and effects routing are also easy to achieve in a single instance, using Kontakt's multiple audio outputs.
> ...



Hey P.N. , just curious, I also use Sonar (Platinum) and I do pretty Orchestral heavy stuff  Like how Logic uses just one core for record enabled tracks, How does Sonar optimize its work-flow? This leads to my question, in Sonar, would you prefer One Instance - One Instrument, or One Instance - Many (16) Instruments? My current template has an Instance for each group (Strings, Brass, Perc, etc.) and multiple instruments loaded into it controlled by individual MIDI tracks (channels) and Seperate audio outputs for each instrument to provide flexibility to each instrument.

I would also like to know which is better not just for virtual memory, but in terms of CPU processing, as Virtual Memory is not really a problem for me. In, other words, which would be easier on the CPU, using Sonar Platinum 2017?


----------



## Amadeus (Jul 24, 2017)

@Zhao Shen
You should also checkout this thread (if you haven't already):
http://vi-control.net/community/threads/cubase-instrument-track-or-rack-best-practice.63333/
It convinced me to use one instrument track (i.e. one instance of Kontakt) per articulation patch and no regrets so far.


----------



## SamTheAudiocrat (Jul 24, 2017)

Amadeus said:


> @Zhao Shen
> You should also checkout this thread (if you haven't already):
> http://vi-control.net/community/threads/cubase-instrument-track-or-rack-best-practice.63333/
> It convinced me to use one instrument track (i.e. one instance of Kontakt) per articulation patch and no regrets so far.



Hey Amadeus, this explains it very well for Cubase. But how about other DAWs? I use Sonar Platinum on a Windows Computer (obviously  ). I was wondering which of the two methods would be less taxing on the CPU while using Sonar? :-D


----------



## P.N. (Jul 24, 2017)

Hi, Sam.

While different Daws can yeld different results, with Sonar (my) results show me that the less instances the better - but my main focus was virtual memory, not CPU usage. When you have more than 100 instruments in a template, all those instances of Kontakt tend to eat more memory than the total of its samples footprint (this is specially true when also using instruments that depend on impulse responses - those eat up memory too).

Because of Kontakt's maximum 16 instruments per instance, we cannot really "just" have 4 or 5 instances, but yes, my example above is the general arrangement i prefer. Also for organization purposes.

1 Instance Solo Strings, another for big string ensembles/sections, small, etc. I have one instance just for Albion Strings (with all different sections and time machine patches), for example.

Regarding your main concern - which method (more or less instances) is more CPU friendly, i honestly can't say for sure, at least with Sonar. (other Daws may have been tested in this regard).

P.N.


----------



## Amadeus (Jul 24, 2017)

SamTheAudiocrat said:


> Hey Amadeus, this explains it very well for Cubase. But how about other DAWs? I use Sonar Platinum on a Windows Computer (obviously  ). I was wondering which of the two methods would be less taxing on the CPU while using Sonar? :-D


You are right, the discussion is focused on Cubase. Unfortunately, I am not familiar with Sonar at all...


----------



## Thomas A Booker (Jul 24, 2017)

This may be of interest:


----------



## SamTheAudiocrat (Jul 24, 2017)

P.N. said:


> Hi, Sam.
> 
> While different Daws can yeld different results, with Sonar (my) results show me that the less instances the better - but my main focus was virtual memory, not CPU usage. When you have more than 100 instruments in a template, all those instances of Kontakt tend to eat more memory than the total of its samples footprint (this is specially true when also using instruments that depend on impulse responses - those eat up memory too).
> 
> ...



Yeah I agree P.N I have read that an empty instance of Kontakt takes like 40-80 mb often RAM. So every instance loaded takes that much more. But then again 80mb is not a lot and is a meager amount too sacrifice if it helps in performance :-D I was planning on doing some tests on Sonar. I will put up the results here in a few days  let's see how Sonar reacts :-D


----------



## SamTheAudiocrat (Jul 24, 2017)

Amadeus said:


> You are right, the discussion is focused on Cubase. Unfortunately, I am not familiar with Sonar at all...



I'll try some tests on Sonar and see if Cubase and Sonar react the same way to multiple instances :-D


----------



## SamTheAudiocrat (Jul 24, 2017)

Thomas A Booker said:


> This may be of interest:



So, in terms of cpu it hardly made a difference? Interesting :-D


----------

