Support the development:
Black Bass Script - script for Scarbee Black Bass.
PMI Baroque Organ script - registration presets and voice saving for PMI Baroque Organ.
Crossfade - modwheel controlled velocity layer crossfade on/off for any instrument.
Matrix alternation - articulation switching inspired by Vienna Instruments.
Alternation - setting up sequences of articulations (for a single key-switched VSL instrument)
MIDI Filter - switching articulations using conditions (for multiple non-keyswitched instruments)
Speed control - switching articulations using playing speed (for a single key-switched instrument)
RAM Manager - group level purging, using any sample in a group will mark the group as used
Part Maker - ensemble parts without phasing problems.
Velocity Test - test the velocity response of your keyboard.
Release trigger bugfix - workaround script for the Kontakt 2 release trigger bug.
FX Morph - morphs parameters between fx presets.
Transpose Range - transpose certain key ranges (eg. to move keyswitches).

Black Bass Script - script for Scarbee Black Bass

This is the official script for Scarbee Black Bass implemented by me and being the result of a fruitful collaboration with Thomas Hansen Skarbye at Scarbee. The script is integrated into Scarbee Black Bass. It is not downloadable from here so this particular script just serves as a showcase of my work and as a way to spread the word about this cool instrument.
Black Bass features four sampled strings and the script automatically determines the left hand position and which strings and frets to use as you play (also manually overridable using keyswitches). Each string is monophonic just like on a real bass, so a new note stops an earler one when necessary. Legato playing automatically triggers hammer-on/pull-off articulations and legato playing with the pedal is pressed triggers realistic sampled slides with speeds anywhere between 60 and 280 bpm as determined by the velocity of the slide note. The slides employ a new technique invented by Thomas and me that reduces the RAM usage and allows for the continous variation of speed with preserved sound quality. There's a special chord mode which ensures that the string selection works even when chords are played a bit sloppily and the notes do not arrive at the exact same time. To my knowledge this is the first script to use the UI technique which enables us to visually display articulation dependant symbols on top of the strings in the way shown above.

For a more complete list of features please see www.scarbee.com or download the press release.

Script for PMI Baroque Organ - registration presets and voice saving for PMI Baroque Organ

This script gives you an overview of all the stops of PMI Baroque Organ. You can turn each stop on or off by clicking or keyswitching at any time, and also load and save registration presets. The script automatically detects combinations of stops for which combination samples exist and uses these samples instead of playing each stop individually in order to reduce polyphony.

Huvudvaerk/Rygpositiv/Brystvaerk (main page) & Pedal and keyswitch/midi settings (second page):

Usage:
Click a button to determine whether the stop is active or not. In the preset menu up to the left you can save and recall presets. To specify which keyswitch should be used to activate the current preset, press the Learn button and then the note you want to use. This way you can setup and easily switch between a set of presets. It's also possible to toggle each stop dynamically using another set of keyswitches. Choose between Pedal, Huvudvaerk, Rygpositiv and Brystvaerk using keyswitches F5, G5, A5 and B5 respectively and then toggle a stop of the selected division using keyswitches C6, D6, E6 and so on. Please note that when one toggles a stop by clicking on a button the change is automatically saved in the current preset, but when a stop is toggled using a keyswitch the change is not automatically saved (to make it easier to use keyswitches in pieces without changing the base presets).

It is possible to use different MIDI channels for the divisions by setting the instrument to receive on channel Omni and then specify the channels one wants to use on the second page. The midi channel settings are global and not preset-specific.

How do I install it?
SampleTekk/PMI has not yet provided the latest update in Kontakt format, so begin by downloading the Giga update (50MB) and import this to native Kontakt2 format. This will give you a file called RP 37 krumhorn 8.nki and a folder called Samples. Move these two into the Baroque Organ MAIN folder. Then move up one level (out of Baroque Organ MAIN) and download and extract this file there. Now open Kontakt and load Baroque Organ All.nki (the script is integrated into this patch).

If you like this script please consider making a donation to support my script development.

Crossfade script - modwheel controlled velocity layer crossfade on/off for any instrument.

This script can be used on any instrument with multiple velocity layers to crossfade (equal-power) between velocity layers using the mod-wheel. Moreover, the crossfade mode can be switched on and off dynamically at any time using a MIDI CC of your choice. It handles instruments with up to six velocity layers.


How to setup the script
  1. Set the Kontakt intensity slider of any velocity->volume modulation in your instrument to 0% (show me how).
  2. Enter the number of velocity layers into No. Layers.
  3. Lookup the top velocity of each layer in the mapping editor and enter these values into Layer 1, Layer 2, and so on starting with the lowest layer. The top layer is implicitly assumed to have 127 as its top velocity so you don't have to enter its value (and it's not even displayed). There's an animated guide showing how to perform step 2 and 3.
Now you can play and use your mod-wheel to crossfade between layers.

The remaining (and optional) settings are:
XFade CC
MIDI CC used to control the crossfading.
Activate CC
MIDI CC used to activate the crossfading mode.
velrange
The dynamical range determining how much note velocity influences volume.
modrange
The dynamical range determining how much the mod-wheel influences volume.
The higher the dynamical range the quieter the softest notes will be. The maximum volume is constant.

How to install the script
Download the script preset file for Kontakt 2.2 and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Performance folder (or the OSX equivalent). Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.
Only the K2.2 version has support for release samples.

Did you find this script useful?
Please feel free to make a donation to support the development.
Acknowledgements
Many thanks to R.D.Villwock aka. 'Big Bob' for developing his amazing math library on which this script heavily relies for doing equal-power crossfade.

Matrix alternation - articulation switching inspired by Vienna Instruments.
This scripts works for instruments with multiple groups and lets you specify a matrix of articulations (a couple of rows and columns). Each item in the matrix corresponds to a group of your instrument. By controlling the horizontal and vertical choice by MIDI CC, playing speed or keyswitches you select the articulation you want to use. The script is inspired by Vienna Instruments and uses new scripting features in Kontakt 2.1 which make flexible user interfaces possible.
Performance view:
Edit view:
Requirements
For the script to work you need to deactivate any key switches since these interfer with the script. To do this open your instrument in edit mode, in the group editor activate 'Edit All Groups', expand the group start options and change any 'start on key' option to 'always'.

How to use the script
Select the size of your matrix and then specify the groups you want to alternate between. Then configure how you want to alternate within the rows and between the rows. You can use MIDI CC, playing speed or configurable keyswitches to do this.

How to install the script
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Performance folder (or the OSX equivalent). Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.
If you like you can download the background image as well.

Did you find this script useful?
Please feel free to make a donation to support the development.

Alternation script

This script lets you configure alternation for key-switched instruments. It's meant to implement the functionality of the alternation mode in VSL's performance tool. You can use the script to specify the order in which to switch between a set of articulations, eg. first 2 notes staccato, then tremolo and then a pizzicato note, and so on. Furthermore, each such alternation set is called a line and you can setup multiple lines and use key switches to change between them. Each line can hold up to 20 different articulations, and you can use up to 27 different lines.
Download the script, version 1.3 (unzip the file and place it in C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Instrument specific and restart Kontakt2).

Here's a demo (mp3) of the script in action. Key switches used to change articulation line are indicated with a "ding"-sound. The sceenshot above shows the settings for the first part.

The script is still in a development phase, but it's working pretty good so I'm releasing it to get some feedback. So far the instruments supported are VSL Opus 1 instruments (some brass instruments still missing) and all the VSL instruments in the Kontakt2 Library. It's pretty easy to add support for any key-switched instrument should there be an interest.
Although there are many complex scripts out there, this script utilize the user interface in some new ways that might be interesting to K2 scripters.

UI documentation:

Alternation page
Since NI has limited the user interface area, it's not possible to show all articulations of a line simultaneously. Therefore, they are split up into four pages. Page 1 shows articulation 1-5, page 2 shows articulation 6-10 and so on.
Alternations
Here you set the articulations that you want to use, and for how many notes they should be active before the next articulation is selected. You can also choose to delete the current articulation or insert a new empty articulation before the current one. Articulations that are not available for the current instrument are automatically remapped to similar ones that are.
Display
A display of the list of all articulations. The one that will be used for the next note is indicated with >>.
Matrix line
Which line (set of articulations) to use. You can change this manually, or using key switches.
Settings for current matrix line
Choose a setting in the menu, and change it's value using the edit control. For key switches you can press the learn button and then key. Below there's a text explaining what the setting means.
Instrument
Which instrument to use. This affects what key switches are used for the articulations and what articulations are available. Articulation which do not exist for a specific instrument will be automatically remapped to similar but existant ones when you set up your articulations. The instruments prefixed with "K2" correspond to the orchestral part of the Kontakt 2 Library. If you use an instrument bundled with Kontakt 2 please choose one of those three. The unprefixed instruments are for Opus 1 instruments.


MIDI Filter
This script blocks MIDI data that doesn't meet a set of condition/rules that you setup. For example you can specify that speed, velocity or some MIDI controller have to be within a certain range for notes to play back. This can be useful if you load multiple instruments on the same MIDI channel. You can then configure mutually exclusive filters for each one of them, so that each instrument only is active when you want.

Here are some examples of what's possibe:
  • Key switching between instruments - key switch notes are fully configurable
  • Automatically switch between instruments based on playing speed, note velocity or the value of a MIDI controller of your choice. For each of these you specify for each instrument the range where it shall be active.
  • Any combination of the above, eg. you may load 8 instruments in two "layers". Pedal down activates four of them, and pedal up activates the other. Within each of these two groups you can then change articulation with key switches, the mod-wheel or based on your playing speed.

Download the script (you can paste this into an empty script slot in Kontakt)
View the script source in readable format (this is before compiling the script in my editor)

This is how you use the script:
  1. Load a couple of instruments, all on the same MIDI channel
  2. Load the script for each instrument
  3. Setup filter conditions that gurantee that only one instrument is active at a time (if that is what you want that is).



Documentation of user interface:
There are three condition lines. If the condition on line1 and line2 or line3 are met, the notes will be passed on and not blocked. You don't have to specify all three conditions if you don't want to.
Control type
One of key switch, speed, velocity or MIDI CC.
Note: I'm thinking of adding legato and repetition conditions.
Lower and upper bounds
When the control value lies within the given range, the condition line is true. When the control type is key switch, the meaning is a little different and the two bounds reflect the lowest and highest of all key switches used. Any note in this range will be regarded as a key switch and if it doesn't match the key switch specified in the CC_KS field, the condition be false.
CC_KS
If control type is 'MIDI CC' this is the MIDI controller number. If the control type is key switch, this is the key switch note.
Learn button
Press this button to switch to learning mode. This will automatically fill in the range values based on how fast/hard you play, how you change the value of the MIDI controller. For learning key switches you are supposed to first press the lowest keyswitch, then the highest, and then the one you want to use.

Articulation key switch
Here you can specify if you want the script to automatically play a certain key switch before each note
Valid speed range
Speed changes outside this range will be ignored. You can set the min speed to avoid having the speed drop very low after a pause. You can set the max speed to avoid having the speed going very high if you play polyphonically.


Speed control - automatic articulation switching based on speed
Download the script source and paste it into a script slot in Kontakt2 to use it.
I made a demo mp3 of what kind of results to expect. Manual keyswitches in the demo are indicated with a "ding" sound where they are used, all other articulation switching in the demo is done automatically.

Explanation of the user interface:
There are four columns where you can specify what four playing styles (articulations) you want to switch between and speed limits that determine when to switch. If you don't want to use all four, you can make the same settings (ie. same speed and key switch) in eg. column two and three.
speed
The upper speed limit for the articulation. Playing faster than this will activate some of the articulations to the right. The speed is given in percent of the time base setting to the right, eg. with time base set to 100BPM playing 100 notes per minute would correspond to 100% speed. If the playing speed exceeds the speed in the rightmost column, the script will be bypassed. This is useful if you play polyphonically since very small intervals between keys in a chord would otherwise count as a very high speed. Please adjust this speed to make polyphonic playing work smoothly.
Note: speeds to the right should always be set to higher values than those to the left to guarentee proper function of the script.
key switch
The key switch note that activates the articulation.
learn key switch button
Provided as a convenience. To configure the key switch note, press this button and then press the key switch of your choice.
mute switch
You can use this to mute an articulation associated with a different speed. This is useful when you want to use articulations from different instruments. Just load the instruments on the same MIDI channel, load the script and make identical settings. Then mute some speeds of one instrument and do the inverse muting for the other instruments.
Note: the support for multiple instruments is not yet fully implemented.
is_playing button
This isn't a setting. The script updates this to give you feedback of which articulation was selected.

time base
Select which speed you want to use as 100% nominal speed. This can be linked to the tempo of your song ("Tempo BPM"), always linked to a fixed tempo ("100 BPM"), or you can use a MIDI CC to control the articulation switches instead of using playing speed.
key switch range
You can tell the script which keys are key switches by specifying that the key switches lie above or below a certain key. As with the other key switches, there's also a learn button for this. When you have specified what keys are switches, you can manually use key switches where necessary. A manual key switch affects the following note/chord and after that the speed again controls articulation choice.
CC
If you chose "CC at max" as your time base you can choose which MIDI controller you want to use to control articulation switching (default is mod-wheel).


RAM Manager - purge on the group level
The "update sample pool" function of Kontakt works at the sample level. Used/unused samples get loaded or unloaded. This script brings this functionality to the group level. Say you have a keyswitched instruments but you don't use all articulations. Then this script lets you have markers on the group level. Groups that are not used will be completely purged and groups that are used will stay completely loaded (all notes and all velocity layers).

How does it work?
The script remembers which groups are used and provides a way to trigger all notes of all velocities of the used groups. This will update the markers so that either all samples of a group will be marked, or all samples unmarked. Then you can use the ordinary "update sample pool" function.

How does one use it?
Play a song to let the script remember what groups were used. Then press the script's "play" button, then press any key on your keyboard or the virtual keyboard to trigger updating of markers. That's all.

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Utilities folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.



Part Maker - ensemble parts without phasing problems
This script was inspired by J's Ensemble Maker script. This script differ in that it constructs just a single voice in the ensemble. Both scripts works by transposing notes and then pitch-bending back to avoid phasing problems. While the ensemble maker turns any instrument into an ensemble, this script turns any instrument into a part of an ensemble.

With this script you use several instances of an instrument and loads and configures the script for each one. This leads to more setup work, but also more flexibility (for most people I'd recommend using the Ensemble Maker as the first choice though) and it's possible to have each voice on separate midi channels or on different programs in an instrument bank. This script also supports polyphonic playing for instruments with release samples, but lacks some of the settings in the Ensemble Maker. I consider this script not a competitor but a complement to Jay's Ensemble Maker.

How does one use it:
Set the tranpose value to a multiple of the interval with which your instrument was sampled . For example, if you have three voices and your instrument is sampled in whole notes you would load three instances of the instrument, load this script for each one and set transpose to -2, 0 and 2 respectively. If your instrument has release triggers you'll have to set which group that contain the release samples. In addition you can use the humanizer settings.

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Harmonization folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.

Is the source code available?
Sure, you can read it here (colorized version).



Velocity Test - test the velocity response of your keyboard
Use this script if you wonder whether your keyboard really outputs all velocities in the 0-127 or if you want to visualize its velocity response. I think the script is pretty self-explanatory. Here's a screenshot of the script and an example of a bad keyboard:
(The gaps show velocities that the keyboard never uses)

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Utilities folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.


Release trigger bugfix - workaround script for the Kontakt 2 release trigger bug
Kontakt 2 has a bug which causes release triggers to sound even for sustained notes. Even worse one release is triggered for every note, so pressing C3 ten times while holding the pedal will cause ten simultaneous release sounds to be played when the pedal is released. This can be a big problem, especially for piano libraries. This script fixes the problem. No configuration is needed - just load it and you're finished!

Note: this script only plays release samples for notes for which the sustain pedal was not pressed on note-on. Hence, it's whether the pedal is pressed on note-on (and not note-off) which determines if you're going to hear any release.

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Utilities folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.

Did you find this script useful?
Please feel free to make a donation to support the development:


Velocity Test - test the velocity response of your keyboard
Use this script if you wonder whether your keyboard really outputs all velocities in the 0-127 or if you want to visualize its velocity response. I think the script is pretty self-explanatory. Here's a screenshot of the script and an example of a bad keyboard:
(The gaps show velocities that the keyboard never uses)

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Utilities folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.


FX Morph - morphs parameters between fx presets

This script lets you specify two different instrument effects presets and then lets you continously morph between them using the modulation wheel (CC#1). This makes it possible to do interesting transitions between effects.

FX Morph screenshot

Here's is a sample of what morphing between two 3x2 Versatile effect settings can look like: FX Morph animation

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Utilities folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.

If you like this script please consider making a small donation. No donation is too small.

How do I use it?

  1. Load the script
  2. Load the Instrument Effects that you want to use.
  3. Activate "FX Preset 1" and set the effect parameters you want to use in the Kontakt GUI.
  4. Activate "FX Preset 2" and set the effect parameters you want to use in the Kontakt GUI.
  5. Use the modulation wheel to morph between the two presets. Simple, right?

Note 1: if you load a new effect later on then you may need to touch/change some parameter both for preset 1 and 2 to make the script properly register the current settings.

Note 2: some Kontakt effects can exhibit zipper noise when controlled directly by scripts so please look out for this. However, most filter parameters as well as wet/dry and output parameters work without any problems as far as I know.


Transpose Range - transpose certain key ranges (eg. to move keyswitches).
Sometimes it can be handy to transpose only notes within a certain range rather than all keys. For example let's say that you want to move keyswitches up one octave or even move them to the right side of the normal keys, then you can use this script to accomplish it.
Transpose Range screenshot

How do I install it?
Download the script preset file (zip) and extract it to your C:\Program Files\Native Instruments\Kontakt 2\presets\scripts\Utilities folder. Then restart Kontakt2 if it's running, and you'll see the script in the script presets menu.

How do I use it?
The screenshot above shows how you would configure the script to transpose all notes between C0 and B0 up one octave (to C1). First you specify the source range by setting the upper knobs and then the leftmost key of the target range on the knob below.

The script lets you apply to different transpositions to two separate key ranges. If you only need to transpose one range of keys you can leave the controls to the right as they are.



Links:
My script editor


[1] KONTAKT is a registered trademark of NATIVE INSTRUMENTS Software Synthesis GmbH.