Skip to content

Controlling tempo remotely

michgz edited this page Jul 4, 2021 · 8 revisions

There's a way to control tempo in the CT-X keyboards remotely. It's a bit of an involved process, which suggests it isn't intended to be consumer-facing. The procedure below has been tested on CT-X3000 and probably works without change on CT-X5000.

Background

Writing Category 42 Memory 3 Parameter 0 causes certain events in the keyboard:

Value written Event
0 Set to no sound
1 Set to "Grand piano" preset
2 Update tempo

Set to no sound

All keyboard tones set to empty, so no sound is produced.

Set to "Grand Piano" preset

All keyboard tones are set to 561 GM PIANO 1, as in Category 2 Memory 2. This seems similar to the "Grand Piano" preset button on Yamaha PSR keyboards.

Update tempo

Sets the tempo of the keyboard to the value in Parameter 5 (all parameters here are in Category 42 Memory 3). The following sequence is required:

  1. Write Parameter 5
  2. (optional) write Parameter 6
  3. Write Parameter 7
  4. Trigger the event by writing Parameter 0

On the event being triggered, the following happens:

  1. The value of Parameter 5 is changed to (Parameter 5) * (Parameter 7) / (Parameter 6).
  2. The value of Parameter 6 is changed to (Parameter 7).
  3. Tempo of the keyboard is updated to be the new value in Parameter 5, in units of Quarter Notes per Minute (QNPM).

The beat value in the keyboard (quavers or crotchets) isn't changed, and the keyboard shows tempo in Beats per Minute (BPM). As an example, if the keyboard is showing "♪=198" and the new value of Parameter 5 is 160 after the event, the keyboard will show "♪=320".

Parameters 6 and 7 are normally 120. As long as we always write 120 to these parameters, the keyboard tempo will always just be equal to the value written to Parameter 5 (aside for corrections between QNPM and BPM).

Setting tempo less than 30

The keyboard can accept tempo values 20-255. However, since Parameter 5 must be at least 30, the only way to write tempo values 20-29 is by using Parameter 6 to divide down a larger value.

Procedure

In summary, the sequence to change tempo is:

F0 44 19 01 7F 01 2A 03 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 ll mm F7

F0 44 19 01 7F 01 2A 03 00 00 00 00 00 00 00 00 00 00 07 00 00 00 00 00 78 00 F7

F0 44 19 01 7F 01 2A 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 F7

ll mm is the desired tempo in MIDI 7bit+7bit format. Some example values:

30 QNPM: 1E 00
60 QNPM: 3C 00
120 QNPM: 78 00
160 QNPM: 20 01
255 QNPM: 7F 01