Switching Kontakt Snapshots

I purchased several Orange Tree Samples libraries during their Summer sales event. The Evolution guitar and bass libraries have Kontakt snapshot presets that I like a lot. I’d like to switch among these presets by sending program changes or MIDI messages in bindings to Kontakt, but I’m not seeing a way to do that (due to a Kontakt limitation). Has anyone found a way to do this in C3?

I would put the Kontakt, with instrument, into a Cantabile rack, and change presets using bindings to states within that rack. Most every library I have is in a rack. It is management friendy, and switches immediately in most cases. If you use the rack in several songs within a set list, it stays loaded in memory, with no need to reload for each song. Racks are an amazing tool in Cantabile.




Some good stuff here in this thread for Kontakt use in Cantabile 3.

Hope it works out for you …



Great suggestions, Corky and Dave! My Kontakt instruments are already in a linked rack, so I just need to dig into rack states (a technique I’ve not yet explored).

1 Like

So I created a linked rack with the Orange Tree Samples “Evolution Rock Standard” library loaded in a Kontakt VST3 plugin. I created four different rack states, each corresponding with a Kontakt snapshot.

I had to include the “Entire Bank” state option, as that was the only way it would actually save the snapshot parameters for each rack state. However, switching states takes about 3 seconds and the size of my linked rack is large (> 12 MB) with only four states.

In Kontakt, the snapshots switch instantaneously, so I suspect the “Entire Bank” option is saving and loading more data than is necessary. I am also using the “Locked” state option, which should speed up rack state switching. Is there a better way to save snapshot settings without the “Entire Bank” option so the rack states load immediately?

Hey Bruce,

The only way I know of is to pre-load all the various Kontakt patches into the 16 slots of a Kontakt Multi set to different MIDI channel inputs and then select the patches by changing the MIDI channel on the input route in Cantabile.



1 Like

@dave_dore is right - you should load all patches you need into Kontakt (on separate MIDI channels) and then address them by selecting the right MIDI channel. This way, you can also create layers or splits (two routes, with different key ranges for splits).

Using “entire bank” snapshots with Kontakt means that it will need to unload the current sample set and re-load the next one from zero - too much delay time.

So the best solution is to keep everything you need (at least for one song) in memory at the same time - provided you have sufficient RAM to do so.



In Cantabile there are always multiple ways to do things. No way is right, no way is wrong. What I will describe is the “beginner level, Padawan learner, white belt, no-new-concepts” way. Its limit is you can only have 16 Kontakt instruments. It uses no advanced Cantabile or Kontakt concepts, only standard MIDI tools.

One thing, for Cantabile to efficiently load samples, the plugin instrument must be in a Rack. I won’t explain any more than that for now. If you have (free) Cantabile Lite, you won’t be able to use Racks. That means you probably don’t want to switch songs either, because without Racks, Cantabile will reload Kontakt and its samples every time you switch Songs.

First, create a new Linked Rack, and add (an empty) instance of Kontakt. Name the Rack something like “Kontakt Orchestra”. Use all defaults—no tricks for now.
Load up the instance of Kontakt with up to 16 instruments you want to use. For example, let’s say we want to make available 8 orchestral instruments. We need strings, a few solo instruments, and brass. (Note that you can use a Kontakt Multi, but that means only one instrument can play at a time. Also, it would require you to send a MIDI Patch Change to the Multi to select the right instrument. We’ll assume no Multis for now.)
As you drag and drop instances from the Kontakt library, Kontakt will assign them unique MIDI channels. For now, only simple Kontakt Factory Library instruments, but you could use more complex instruments as long as they use only one MIDI channel.

Save the Rack and close Kontakt. Your Rack looks like this:

Cantabile by default created a single Omni MIDI Route. Omni means any MIDI information on any MIDI channel sent to the Rack input passes through straight to the Kontakt instrument. The Stereo Output of the instrument goes out the Output Port of the Rack. MIDI in, Stereo music out.

Close the Rack and you’ll find yourself at the Song level. Notice it looks a lot like the Rack level. There is a Route to send MIDI from the default “Main Keyboard” and an output from the Rack to the default “Main Speakers”.

Looking at the Song level, this song has a Rack and an Omni Route from the Main Keyboard to the Kontakt Rack. Input for the Rack comes from Main Keyboard, Stereo Output (music) from the Rack will go to the default Main Speakers.

Now you have a Rack that will listen to MIDI from the Main Keyboard and respond to MIDI input on channels 1 through 8. From a Master Controller Keyboard, you could access the sounds like any hardware device which listens on 8 MIDI channels. Since Cantabile created an Omni Route, you can send MIDI information on any channel, and it will be routed to the Kontakt instrument within the Rack on that same channel. If that’s good enough, and you have a Master Keyboard you like to program, you are done.

If you don’t like to fiddle with the Master Controller Keyboard, the next step would be to use Cantabile Songs with different Routes to access different instruments.

Above is the information needed to create a Route that listens on MIDI ch 1 and sends on MIDI ch 1. Notice there are a lot of options you can use other than just straight pass through.

Create Cantabile Songs each with Routes sending to the Kontakt Rack on the MIDI channel that will trigger the Kontakt instrument you want. Editing Route parameters gives you a lot of flexibility.

For Song number 1, for example, you want to have Strings. Create a Route from Main Keyboard to the Kontakt Rack that targets MIDI channel 1 (as above).

For Song number 2, you want Strings and French Horns. Create two Routes from Main Keyboard to the Kontakt Rack on MIDI channel 1 and MIDI Channel 3. Your keyboard will need to transmit on MIDI channels 1 and 3.

Perhaps you want some brass for Song 3, but you only want to transmit from MIDI channel 1 on the Main Keyboard—you don’t want to fiddle with making complex sets on your hardware. Your Routes can be any source and target any channel. You can also define splits and layers.

Here’s a pair of Route where everything above middle C (MIDI 60) goes to trumpets and everything 59 and below goes to trombones, all without changing the Rack at all. And no tricks for the Main Keyboard—it only needs to transmit on MIDI channel 1. Cantabile handles the split and the channels.

These techniques will work on Cantabile Solo and Performer. Free Cantabile Lite doesn’t have Racks. Racks are what makes the samples stay loaded. If you are using sample-based instruments, you want to use Racks. You could use Cantabile Lite and make all of your changes from you Master Controller Keyboard, but that might get fiddly. I encourage you to support development of Cantabile and use one on the paid subscriptions so Cantabile will keep getting better and be around for a while.

Hope this helps,


I appreciate all of the suggestions and help, guys. I am using Performer, so I use linked racks extensively for any instrument that will be reused in multiple songs.

My issue with creating a Kontakt multi with one slot/channel per preset is that I will be loading the same instrument 16 times, which seems rather inefficient from a memory perspective. I was hoping for a way to just switch snapshot presets with a single instance of the instrument, but it doesn’t appear that is feasible without using rack states, which as I mentioned switches slowly.

I‘m also using a library from Orange Tree Samples and the only way to get fast switching is the way with multiple instances inside kontakt or using a multi as described here before.

As I already use 11 different sounds so far I also was afraid of exploding ram. But as far as I remember ram amount wasn‘t increasing linear with the number if instances. Obviously kontakt is able to remember if the same sample content is used several times.

You can also observe that loading the first instance takes quite a while whereas the following once are loaded in some milliseconds.

Maybe it would be a good idea to compare ram used in cantabile for only one sound and compare to to say 3 or 4.

Regards, Volker

1 Like