TC-Helicon VoiceWorks Sysex User Manual

TC-IVL Ventures Inc.
TC-Helicon VoiceWorks MIDI System Exclusive
Note: All numerical values will appear in HEXADECIMAL notation unless otherwise indicated:
0xF0 = F0h = F0 – The latter value is the expression of the hex numeral used.
Decimal equivalents will appear in brackets after their hex counterparts:
0xF0 = F0h = F0 = (240) 0x64 = 64h = 64 = (100)
General message format:
F0 MIDI System exclusive message start 00 3 byte manufactors ID for TC-Helicon 01 ... 38 ... <Device ID> System exclusive device ID (user parameter) 4C VoiceWorks model ID <Message ID> VoiceWorks message type identifier (see table below) <Data> Data – depends on message type (see format description.
below) … … F7 MIDI System exclusive message terminator
Preset numbers
Preset numbers are represented in the SysEx messages as 2 bytes (14 bit value). The first byte is the 7 least significant bits and the second is the 7 most significant bits. The preset numbers are mapped as follows:
Preset number zero is the currently edited preset.
Examples:
Factory preset number 67 (decimal) would be translated into bytes 43 (67 in decimal - LSB) and 00 (MSB). User preset number 48 (decimal) would be translated into number 148 (decimal) = 1x128+20 (decimal) and would thus be represented as bytes 14 (LSB - 20 in decimal) and 01 (MSB).
Page 1
TC-Helicon Vocal Technologies
www.tc-helicon.com
Data Packing (24-bit words to 4x7-bit bytes)
The idea of packing data is to take a 24-bit value (the normal width of parameters in VoiceWorks) and represent it as 4 bytes of 7 bits each. This is done because SYSEX data can only be 7 bits in size. The first three bytes hold (in sequence) bits 0-6, 7-13 and 14-20 of the 24-bit value. The fourth byte hold bits 21-23 of the 24-bit value as LSB’s with zeros in the remaining bits.
Example:
If the value of a 24 bit parameter is 0x266, it would look like “66 04 00 00” in a SYSEX package.
This is decoded as follows:
SYSEX Data:
Byte1 66 hex = X1100110 (abcdefg) Byte2 04 hex = X0000100 (hijklmn) Byte3 0 hex = X0000000 (opqrstu) Byte4 0 hex = X0000000 (****vwx)
Final 24Bit Value:
vwxopqrs tuhijklm nabcdefg Total = 00000000 00000010 01100110 = 0x0 0x2 0x66 = 0x000266
Message data format
The format of the data used/needed in the different SysEx messages depends on the type of message. Below are descriptions for each message type explaining data formatting.
SysEx message type Identifier
VoiceWorks Request Preset 45 VoiceWorks Request Parameter 47 VoiceWorks Preset Data 20 VoiceWorks Parameter Data 22 VoiceWorks Request Shift Map 51 VoiceWorks Shift Map Data 31 VoiceWorks Request Song 14 VoiceWorks Request Setup 15 VoiceWorks Song Data 12 VoiceWorks Setup Data 13 VoiceWorks Preset Received Notification 34
VoiceWorks Data Request messages
Preset Request -
<Data> is 2 bytes representing the number of the preset requested. See above for description of preset number representation. The data transmitted by VoiceWorks upon receiving this message will be formatted as a Preset Data message (see below for complete description)
45:
Page 2
TC-Helicon Vocal Technologies
www.tc-helicon.com
Parameter Request -
<Data> is 2 bytes. The first byte defines the group to which the parameter belongs and the second byte identifies the parameter within the group. See below for a complete listing of parameters and grouping. The data transmitted by VoiceWorks upon receiving this message will be formatted as a Param Data message (see below for complete description)
Shift Map Request - 51:
<Data> is 1 byte. The value of this byte is ignored. The data transmitted by VoiceWorks upon receiving this message will be formatted as a Shift Map Data message (see below for complete description)
Song Request - 14:
<Data> is 1 byte. The byte specifies the song number (0 is the first song). The data transmitted by VoiceWorks upon receiving this message will be formatted as a Song Data message (see below for complete description)
Setup Map Request - 15:
<Data> is 1 byte. The value of this byte is ignored. The data transmitted by VoiceWorks upon receiving this message will be formatted as a Setup Data message (see below for complete description)
47:
VoiceWorks Data messages
Preset Receive Notification -
<Data> is 1 byte. 1 means success, 0 means fail.
Sometimes VoiceWorks needs to reorganize its internal preset bank after receiving a SYSEX preset. While this is happening, VoiceWorks has to ignore incoming preset SYSEX packages. If this happens while you are dumping several presets to the unit, you can lose a preset without realizing it. This situation can be avoided by waiting for VoiceWorks to send this message indicating that the preset was successfully stored.
Preset Data -
<Data> is 388 bytes organized as follows (in sequence): 2 bytes Preset number (see above) 12 bytes Preset name (as ASCII characters) 1 byte Number of notes in custom scale 16 bytes (cs) Custom correction scale (uses data packing) 64 bytes (cs) Custom shift map for each voice (uses data packing) 292 bytes (cs) 73x24-bit values for each parameter in the preset (uses data packing) 1 byte Checksum of the data marked cs (see below for description)
Notes:
Custom Correction Scale:
20:
A correction scale is represented internally as 12 x 8 bit values packed into 4 x 24 bit words (see the VoiceWorks manual for a detailed description).
Example: Major Scale
Chromatic semitones present: 0, 2, 4, 5, 7, 9, 11 (note count = 7)
34:
Page 3
TC-Helicon Vocal Technologies
www.tc-helicon.com
12 x 8 bit values: 0, 2, 4, 5, 7, 9, 11, 0, 0, 0, 0, 0 (appended with zeros)
At this point an offset of 0x32 is applied to each value for internal purposes.
(0x32, 0x34, 0x36) (0x37, 0x39, 0x3B) (0x43, 0x00, 0x00) (0x00, 0x00, 0x00)
4 x 24 bit words: word1: 00110010 00110100 00110110 = 0x323436 word2: 00110111 00111001 00111011 = 0x37393B word3: 10000011 00000000 00000000 = 0x430000 word4: 00000000 00000000 00000000 = 0x000000
Finally, the SYSEX data is created by packing each word into 4 x 7 bit values as described above in the data packing description. (This system is used so that in the future software updates, it might be possible to specify scales with more than 16 pitch divisions per octave).
Custom Shift maps:
Shift maps are represented internally as 4 sets of 12 values (see the VoiceWorks manual for detailed description). Each value specifies the shift amount for its position in the chromatic scale. For example, a shift map causing an upward major
rd
3
interval for all chromatic input notes would be 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3. A unison map would be 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0. Shift entries can also be negative for downward shifts.
For the purpose of storing and dumping, the 12 bytes are packed into 4 x 24-bit values each holding 3 bytes. An offset of (0x32) is applied to each value before packing them into the 4 x 24 bit words. The SYSEX data within a preset dump is finally created by packing these 24-bit words into 7 bit bytes using the data packing scheme. Since there are 4 voices on the VoiceWorks, there are 4 custom shift maps making for 4x16 bytes of SYSEX data.
Checksum: The checksum is 1 byte holding the 7 least significant bits of the sum of all bytes contributing to the checksum. In this case the contributing data is the data sections marked by cs in the table above.
Example: The byte values 1,2,3,…,126 would result in the following checksum. 1+2+3+…,+126 = 8001. To get the 7 least significant bits divide by 128 and then multiply the remainder by 128. In this example it would be 65.
Parameter data - 22:
<Data> is 4 bytes. The first two bytes identify the parameter as described above under Parameter Request. The last two bytes determine the value of the parameter represented as a 14 bit 2’s complement signed value. If a value exceeds the limits of the parameter the value will be limited.
Examples: The value 169 (decimal) = 1x128 + 41 would be represented as bytes 01 (MSB) and 29 (LSB) The value –43 ~ 16384-43 (decimal) = 16341 = 127*128+85 would be bytes 7F (MSB) and 55 (LSB)
Page 4
TC-Helicon Vocal Technologies
www.tc-helicon.com
Example – Control Voice #4 bypass state (observe the LED on the fourth Voice Key)
F0 00 01 38 00 4C 22 00 44 00 00 F7 F0 = SysEx start. 00 = Byte 1 of 3 byte manufacturer’s ID for TC-Helicon. 01 = Byte 2 of 3 byte manufacturer’s ID for TC-Helicon. 38 = Byte 3 of 3 byte manufacturer’s ID for TC-Helicon. 00 = Sysex Device ID (defaolt value of 0). 4C = VoiceWorks model ID. 22 = VoiceWorks Message Type Identifier (Parameter Data Identifier) 00 = Parameter Group ID. 44 = Parameter ID for Voice #4 bypass state 00 = Parameter Data MSB (Most significant bit). 00 = Parameter Data LSB (Least signicant bit). Value, 0 decimal. F7 = SysEx message end.
Shift Map Data -
31:
(Note: Shift Map data is represented differently than when it is a part of a preset dump) <Data> is 48 bytes. Each byte represents the shift mapping for the respective note in the chromatic scale. A value of 0 is equivalent to –24 semitones (down two octaves), 1A (26 in decimal) is equivalent to +2 semitones (up two semitones), 30 (48 in decimal) is equivalent to +24 semitones (up two octaves), and 36 (54 in decimal) is equivalent to N/C (no change). Consult the VoiceWorks manual for a complete description of the Shift Map user parameter. If any entry in the shift map is beyond the limits the message will be ignored. (This data differs from the when included in a preset dump because it’s not packed the same way and does not have the 0x32 offset applied. It’s easier to read and manipulate in this format).
Song Data - 12:
<Data> is 138 bytes. The first byte specifies the song number (from 0 to 49). The next 16 bytes specify the 16 character song name. The next 120 bytes represent the song data. Each step of the song is represented by a 24-bit word that is packed into 4 7-bit bytes as described in the data packing section. 30 steps multiplied by 4 bytes per step gives 120 bytes total. The final byte is a checksum that is calculated from the 120 bytes of song data.
24 bit Word Step Format aaaaaaaa.dddd.bbbb.eecccccc
a=preset number, b=root, c=type (chord or scale number, see VoiceWorks Manual for details), d=mode (scale=0, chord=1, shift=2, notes=3), e=status *
* status: A song starts with the first step and ends with the first step that has 0x0 for its status. All active song steps must have 0x2 for their status, all unused steps must have 0x0 for their status.
Setup Data - 13:
<Data> is 197 bytes. All 49 x 24bit setup parameters are sent packed into 196 7-bit bytes as described in the data packing section. A checksum calculated from all 49 parameters makes up the last byte.
Page 5
TC-Helicon Vocal Technologies
www.tc-helicon.com
Parameter Grouping and Listing
Group name Group ID
Preset Parameters 0 System Parameters 1
(The following numbers are in Decimal notation)
Preset Parameters (Group 0)
Parameter Name ID Min Max
voic level1 0 0 31 voic voicing1 1 0 *depends on harmony mode voic gender1 2 -50 50 voic vibsty1 3 0 11 voic vibamt1 4 0 100 voic pan1 5 0 200 voic level2 6 0 31 voic voicing2 7 0 *depends on harmony mode voic gender2 8 -50 50 voic vibsty2 9 0 11 voic vibamt2 10 0 100 voic pan2 11 0 200 voic level3 12 0 31 voic voicing3 13 0 *depends on harmony mode voic gender3 14 -50 50 voic vibsty3 15 0 11 voic vibamt3 16 0 100 voic pan3 17 0 200 voic level4 18 0 31 voic voicing4 19 0 *depends on harmony mode voic gender4 20 -50 50 voic vibsty4 21 0 11 voic vibamt4 22 0 100 voic pan4 23 0 200 harm mode 24 0 3 harm root 25 0 11 harm type 26 0 *depends on harmony mode harm level 27 0 31 harm smooth 28 0 100 harm lead 29 0 1 harm style 30 0 7 harm sty amt 31 0 10 harm tuning 32 0 2 harm bend 33 0 1 harm porta 34 0 200
Page 6
TC-Helicon Vocal Technologies
www.tc-helicon.com
harm latch 35 0 1 harm notesatt 36 0 100 harm notesrel 37 0 100 thic level 38 0 31 thic detune 39 0 25 thic spread 40 0 100 effe level 41 0 31 effe revdlymix 42 0 100 effe leadrevsend 43 -20 31 effe harmrevsend 44 -20 31 effe auxrevsend 45 -20 31 effe leaddlysend 46 -20 31 effe harmdlysend 47 -20 31 effe auxdlysend 48 -20 31 effe dly2revsend 49 -20 31 effe revtype 50 0 13 effe revpredlylev 51 0 100 effe revdecaytime 52 0 200 effe revcolorl 53 0 6 effe revcolorh 54 0 6 effe dlytype 55 0 2 effe dlytime 56 0 1800 effe dlytempo 57 -21 1 effe dlyfeedback 58 0 99 effe dlyhfdamp 59 10 23 cor root 60 0 11 cor scale 61 0 5 cor win 62 0 200 cor att 63 0 99 cor amt 64 0 99 voice1 bypass 65 0 1 voice2 bypass 66 0 1 voice3 bypass 67 0 1 voice4 bypass 68 0 1 harm bypass 69 0 1 thic bypass 70 0 1 effe bypass 71 0 1 cor bypass 72 0 1
* For Harmony Mode dependant parameters, see the VoiceWorks Manual for details.
Setup Parameters (Group 1)
Parameter Name ID Min Max dryllevel 0 -1 31 leadpan 1 0 200 lowcut 2 0 3 dynamics 3 0 3
Page 7
TC-Helicon Vocal Technologies
www.tc-helicon.com
compthresh 4 -60 0 compratio 5 0 13 gate 6 -71 0 eqroute 7 0 3 lsfreq 8 0 22 lcboost 9 -12 12 hsfreq 10 0 22 hcboost 11 -12 12 midfreq 12 0 22 mcboost 13 -12 12 eq_q 14 0 16 outlevel 15 -100 0 output 16 0 1 samplerate 17 0 2 input 18 0 1 globaleff 19 0 100 tuning 20 0 80 midichan 21 0 16 midifilt 22 0 3 CC-Ctrl Mode 23 0 2 Global Chord 24 0 1 keysplit 25 24 127 keydir 26 0 1 vibctrl 27 0 1 notestrans 28 -4 4 bendrange 29 0 12 notes4chan 30 0 1 fs1 31 0 9 fs2 32 0 9 fs3 33 0 9 mididump 34 0 152 erasesong 35 0 50 restore 36 0 100 viewangle 37 0 6 delaycomp 38 0 1 micsense 39 0 1 sysexid 40 0 127 current_preset 41 1 100 taptempo 42 0 1800 preset_edited 43 0 1 bypass_all 44 0 1 mic_in 45 0 1 48v 46 0 1 20db 47 0 1 Bypass Mode 48 0 1
Page 8
TC-Helicon Vocal Technologies
www.tc-helicon.com
Loading...