Skip Navigation.
Section 0

Chroma Keyboard Velocity Curves

By David Clarke [21030085++] <ac151@ncf.ca>

When the Chroma keyboard is scanned, the scanning processor returns a note number and a time (the time for a key press or a key release). This time value is converted to an actual 'velocity' value via a lookup table in the Chroma's ROM (a time-to-velocity table).

The velocity table in the Chroma is 128 bytes long.

In the table at the end of this article are four columns of data: the first is the "index" into the lookup table (i.e., a parameter repesenting the "time"). The remaining 3 columns are the actual time-to-velocity values from the Rev14a, Rev14 and Rev12 firmware (converted to decimal form from the hex values stored in ROM). Here is the data plotted in a graph:

Keyscan 'Time' Value vs. Chroma Velocity Value

(The 'bump' at the end of the Rev. 14A velocity curve would appear to be an error in the original firmware data).

Effect of Keyscan Code Version on Velocity Value

The graph above only compared the data values in the main firmware itself (i.e., the firmware run by the 6809 processor).

The Chroma also has a second processor - the 8039 keyboard scanning computer. That computer is responsible to provide a 'velocity' value to the main Chroma processor and provides the note-time numbers based on an internal clock/counter.

While much discussion has been made of the Rev 12 and Rev 14 keyboard velocity curves, there will be a significant difference in velocity response based on the keyboard scanning code.

Specifically, there was a "Rev 2" version of the keyboard scanning code that was found in many Rev 12 machines. During the Rev 14 firmware change from the factory, the keyboard scanning code appears to have also changed to Rev 3. The specific code differences between the two can be seen in the scan2.asm and scan3.asm files at EPROM Code: Disassembled Chroma (Main Firmware) Source.

A notable difference involves the velocity response. Specifically, a single scan of the keyboard in the Rev 2 code would appear to take approx. 1.088mS whereas a single scan in the Rev 3 code will take about 0.768mS. This difference in timing will affect how a keyboard strike is interpreted.

For instance, for the exact same key strike time, a Rev 2 keyscan board would 'see' the strike faster than the exact same strike on a Rev 3 keyboard.

Because the keyscan firmware and the main firmware can be updated independently, there can be different combinations available in use today.

The y-axis of the following graph is labelled Time. These values correspond to real-world times, based on the keyboard scan times noted above (i.e., a 'time' of 35 represents a key-press or key-release time-of-flight of approximately 35mS.)

The graph shows the difference in using Rev 12 main firmware with both Rev 2 and Rev 3 keyboard scanning code. (Similar differences/shifts would exist for other main firmware versions).

Chroma Velocity Value (Rev 12) vs. Real-World Time of Flight for Different Keyscan Code

Time Rev. 14A Rev. 14 Rev. 12
0 31 31 31
1 31 31 31
2 31 31 28
3 28 28 25
4 25 25 22
5 22 22 19
6 19 19 17
7 17 17 15
8 15 15 14
9 13 13 12
10 11 11 11
11 9 9 10
12 8 8 9
13 8 7 8
14 7 6 8
15 7 5 7
16 7 5 7
17 6 4 7
18 6 4 6
19 6 4 6
20 6 3 6
21 6 3 6
22 5 3 6
23 5 3 5
24 5 3 5
25 5 3 5
26 5 2 5
27 5 2 5
28 5 2 5
29 5 2 5
30 4 2 4
31 4 2 4
32 4 2 4
33 4 2 4
34 4 1 4
35 4 1 4
36 4 1 4
37 4 1 4
38 4 1 4
39 4 1 4
40 4 1 3
41 4 1 3
42 3 1 3
43 3 1 3
44 3 1 3
45 3 1 3
46 3 1 3
47 3 1 3
48 3 1 3
49 3 1 3
50 3 1 3
51 3 1 3
52 3 1 2
53 3 1 2
54 2 1 2
55 2 1 2
56 2 1 2
57 2 1 2
58 2 1 2
59 2 1 2
60 2 1 2
61 2 1 2
62 2 1 2
63 2 1 2
64 2 0 2
65 2 0 2
66 2 0 2
67 2 0 1
68 2 0 1
69 2 0 1
70 2 0 1
71 2 0 1
72 2 0 1
73 2 0 1
74 1 0 1
75 1 0 1
76 1 0 1
77 1 0 1
78 1 0 1
79 1 0 1
80 1 0 1
81 1 0 1
82 1 0 1
83 1 0 1
84 1 0 1
85 1 0 1
86 1 0 1
87 1 0 1
88 1 0 1
89 1 0 1
90 1 0 1
91 1 0 1
92 1 0 1
93 1 0 1
94 1 0 1
95 1 0 1
96 1 0 1
97 1 0 1
98 1 0 1
99 1 0 1
100 1 0 1
101 1 0 1
102 1 0 1
103 1 0 1
104 1 0 1
105 1 0 1
106 1 0 1
107 1 0 1
108 1 0 1
109 1 0 1
110 0 0 1
111 0 0 1
112 0 0 0
113 0 0 0
114 0 0 0
115 0 0 0
116 0 0 0
117 0 0 0
118 1 0 0
119 1 0 0
120 1 0 0
121 1 0 0
122 1 0 0
123 1 0 0
124 1 0 0
125 1 0 0
126 0 0 0
127 0 0 0

1While the actual execution times of the software loops between Rev 2 and Rev 3 may differ, they're also otherwise set up differently in that the Rev 3 code forces the counter to flip over exactly every 0.976mS - the Rev 2 code, at its fastest will flip over in 0.956mS - but it could take longer to flip, depending on how many key press/releases it has to deal with in that particular loop.