Equal Tempered Scales on the K2000 and K2500 family

I've heard some users lamenting that the Kurzweil K2000/K2500 do not have full keyboard intonation tables. Some are under the impression that these instruments can do only 12 note per octave microtonal scales. This is not true. With some simple VAST programming, equal tempered scales of any degree can be accomplished to an accuracy of 1 cent over the entire MIDI note range of 128 keys. Here's how to do it, with a table of the most common scales given as examples.

The simplest example is 24 Tone Equal Temperament, also known as the quartertone scale. Change each layer's KEYMAP KeyTrack parameter from 100 cents per key to 50 cents per key. Adjustment of the Pitch KeyTrack parameter is not necessary. By using the KEYMAP KeyTrack parameter the sample keymaps are forced to track over the range that they were originally intended. In other words, not only is the pitch adjusted so that C3 actually plays pitch C4, but C3 now also plays the keymap sample intended for C4, rather than the one intended for C3.

To achieve the fractional cents tuning of the other scales, the KEYMAP KeyTrack parameter is used as a coarse step tuning control and the PITCH Modulator 1 or 2 is used as a fine tuning control. In some cases, it will be necessary to use a function to further fine tune the key tracking. In cases where no value is given for the FUN b column, set the modulation source to BKEYNUM and the depth to the PITCH Mod value given.

Using the Bohlen-Pierce scale as an example, here's how you calculate the PITCH Modulation Depth value. We want the steps between keys to equal 146.30 cents each. The KEYMAP Key Track parameter accomplishes 146 cents of this adjustment. We still need 0.30 cents per key of pitch modulation. Since BKEYNUM operates over the 128 MIDI note range, we want 128 x 0.30 cents = 38.4 cents of additional modulation. The closest selectable value is 38 cents.

In some cases the PITCH Mod Depth value is not fine enough to give the accuracy we desire, so a function is used for additional fine tuning. Where there is a FUN b entry, set the PITCH Mod Source to the function being used (FUN1, FUN2, FUN3 or FUN4). Set the FUN a input to BKEYNUM. Set the FUN b input to the constant given in the table, then set the function to a*b. For 31 equal, this effectively scales the pitch by .97 x -170 = -164.9 cents.

You need to remember that all pitch transposition is referenced off a BKEYNUM's center point of MIDI note 64, which is the E above middle C. A future update to this site will show how to transpose the reference key to C or A in any octave.

Tuning in the table below is accurate to 1 cent or better over the entire MIDI note range.
 Temperament  cents/step  KEYMAP KeyTrk PITCH Mod Depth FUN b
 17 equal 70.59 70ct/key +75ct -
 19 equal 63.16 62ct/key +150ct 0.99
 22 equal 54.55 54ct/key +70ct -
 24 equal 50.00 50ct/key - -
 29 equal 41.38 42ct/key -80ct -
 31 equal 38.71 40ct/key -170ct 0.97
 34 equal 35.29 35ct/key +38ct -
36 equal 33.33 35ct/key -220ct 0.97
41 equal 29.27 30ct/key -95ct 0.98
 53 equal 22.64 20ct/key +360ct 0.94
72 equal 16.67 15ct/key +220ct 0.97
Carlos alpha 78.00 78ct/key - -
Carlos beta 63.80 64ct/key -26ct -
 Carlos gamma 35.10 35ct/key +13ct -
Bohlen-Pierce 146.30 146ct/key +38ct -

Here are example K2500 screens showing the programming of the Bohlen-Pierce scale. The relevant values are highlighted.


EditProg:KEYMAP            <>Layer:1/1

KeyMap:155 Dull Square       Stereo:Off
Xpose :0ST        TimbreShift :0ST
KeyTrk:146ct/key  PlayBackMode:Normal
VelTrk:0ct        AltControl  :OFF
SmpSkp:Auto       AltMethod   :Switched

EditProg:PITCH <>Layer:1/1 Coarse:0ST Src1 :BKeyNum Fine :0ct Depth :38ct FineHz: 0.00Hz Src2 :OFF KeyTrk:0ct/key DptCtl:MWheel VelTrk:0ct/key MinDpt:0ct MaxDpt:0ct

Next is an example of the 31 tone equal tempered scale, which uses a FUN.


EditProg:KEYMAP            <>Layer:1/1

KeyMap:155 Dull Square       Stereo:Off
Xpose :0ST        TimbreShift :0ST
KeyTrk:40ct/key   PlayBackMode:Normal
VelTrk:0ct        AltControl  :OFF
SmpSkp:Auto       AltMethod   :Switched

EditProg:PITCH <>Layer:1/1 Coarse:0ST Src1 :FUN1 Fine :0ct Depth :-170ct FineHz: 0.00Hz Src2 :OFF KeyTrk:0ct/key DptCtl:MWheel VelTrk:0ct/key MinDpt:0ct MaxDpt:0ct
EditProg:FUN <>Layer:1/1 Input a: Input b: Function: FUN1: BKeyNum 0.97 a*b FUN2: OFF OFF a-b FUN3: OFF OFF (a+b)/2 FUN4: OFF OFF a/2+b