Native Istruments Komplete Kontrol is a front end browser library designed mainly for the Komplete 10 instrument bundle. It does a wonderful job of creating a fully featured browsing library to locate instruments and sounds super quick directly from the keyboard which really is brilliant when you are in the groove. The integration with Native Instruments own content is awesome but when it comes to 3rd party VSTs there is little to get excited about. You can load a VST instrument into the Komplete software and map controls (all good) but you cannot browse presets within the VST.
What you can to do is save a Preset from your VST into the User section of the software to recall when you need. This preset can also have all your controller assignments and library tags associated. This sparked my interest because the Ableton Push offers a similar feature where you can only load a preset if you first create an instrument rack in Live then save this with your preset open. this saves the instrument, preset and control mappings as a "rack" for easy recall. I spent months creating scripts and running batch processes to create VST browsing preset library for Push (all my instrument presets are now racked) and I wondered if this could also be possible for Komplete..... Turns out YES!
Currently I am in the process of creating browsable patch sets allowing complete tag based browsing of ALL presets within the following VST instruments:
- Omnisphere 2
- East West Play (Hollywood Brass/Strings Gold and others)
- Z3ta +2
Why Browse VST Presets?
Before even getting started lets be clear that creating a saved file for every VSTs preset sounds nuts (and is a bit). The solution is not a perfect one since you are saving elements (controller mappings) that cannot be updated in ALL presets should you decide you need to. Additionally you need to now waste space to store simple presets and it will never be as flexible as the VST browser.
So why even bother?
Well apart from loving a challenge (personally) I am also inline with many others that have been using PC DAWs and software since they Commodore and Amiga days that have, over the years, simply found that the large number of instruments, sounds, presets and plugins offer just way too much choice to be of any use. I mean, when you have a style of piano in mind do you look in the 20 different expansion options in Kontakt, or maybe there is a nice one in Omnisphere, definitely some in UVI, some more here in ToonTracks, not to mention the ones that came with Live Suit..... The prospect of selecting a tag called "Piano" then filtering down from there without loading and unloading plugins has been a dream.
So to make this a reality it's simple. Just open a VST, click preset number 1, save this within Komplete and repeat for every preset in every instrument....
Challenges in Creating a Browsable Preset Library
Lets start with some numbers just using Omnisphere 2 to showcase just how impossible this task is without automation. Omnisphere 2 has about 12000 different presets but with multiple tags. One of the great things with the Omnisphere library is finding sounds easily if you are in a certain "Mood". To save a preset from Omnisphere into Komplete browser requires simply saving a preset then creating individual tags in the KK software which would take about 30 seconds roughly to complete per preset manually typing the name, searching each of the tags then selecting in the software.
12000 x 30sec = 360000 seconds (100 hours)
No one is mad enough to even attempt that!
In addition to this you need to ensure your controls are already mapped to your liking. Then you need to consider all the other VSTs you need to process and here we are at the crux of the issue. It's impossible to do this by hand!
Scripting The Process
I am certainly no script wizard. I know basics but what I lack in hardcore script knowledge I make up with problem solving skills and this kind of process is a problem solvers candyland. What needs to be done is for all the keyboard and mouse movements to be automated and it HAS to be 100% perfect. It also has to be quick since this will tie up time and as much of it needs to run automatically to allow it to run overnight and unattended.
Scripting Using AutoIT
I learned how to use a program for Windows called AutoIT years ago which is a basic language program that is very powerful. There is no "record" function and you need to write every line of code for every movement but I have created hundreds of helpful scripts to automate all kinds of things for my systems and it really is a swiss army knife. One good thing is it is possible to script all actions and movements relative to the actual window, not the desktop so it can run on other systems and wherever the windows are placed.
Before writing a single line of code we need to first draw up a plan of exactly what needs to happen and how this can occur without any human intervention. Here is a list of steps I needed to solve for Komplete Kontrol (the same was for Ableton Push) to design a script:
1. Get the NAME of the preset
Yep, if this is going to be automated you need a way to easily read the name of the current script. Typically there is nowhere in a VST window you can just copy the preset name but almost every VST has a "Save As" option to allow saving a preset and often when you open the SaveAS window the name of the currently open preset is already loaded:
So for Omnisphere we can easily get the name of the preset by going to "Save Preset" then all we have to do is trim off the extension part of that (the last 8 characters). This is easily doable so that is the first step.
2. Save Preset in Host
In the Komplete browser we can save a preset by selecting the drop down arrow and then moving the mouse down then across to the right and click Save As. This would require a mouse click, mouse move then another move and another click.... Anyway, this is achievable.
Once the Save As dialogue opens we simply need to Paste the name of the preset we copied and hit Enter and we now have a preset from Omnisphere saved in KK.
That was pretty simple, but we are FAR from done!
3. Progress to Next Preset
Once the first preset has saved we then need to progress to the next preset and do the same thing over again. Almost all VSTs have a preset button and Omnisphere has a nice one at the bottom of the mini browser.
Once we can click this we then simply do the whole process over again, and again for every preset. This will allow us to step through all presets within a single category (such as Arps) and save these with at least the Arpeggiated tag as the base tag.
In a nutshell that's the process and then of course there are things such as error checks to make sure where we click is where we should click, if an error has appeared and a way to pause if we need.
The next step is deciding if that is enough. Consider we have 1000 Arp patches in Omnisphere. Searching for a style within 1000 presets is impossible by just name which is why Tagging is a big part of preset browsing:
What I would like to achieve in KK with Omnisphere at least would be to filter by Arp, Then by Type and possibly even by Mood. The issue here is there is no real way to read these tags in Omnisphere and apply them in KK on-the-fly... But after spending hours just thinking of how this could be achieved I cracked the method and again, it's completely automated:
One script I designed rips all the presets in a single category (such as Arps) and sets this as the base tag. Once all presets have been ripped (takes about 1 hour to process 500 presets) I then start a second tagging script.
This second script is WAY more complex than the first. Essentially I fill in the list (manually) of the listed tags (such as for Arps above I would create a text file with tags Analogue, Arps, Bass etc) on each line and match that up with the start in Omnisphere. The script then selects each file in Omnisphere within that tag, copies the name, does a search in KK for that patch then enters the name of that tag and applies it to the patch.
Once it has stepped through all the presets in the tag category it progresses to the next category and starts over. This can run through 15 tag categories unattended at a time to build up each preset with as many tags as I like.
You need some knowledge and a lot of patience. If you do not like to solve complex problems, forget about this.
It took basically 2 full days to even create the scripts with most of the time spent testing and trying to make them as reliable as possible. The problem with the KK and most VST windows is they have no exposed "hooks or handles" meaning when you use an analyser to detect the available elements to read from or controls you can interact with you see nothing other than a single window. This limits what you can do within the window to keyboard and mouse movements.
KK seems to not allow much of your keyboard commands to get through to the VST windows so much of the work is done using mouse clicks which kind of sux as these are not as reliable so much work was done fine tuning delays to keep the time it takes to rip a prset as low as possible (7 seconds per preset is the current time) while allowing enough time for the occasional computer lag and hiccup.
Next if something goes wrong and throws off window focus then this can cause the mouse to click in completely the wrong location for a moment which can really cause issues.
So far I have been able to process thousands of presets without issues now the scripts are tuned and they are in an easy format to adapt to any VST so long as the basic few steps of reading a preset name are available.
Can I See The Script?
I may be willing to share these at some point but due to the time and effort of doing the hard work I am leaving these open to a $10 donation as a way to at least buy me a drink if you really want the code to attempt your own. Certainly if these are of interest just let me know and we can work something out. Here is a snippet of the code used to rip the presets:
Can I Download the Presets?
That will be decided soon. I have offered up my preset packs for Push as a donation download because I do like to make it as accessible for as many as possible but the costs of hosting and bandwidth far exceed the donations I receive so my plan is to offer a very basic browsing set (1 category) for Free with the option to donate $10 to upgrade the presets to full tag browsing in KK since this is where a lot of my time and effort is being spent.
The issue with these preset packs is they tie up hours and hours of my machines time which I cannot spend making music. Some people have been fantastic over the years in supporting the work but based on the numbers I receive less than 1% of people donate Vs number of downloads and I need to cover some costs. The release will be decided at a later date. Keep an eye on the NI forums for news