Bob Page, October 1, 1990
[This information is presented in the hope that it will be useful, but no warrantees as to its accuracy are given. In fact, let me know if you have changes/additions. Feel free to use this information in any way for any purpose, but please don't pretend you wrote it (leave my name in this document). If you want to send me code you write based on this info, I won't say no...]
Note that Alesis has made the QV SysEx information available through the IMA. This document is not based on the Alesis information, primarily because Alesis hadn't released the information when I needed it.
Contents:
Seven QuadraVerb bytes (each line represents one byte):
Byte 0: a7 a6 a5 a4 a3 a2 a1 a0 1: b7 b6 b5 b4 b3 b2 b1 b0 2: c7 c6 c5 c4 c3 c2 c1 c0 3: d7 d6 d5 d4 d3 d2 d1 d0 4: e7 e6 e5 e4 e3 e2 e1 e0 5: f7 f6 f5 f4 f3 f2 f1 f0 6: g7 g6 g5 g4 g3 g2 g1 g0are transmitted as eight MIDI bytes:
Byte 0: 00 a7 a6 a5 a4 a3 a2 a1 1: 00 a0 b7 b6 b5 b4 b3 b2 2: 00 b1 b0 c7 c6 c5 c4 c3 3: 00 c2 c1 c0 d7 d6 d5 d4 4: 00 d3 d2 d1 d0 e7 e6 e5 5: 00 e4 e3 e2 e1 e0 f7 f6 6: 00 f5 f4 f3 f2 f1 f0 g7 7: 00 g6 g5 g4 g3 g2 g1 g0Here is a C fragment to decode the dump:
unsigned char c; oc = 0; for (i=0; ((c = getc(ifp)) < 0x80); i++) { i %= 147; /* end of program */ if (shift = i % 8) { oc = (oc << shift) + (c >> (7-shift)); putc(oc, ofp); } oc = c; }All the info given below assumes the data has been decoded. If you are going to send the data back to the QV after editing it, you have to encode it first. Code fragment left as an exercise for the reader.
A QuadraVerb SysEx command string looks like (in hex):
f0 - SysEx start 00 \ 00 - Alesis mfr code 0e / 02 QuadraVerb ID number cc QuadraVerb command code pp QuadraVerb command code parameter dd data stream (variable length) .. f7 End of SysExThe command codes are:
01 Change Parameter 02 Load Program 03 Dump ProgramThe parameters depend on the command and are discussed below.
f0 00 00 0e 02 03 pp f7where '03' is the "dump data" command, and 'pp' is the hex parameter:
00-63 single program, 0-99 64 edit buffer 65 all of memoryKeep in mind if you're doing lots of edit/compares on program 27 you probably want to be dumping the edit buffer, not program 27, as #27 is only modified when the STORE is done.
f0 00 00 0e 02 02 pp (data) f7where 'pp' is the same as in the above description. The data must be encoded before being sent. If you do it right you should send 155 bytes out the MIDI port (including SysEx etc) for an individual program.
f0 00 00 0e 02 01 gg pp dd dd dd f7where 'gg' is the 'parameter group' you want to change:
00 - program 01 - reverb 02 - delay 03 - pitch 04 - eq 05 - midi 06 - store 07 - config 08 - mix 09 - mod 0a - nameand 'pp' is the parameter number within parameter group (for example in 'reverb', parameter number 0 is 'Reverb Type', and the numbers increase the same as if you used the PAGE UP key).
The "dd dd dd" string is the value you want in that parameter. It must be encoded, even if it fits in 7 bits. Sometimes the value takes two bytes; in that case they should be sent MSB (most significant byte) first, then LSB. When one byte is encoded it will become two bytes; likewise two become three. If you're sending two bytes (after encoding) send them first, then 00, then f7.
The QV will also send you these Change Parameter requests every time a parameter is changed using the front panel. If somebody selects the Delay Time parameter and pushes the button to go from 1 to 400ms, you're going to get 399 of these messages. You will get messages every time the VALUE buttons get pushed, even when nothing changes (like being in program mode and pressing the down key when you're already at program zero), so be prepared for them.
You can't send running parameter change requests; each one has to be a separate SysEx message.
Unused locations have zeros in them. The EQ bytes change meaning depending on whether or not graphic EQ is being used, so both are given. Everything here is listed in decimal.
Graphic EQ parameters, only used in the Graphic_EQ->Delay configuration:
Byte Description Default Range 0 ??? ?? ?? [usually set to 14] 1 16Hz 14 0-28 (14 is center) 2 32Hz 14 0-28 (14 is center) 3 62Hz 14 0-28 (14 is center) 4 126Hz 14 0-28 (14 is center) 5 250Hz 14 0-28 (14 is center) 6 500Hz 14 0-28 (14 is center) 7 1kHz 14 0-28 (14 is center) 8 2kHz 14 0-28 (14 is center) 9 4kHz 14 0-28 (14 is center) 10 8kHz 14 0-28 (14 is center) 11 16kHz 14 0-28 (14 is center) 12 ??? ?? ?? [usually set to 24]Graphic EQ also seems to change all modulation targets to 16Hz boost/cut.
Here's the complete list, in byte order. Note that all parameters have a 'default' value you can get by pressing both VALUE buttons at the same time - if you're building a patch editor you might want this info so your user can hit a button to get the default value for some parameter.
Byte Description Default Range 0 Low EQ Frequency MSB 1 Low EQ Frequency LSB 200 20-999Hz 2 Low EQ Amplitude MSB 3 Low EQ Amplitude LSB 280 0=-14db, 280=0db, 560=14db, 0.05 steps 4 Low EQ Frequency MSB 5 Mid EQ Frequency LSB 2000 200-9999Hz 6 Mid EQ Bandwidth 100 20-255 (0.2-2.55 octaves) 7 Mid EQ Amplitude MSB 8 Mid EQ Amplitude LSB 280 0=-14db, 280=0db, 560=14db, 0.05 steps 9 High EQ Frequency MSB 10 High EQ Frequency LSB 8000 2000-18000Hz 11 High EQ Amplitude MSB 12 High EQ Amplitude LSB 280 0=-14db, 280=0db, 560=14db, 0.05 steps 13 Leslie High Rotor Level 20 0=-20db, 26=+6db 14 Low-Mid EQ Freq. MSB 15 Low-Mid EQ Freq. LSB 100 20-500Hz (really 100Hz default!) 16 Low-Mid EQ Bandwidth 100 20-255 (0.2-2.55 octaves) 17 Low-Mid EQ Ampl. MSB 18 Low-Mid EQ Ampl. LSB 280 0=-14db, 280=0db, 560=14db, 0.05 steps 19 High-Mid EQ Freq. MSB 20 High-Mid EQ Freq. MSB 6000 2000-18000Hz 21 High-Mid EQ Bandwidth 100 20-255 (0.2-2.55 octaves) 22 High-Mid EQ Ampl. MSB 23 High-Mid EQ Ampl. LSB 280 0=-14db, 280=0db, 560=14db, 0.05 steps 24 Sample Start 0 0-150 (0-1.50 seconds) 25 Sample Length 155 5-155 (0.05-1.55 seconds) 26 Pitch Mode 1 0-5 m/s_chorus, m/s_flange, phase, detune 27 Pitch Input 1 0=pre-eq, 1=post-eq 28 LFO Waveshape 0 0=triangle, 1=square 29 LFO/Phaser Speed 20 0=1, 98=99 30 LFO/Phaser Depth 50 0=1, 98=99 Resonator Decay 50 0-99 31 Sample Playback 1 0=looping, 1=one shot, 2=audio trigger 32 Pitch Feedback (%) 0 0-99 33 Detune Amount 99 0=-99, 99=none, 198=+99 34 Leslie Stereo Separat. 99 0-99 35 Leslie Motor 1 0=off, 1=on Auto Trigger Sampling 0 0=off, 1=on (for Sampling) 36 Leslie Motor Speed 0 0=slow, 1=fast Sampler MIDI Trigger 0 0=off, 1=gated, 2=one shot (Sampling) 37 Trigger Flange 0 0=off, 1=on Resonator Gate Mode 0 0=continuous, 1=MIDI gated 38 MIDI Trigger Base 60 0-127 39 Delay Type 1 0=mono, 1=stereo, 2=ping-pong, 3=m-tap 40 Delay Input 1 1 0=pre-eq, 1=post-e1 41 Delay Input Mix 99 0=input1, 99=center, 198=pitch/leslie 42 Left Delay Time (MSB) 1-400ms (1-800ms mono) 43 Left Delay Time (LSB) 100 If graphicEQ: 1-750ms (1-1500ms mono) 44 Left Delay Feedback (%) 0 0-99 45 Right Delay Time (MSB) (Right not used in mono) 46 Right Delay Time (LSB) 100 1-400ms (if graphicEQ: 1-750ms) 47 Right Delay Feedback (%) 0 0-99 48 MIDI Trigger Low Limit 0 0-127 49 MIDI Trigger High Limit 127 0-127 50 Reverb Type 0 0=plate, 1=room, 2=chamber, 3=hall, 4=rev 51 [unused except for Multi-Tap; see below] 52 Reverb Input 1 3 0=pre-eq, 1=post-eq, 2=pitch, 3=delay_mix (set to 1 by Sampling config) 53 Reverb Input 2 1 0=pitch out, 1=delay out 54 Reverb Input Mix 0 0=Input1, 99=center, 198=Input2 55 Reverb PreDelay 40 1-140ms 56 PreDelay Mix 198 0=Pre, 99=center, 198=Post 57 Reverb Decay 50 0-99 58 Reverb Diffusion Amount 8 0=1, 4=5, 8=9 59 Low Frequency Decay 60 0=-60, 30=-30, 60=0 60 High Frequency Decay 40 0=-60, 30=-30, 60=0 61 Reverb Density 8 0=1, 4=5, 8=9 62 Reverb Gate 0 0=off, 1=on 63 Reverb Gate Hold Time 0 0-99 64 Reverb Gate Rleas. Time 80 0-99 65 Reverb Gated Level (%) 0 0-99 66 [unused except for Multi-Tap; see below] 67 Spectrum Shift 100 1-300 (Hz) 68 Configuration 0 0-7 69 Direct Signal Select 0 0=pre-EQ, 1=EQ+, 2=EQ+pan, 3=EQ+tremelo 70 Direct/EQ Signal Level 99 0-99 (EQ Out if Direct Signal Select = 1) 71 Master Effects Level 50 0-99 72 Pitch Output Level 50 0-99 (incl Leslie & Ring Mod) Sample Playback Level 99 0-99 73 Delay Output Level 50 0-99 74 Reverb Output Level 50 0-99 75 Resonator 1 Tune 24 0=-24, 24=none, 60=+36 (semitones) 76 Resonator 2 Tune 24 0=-24, 24=none, 60=+36 (semitones) 77 Resonator 3 Tune 24 0=-24, 24=none, 60=+36 (semitones) 78 Resonator 4 Tune 24 0=-24, 24=none, 60=+36 (semitones) 79 Resonator 5 Tune 24 0=-24, 24=none, 60=+36 (semitones) 80 Mod 1 Source 0 0-125 (see list below) 81 Mod 1 Target 0 (see Modulation Targets section below) 82 Mod 1 Amplitude 0 0=-99, 99=0, 198=+99 83 Mod 2 Source 84 Mod 2 Target Sources: 0=pitch_bend, 1=after_touch, 85 Mod 2 Amplitude 2=note_number, 3=note_velocity, 86 Mod 3 Source 4-125 correspond to MIDI 87 Mod 3 Target controller numbers 0-121. 88 Mod 3 Amplitude 89 Mod 4 Source 90 Mod 4 Target 91 Mod 4 Amplitude 92 Mod 5 Source 93 Mod 5 Target 94 Mod 5 Amplitude 95 Mod 6 Source 96 Mod 6 Target 97 Mod 6 Amplitude 98 Mod 7 Source 99 Mod 7 Target 100 Mod 7 Amplitude 101 Mod 8 Source 102 Mod 8 Target 103 Mod 8 Amplitude 104 Master Feedback (%) 0 0-99 105 Tap Number (for editing) 0 0-7 106 Edit Name Character 1 32 The following 96 characters, in order: 107 Edit Name Character 2 !"#$%&'()*+,-./0123456789:;<=>? 108 Edit Name Character 3 @ABCDEFGHIJKLMNOPQRSTUVWXYZ[Y]^_ 109 Edit Name Character 4 `abcdefghijklmnopqrstuvwxyz{|}>< 110 Edit Name Character 5 111 Edit Name Character 6 The second Y is the Japanese 'Yen' or 112 Edit Name Character 7 Chinese 'Yuan' (monetary) symbol. The 113 Edit Name Character 8 last two characters are right and left 114 Edit Name Character 9 arrows. The backslash and tilde 115 Edit Name Character 10 characters are not available. 116 Edit Name Character 11 117 Edit Name Character 12 Note this list is in ASCII order, and 118 Edit Name Character 13 the ASCII equivalent is what's stored. 119 Edit Name Character 14 120 Ring Modulator Output Mix 99 0=down 99, 99=none, 198=up 99 121 Delay/Reverb Input Mix 99 0=down 99, 99=none, 198=up 99 122 EQ Panning/Tremolo Speed 30 1-99 123 EQ Panning/Tremolo Depth 99 0-99 124 [unused] 125 [unused] 126 [unused] 127 [unused]When Multi-Tap Delay is used, a number of locations take on different meanings:
13 Tap 1 Delay MSB (really 13 and 24!) 24 Tap 1 Delay LSB 150 0-625 (ms) 25 Tap 1 Volume 50 0-99 31 Tap 1 Panning 99 0=left 99, 99=center, 198=right 99 34 Tap 1 Feedback (%) 0 0-99 35 Tap 2 Delay MSB 36 Tap 2 Delay LSB 38 Tap 2 Volume 42 Tap 2 Panning 43 Tap 2 Feedback (%) 44 Tap 3 Delay MSB 45 Tap 3 Delay LSB 46 Tap 3 Volume 47 Tap 3 Panning 48 Tap 3 Feedback (%) 49 Tap 4 Delay MSB 50 Tap 4 Delay LSB 51 Tap 4 Volume 52 Tap 4 Panning 53 Tap 4 Feedback (%) 54 Tap 5 Delay MSB 55 Tap 5 Delay LSB 56 Tap 5 Volume 57 Tap 5 Panning 58 Tap 5 Feedback (%) 59 Tap 6 Delay MSB 60 Tap 6 Delay LSB 61 Tap 6 Volume 62 Tap 6 Panning 63 Tap 6 Feedback (%) 64 Tap 7 Delay MSB 65 Tap 7 Delay LSB 66 Tap 7 Volume 67 Tap 7 Panning 74 Tap 7 Feedback (%) 75 Tap 8 Delay MSB 76 Tap 8 Delay LSB 77 Tap 8 Volume 78 Tap 8 Panning 79 Tap 8 Feedback (%)
0 Reverb Input Mix 1 Reverb PreDelay 2 Reverb PreDelay Mix 3 Reverb Reverse Time (Reverb Decay? I think the LCD mislabels this) 4 Reverb Diffusion 5 Reverb Density 6 Reverb Low Decay 7 Reverb High Decay 16 Delay Input Mix (L/Mono Delay Time if GraphicEQ) 17 L/Mono Delay Time (L/Mono Delay Feedback if GraphicEQ) (Tap 1 Delay Time) 18 L/Mono Delay Feedback (R Delay Time if GraphicEQ) (Tap 2 Delay Time) 19 R Delay Time (R Delay Feedback if GraphicEQ) (Tap 3 Delay Time) 20 R Delay Feedback (Tap 4 Delay Time) 21 (Tap 5 Delay Time) 22 (Tap 6 Delay Time) 23 (Tap 7 Delay Time) 24 (Tap 8 Delay Time) 32 LFO/Phaser Speed (Leslie Stereo) (Spectrum Shift) (Resonator Decay) 33 LFO/Phaser Depth (Leslie Motor) (Ring Output Mix) 34 Pitch Feedback (Leslie Speed) (Delay/Reverb Input Mix if Ring Mod) 48 Low EQ Frequency (16Hz boost/cut) (Leslie High Level) 49 Low EQ Amplitude (32Hz boost/cut) 50 Mid EQ Frequency (62Hz boost/cut) (Low-Mid EQ Frequency) 51 Mid EQ Bandwidth (126Hz boost/cut) (Low-Mid EQ Width) 52 Mid EQ Amplitude (250Hz boost/cut) (Low-Mid EQ Amplitude) 53 High EQ Frequency (500Hz boost/cut) (Mid EQ Frequency) 54 High EQ Amplitude (1kHz boost/cut) (Mid EQ Bandwidth) 55 (2kHz boost/cut) (Mid EQ Amplitude) 56 (4kHz boost/cut) (High-Mid EQ Frequency) 57 (8kHz boost/cut) (High-Mid EQ Bandwidth) 58 (16kHz boost/cut) (High-Mid EQ Amplitude) 59 (High EQ Frequency) 60 (High EQ Amplitude) 64 Direct/EQ Mix Level (Effect Mix Level if GraphicEQ) 65 Effect Mix Level (EQ Mix Level if GraphicEQ) 66 Pitch/Leslie/Ring/Resonator Mix Level (Delay Mix if GraphicEQ, Reverb Mix if conf 5) 67 Delay Mix Level 68 Reverb Mix Level 80 Tap 1 Volume 81 Tap 2 Volume 82 Tap 3 Volume 83 Tap 4 Volume 84 Tap 5 Volume 85 Tap 6 Volume 86 Tap 7 Volume 87 Tap 8 Volume 88 Tap 1 Panning 89 Tap 2 Panning 90 Tap 3 Panning 91 Tap 4 Panning 92 Tap 5 Panning 93 Tap 6 Panning 94 Tap 7 Panning 95 Tap 8 Panning 96 Tap 1 Feedback 97 Tap 2 Feedback 98 Tap 3 Feedback 99 Tap 4 Feedback 100 Tap 5 Feedback 101 Tap 6 Feedback 102 Tap 7 Feedback 103 Tap 8 Feedback 104 Master Feedback Conf 0 (EQ->PCH->DL->REVERB) Conf 1 (LEZLIE->DL->REVERB) Conf 2 (GRAPHIC EQ->DELAY) Conf 3 (5BAND EQ->PCH->DLY) Conf 4 (3 BAND EQ->REVERB) sets all 8 targets to 32 (LFO Speed). Conf 5 (RING->DL->REVERB) Conf 6 (RESONATOR->DL->REV) Conf 7 (SAMPLING) doesn't use modulators.
i %= 147
statement in the decoding fragment above).
The edit buffer is not dumped on a full dump, so after decoding your
data should have 12800 bytes.
No MIDI parameters are ever dumped, and there is no checksum information. I don't know how to get the version of the ROM (without opening the case).
To the QuadraVerb main page