The .CR5 File Format
This is a Technical overview of the .CR5 file format used for saving registration memory setups to a file.
Note
This article is written based on my experience of reverse engineering files generated by the Casio CTK-810IN keyboard. Other models might use the same file format but a different file structure depending on the features they offer.
File Structure
The .CR5 file format consists of a 12 byte header block followed by the registration data. Each of the 32 registration setups occupies 22 bytes, bringing the total file size to 12 + (22 * 32) = 716 bytes for each file.
Header
The 12 bytes of the header are composed as follows:
43 43 52 35 30 31 30 30: File signature for this format, "CCR50100" in ASCII00 00 00 00: Zero bytes presumably used for padding or alignment
Registration Setup
Each registration setup occupies 22 bytes in the file and stores the following data:
| Offset | Size | Parameter | Description |
|---|---|---|---|
| 0x00 | 2 | Default Tone | The tone played when Split & Layer are OFF |
| 0x02 | 2 | Layer Tone | The additional tone played when Layer is ON |
| 0x04 | 2 | Split Tone | The tone played on the left side when Split is ON |
| 0x06 | 2 | Split+Layer Tone | The layered tone played on the left side when Split and Layer are ON |
| 0x08 | 1 | Layer? | 0 if Layer is turned OFF, 1 if turned ON |
| 0x09 | 1 | Split? | 0 if Split is turned OFF, 1 if turned ON |
| 0x0A | 1 | Split Point | MIDI note number of the tone split point (ranges from 36 to 96) |
| 0x0B | 1 | Reverb? | 0 if Reverb is turned OFF, 1 if turned ON |
| 0x0C | 1 | Chorus? | 0 if Chorus is turned OFF, 1 if turned ON |
| 0x0D | 1 | Reverb Value | Ranges from 0 to 3, maps to values 1-4 on the keyboard |
| 0x0E | 1 | Chorus Value | Ranges from 0 to 3, maps to values 1-4 on the keyboard |
| 0x0F | 1 | Tempo | Ranges from 30 to 255, same as the keyboard |
| 0x10 | 1 | Rhythm | Ranges from 0 to 119, maps to values 1-120 on the keyboard |
| 0x11 | 1 | Standby State | Which part of the rhythm (if any) is played when playing a note. 0 - Standby OFF; 7 - Play the normal rhythm; 8 - Play the intro sequence; 9 - Play the variation rhythm |
| 0x12 | 1 | Pedal Configuration | Configures which foot pedal is connected to the keyboard. 0 - Sustain (holds notes while the pedal is pressed); 1 - Sostenuto (holds notes that were down when the pedal was pressed); 2 - Soften (softens the sound when pressed); 3 - Rhythm (toggles the rhythm) |
| 0x13 | 2 | Touch Response | Configures the touch response setting. Bytes 0x13 and 0x14 are used in conjunction to represent the value. (0, 1) - Touch response OFF; (1, 1) - Touch response 1 (default); (1, 0) - Touch response 2 (more sensitive to harder presses) |
| 0x14 | 1 | Pitch Bend | Value of the pitch bend wheel in semitones. Ranges from 0 to 24, same as the keyboard. |