RK002 MIDI implementation

MAP controllers (Standard Volca Control Parameters)

With the RK002 the Volca Sample operates on a single midi channel. Normally the Volca dial parameters are divided over 10 midi channels but with the RK002 these controllers are mapped to the channel from the latest key pressed.

An example: If you play the 1st channel sample from MIDI, subsequent MIDI parameter messages are mapped to channel one. If you play the 2nd channel sample from MIDI, subsequent parameter messages are mapped to channel 2, etc...

You an override this behaviour by sending a message to Controller 0 (Bank Select MSB) If the value is outside of 1-10 (e.g.0 or 11-255) parameter behaviour is as described abouve. If the value is 1-10, the parameter messages are fixed to that particular channel.

From Firmware v30+ it is also possible to just send a program change to the RK-002 to lock the sample channel which is fixed to the chromatic play. The recognised Program Change values are 1 - 10.
Example: Sending a program change 4 will set sample channel 4 under chromatic play control

MIDI #CC Volca parameter
7 LEVEL
10 PAN
40 SAMPLE START POINT
41 SAMPLE LENGTH
42 HI CUT
43 SPEED
44 PITCH EG INT
45 PITCH EG ATTACK
46 PITCH EG DECAY
47 AMP EG ATTACK
48 AMP EG DECAY

RK002 Quick performance mapping

The RK002 can be set to act differently on the most common performance data like key velocity, modulation and pitch bend to increase flexibility while playing or notating. By default the parameters are mapped like this:

Velocity Sample Level (CC 7)
Modulation Hi Cut Filter (CC 42)
Pitch Bend Sample Speed (CC 43)

You can change these parameter mappings with system exclusive messages, described below:

System Exclusive

System exclusive messages (in short 'sysex') are used to change (and save) default behaviour from the RK002. Below an explanation. You can also use the online settings manager if your browser system supports the Jazz-soft midi plugin

SETPARAM

F0 7D 7F 56 47 53 03 00 <param_nr> <param_val> F7

RK002 responds with:
F0 7D 7F 56 47 53 43 00 <param_nr> <param_val> F7

The 7th digit indicates it is a sending or a receiving message.

Values for <param_nr>
<param_nr> Name value
1 MIDI respond channel 0..15 (= MIDI ch 1..16)
2 Map velocity see mapping table
3 Map pitch bend see mapping table
4 Map modulation wheel see mapping table
5 Sample select basekey (10 consecutive keys)

0 = all octaves repeatingly
1 -126 = base MIDI key for the 10 channel map
127 = GM-Style drum mapping (V30+)
6 Chromatic play basekey

0 = no chromatic play
1..127 = lowest key of a 3 octave range defining chromatic playing.

Mapping table:

0	DISABLED
7	LEVEL
10	PAN
40	SAMPLE START POINT
41	SAMPLE LENGTH
42	HI CUT
43	SPEED
44	PITCH EG INT
45	PITCH EG ATTACK
46	PITCH EG DECAY
47	AMP EG ATTACK
48	AMP EG DECAY

FACTORY RESET

F0 7D 7F 56 47 53 05 F7
Resets RK002 to factory mappings and channel

GETPARAM COMMAND

Sysex message to retrieve parameter settings from the RK002

F0 7D 7F 56 47 53 04 <param_nr> F7

RK002 responds with:
F0 7D 7F 56 47 53 44 <param_nr> <param_val> F7

INQUIRY COMMAND

Sysex message to retrieve system info from the RK002
F0 7D 7F 56 47 53 00 F7

RK002 responds with:
F0 7D 7F 56 47 53 40 xx xx xx xx xx xx xx xx xx xx <fw_string> F7
<fw_string> contains the firmware version (ASCII)

Example response:
F0 7D 7F 56 47 53 40 10 7C 17 00 00 24 51 30 00 48 31 35 4D 00 F7
<fw_string> = 31 35 4D 00 = "15M"

NRPN commands (v<36)

NRPN_BASE = 0x0303 = 771
param_nr = see sysex table

The device will respond with an NRPN message containing the val as acknowledgement
In order to 'peek' a parameter, send val=0x3FFF. This will cause no actual parameter change, but only the acknowledgement to be sent.

EXAMPLE

We want to set the chromakey parameter to 55:

NRPN = 771 + 6 = 777 = 6*128 + 9 -> nrpn_msb=6, nrpn_lsb=9
B0 63 06 62 09 06 00 26 37  
   \___/ \___/ \___/ \___/
     |     |     |     |
     |     |     |     +--> dataentry_lsb = 55
     |     |     +--------> dataentry_msb = 00
     |     +--------------> nrpn_lsb = 09
     +--------------------> nrpn_msb = 6
the device responds with: B0 63 06 62 09 06 00 26 37

EXAMPLE

We want to know the software version:

NRPN = 771 + 0 = 771 = 6*128 + 3 -> nrpn_msb=6, nrpn_lsb=3
B0 63 06 62 03 06 7F 26 7F  
   \___/ \___/ \___/ \___/
     |     |     |     |
     |     |     |     +--> dataentry_lsb = 7F
     |     |     +--------> dataentry_msb = 7F
     |     +--------------> nrpn_lsb = 3
     +--------------------> nrpn_msb = 6

So later on we noticed the Beatstep Pro is not able to send 14bit NRPN data, it only send out the 'course data' so we changed this to match the BSP method. This way you can program a dial on the BSP to change parameters:

NEW SYNTAX AS OF v37

<SETPARAM CHROMAKEY = 55>  

NRPN = 771 + 6 = 777 = 6*128 + 9 -> nrpn_msb=6, nrpn_lsb=9

B0 63 06 62 09 06 37   
   \___/ \___/ \___/ 
     |     |     | 
     |     |     +--------> dataentry COARSE = 55
     |     +--------------> nrpn_lsb = 9
     +--------------------> nrpn_msb = 6
     
                       
the device responds with: B0 63 06 62 09 06 37