One of the crucial finishing touches to add to a Kontakt library is the key colors. Because the natural key colors obtained from the zones mapped in the instrument might not accurately represent the key ranges of the instrument, or if you don't use the group start options for keyswitches, you'll need to manually set the key colors through scripting.
While setting key colors through Kontakt is very straightforward using the "set_key_color()" function, I have a few recommendations on how to improve on this.
Firstly, don't set the key colors with the "set_key_color()" function directly. Instead, use an array to store the key colors first, setting all the ranges and keyswitches necessary, and then use a single loop to actually set the key colors on Kontakt's keyboard. Here's an example:
on init
declare $counter
declare %key_color[128]
{ initialize key colors }
$counter := 0
while ($counter <= 127)
%key_color[$counter] := $KEY_COLOR_NONE
inc($counter)
end while
{ set an example key range }
$counter := 48
while ($counter <= 72)
%key_color[$counter] := $KEY_COLOR_BLUE
inc($counter)
end while
{ set an example keyswitch }
%key_color[36] := $KEY_COLOR_RED
{ set key colors }
$counter := 0
while ($counter <= 127)
set_key_color($counter, %key_color[$counter])
inc($counter)
end while
end on
Another thing many libraries nowadays do is show unused key ranges as entirely black rather than Kontakt's own black and white default. Here's my approach to scripting this technique:
on init
declare $counter
declare %key_color[128]
declare %black_keys[5] := (1, 3, 6, 8, 10)
{ default to all black }
$counter := 0
while ($counter <= 127)
if (search(%black_keys, $counter mod 12) # -1)
%key_color[$counter] := $KEY_COLOR_WHITE
else
%key_color[$counter] := $KEY_COLOR_BLACK
end if
inc($counter)
end while
{ set an example key range }
$counter := 48
while ($counter <= 72)
%key_color[$counter] := $KEY_COLOR_BLUE
inc($counter)
end while
{ set an example keyswitch }
%key_color[36] := $KEY_COLOR_RED
{ set key colors }
$counter := 0
while ($counter <= 127)
set_key_color($counter, %key_color[$counter])
inc($counter)
end while
end on
Of course, if you're using Nils' scripting editor or Sublime Text package, the "while" loops can be simplified to "for" loops, but this example should give you a good idea of one approach for setting the key colors in your Kontakt instrument.
Enjoyed reading this blog article? Here are some related topics with more articles you'll like: Articles, DIY Sampling, Kontakt Scripting