home *** CD-ROM | disk | FTP | other *** search
/ Audio Version 4.94 / audioversion4.94knowledgemediaresourcelibraryoctober1994.iso / unix / midi_doc / qdrvrbsy < prev    next >
Text File  |  1993-02-08  |  15KB  |  385 lines

  1.  
  2.  
  3.  
  4.  
  5.                           Alesis QuadraVerb
  6.                      System Exclusive Information
  7.  
  8.                         Bob Page .. 12-Feb-89
  9.  
  10.                     Internet/UUCP: page@ulowell.edu
  11.                               BIX: page
  12.                          Phone: +1 508/687-6004
  13.  
  14.  
  15.  
  16. This information is presented in the hope that it will be useful, but
  17. no warrantees about its accuracy are expressed or implied.  I'm
  18. interested in any changes/additions you have.  Feel free to use this
  19. information in any way for any purpose, but please don't pretend you
  20. wrote it (leave my name in this document).  I'd be happy if you send
  21. me code you write based on this info, but of course that's up to you.
  22.  
  23. Alesis is currently saying they are not going to release the QuadraVerb
  24. info "at this time".  That could mean the "format" is subject to change,
  25. or they are withholding the info until some pet software companies get QV
  26. patch editors to the market, or maybe some other reason, I dunno.  In any
  27. event, I needed the info, so I created it.  And on with the show...
  28.  
  29.  
  30. QUADRAVERB SYSTEM EXCLUSIVE DATA ENCODING FORMAT:
  31.  
  32. You first need to understand how the QV encodes its data for MIDI
  33. transmission.  Although all 8 bits of a byte are used internally, the
  34. MIDI specification reserves the highest bit for status messages, so
  35. these high bits have to be "removed" from the data stream.  The 8-bit
  36. QuadraVerb data is encoded for MIDI transmission into 7-bit data.  The
  37. encoding looks like this:
  38.  
  39. Seven QuadraVerb bytes (each line represents one byte):
  40.    Byte 0: a7 a6 a5 a4 a3 a2 a1 a0
  41.         1: b7 b6 b5 b4 b3 b2 b1 b0
  42.         2: c7 c6 c5 c4 c3 c2 c1 c0
  43.         3: d7 d6 d5 d4 d3 d2 d1 d0
  44.         4: e7 e6 e5 e4 e3 e2 e1 e0
  45.         5: f7 f6 f5 f4 f3 f2 f1 f0
  46.         6: g7 g6 g5 g4 g3 g2 g1 g0
  47. are transmitted as eight MIDI bytes:
  48.    Byte 0: 00 a7 a6 a5 a4 a3 a2 a1
  49.         1: 00 a0 b7 b6 b5 b4 b3 b2
  50.         2: 00 b1 b0 c7 c6 c5 c4 c3
  51.         3: 00 c2 c1 c0 d7 d6 d5 d4
  52.         4: 00 d3 d2 d1 d0 e7 e6 e5
  53.         5: 00 e4 e3 e2 e1 e0 f7 f6
  54.         6: 00 f5 f4 f3 f2 f1 f0 g7
  55.         7: 00 g6 g5 g4 g3 g2 g1 g0
  56.  
  57. Here is a C fragment to decode the data (note that you don't want to
  58. decode the SysEx status messsages; they are not encoded):
  59.  
  60.   unsigned char c, oc;
  61.  
  62.   oc = 0;
  63.   for (i=0; ((c = getc(ifp)) < 0x80); i++) {
  64.      i %= 147;            /* end of program */
  65.      if (shift = i % 8) {
  66.         oc = (oc << shift) + (c >> (7-shift));
  67.         putc(oc, ofp);
  68.      }
  69.      oc = c;
  70.   }
  71.  
  72. All the info given below assumes the data has been decoded.  If you are
  73. going to send the data back to the QV after editing it, you have to encode
  74. it first.  Code fragment left as an exercise for the reader.
  75.  
  76.  
  77. QUADRAVERB SYSTEM EXCLUSIVE COMMAND FORMAT:
  78.  
  79. Note you have to tell the QuadraVerb to accept MIDI SysEx data before any
  80. of this will work.  Although it's possible to instruct the QV to disable
  81. SysEx via MIDI SysEx; it's not possible to re-enable it; you have to go do
  82. it from the front panel.
  83.  
  84. A QuadraVerb SysEx command string looks like (in hex):
  85.     f0  - SysEx start
  86.     00  \
  87.     00   - Alesis mfr code 
  88.     0e  /
  89.     02  QuadraVerb ID number
  90.     cc  QuadraVerb command code
  91.     pp  QuadraVerb command code parameter
  92.     dd  data stream (variable length)
  93.     ..
  94.     f7  End of SysEx
  95.  
  96.   The command codes are:
  97.     01 Change Parameter
  98.     02 Load Program
  99.     03 Dump Program
  100.  
  101.   The parameters depend on the command and are discussed below.
  102.  
  103.  
  104. -- Dump Program (command code 03):
  105. To have an external device request a QuadraVerb program dump, send the
  106. following MIDI sequence to the QV:
  107.        f0 00 00 0e 02 03 pp f7
  108. where '03' is the "dump data" command, and 'pp' is the hex parameter:
  109.        00-63  single program, 0-99
  110.        64     edit buffer
  111.        65     all program memory
  112.  
  113. Keep in mind if you're doing many edit/compares on program 27 you
  114. probably want to be dumping the edit buffer, not program 27, as #27 is
  115. only modified once the STORE is done.
  116.  
  117.  
  118. -- Load Program (command code 02):
  119. The format is similar:
  120.        f0 00 00 0e 02 02 pp (data) f7
  121. where 'pp' is the same as in the above description.  The data must be
  122. encoded before being sent.  If you do it right you should send 155 bytes
  123. out the MIDI port (including SysEx etc) for an individual program.
  124.  
  125. -- Change Parameter (command code 01):
  126.        f0 00 00 0e 02 01 gg pp dd dd dd f7
  127. where 'gg' is the 'parameter group' you want to change:
  128.        00 - program
  129.        01 - reverb
  130.        02 - delay
  131.        03 - pitch
  132.        04 - eq
  133.        05 - midi
  134.        06 - store
  135.        07 - config
  136.        08 - mix
  137.        09 - mod
  138.        0a - name
  139. and 'pp' is the parameter number within parameter group (for example in
  140. 'reverb', parameter number 0 is 'Reverb Type', and the numbers increase
  141. the same as if you used the PAGE UP key).
  142.  
  143. The "dd dd dd" string is the value you want in that parameter.  It must be
  144. encoded, even if it fits in 7 bits.  Sometimes the value takes two bytes;
  145. in that case they should be sent MSB first, then LSB (this is the opposite
  146. of the HR-16).  When one byte is encoded it will become two bytes;
  147. likewise two become three.  If you're sending two bytes (after encoding)
  148. send them first, then 00, then f7.
  149.  
  150. The QV will also send you these Change Parameter requests every time a
  151. parameter is changed using the front panel.  If somebody selects the Delay
  152. Time parameter and pushes the button to go from 1 to 400ms, you're going
  153. to get 400 of these messages.  You will get messages every time the VALUE
  154. buttons get pushed, even when nothing changes (like being in program mode
  155. and pressing the down key when you're already at program zero), so be
  156. prepared for them.
  157.  
  158. You can't send running parameter change requests; each one has to be
  159. a separate SysEx message.
  160.  
  161.  
  162.  
  163. QUADRAVERB SYSTEM EXCLUSIVE PROGRAM FORMAT:
  164.  
  165. A single program has 128 bytes of data.  When it's encoded and shipped
  166. over MIDI, it's 147 bytes (without SysEx headers).  That's why the decode
  167. fragment above has that magic number in it.
  168.  
  169. Unused locations have zeros in them.  The EQ bytes change meaning
  170. depending on whether graphic EQ is being used, so both are given.
  171. Everything here is listed in decimal.
  172.  
  173. Graphic EQ parameters, only used in the Graphic_EQ->Delay configuration:
  174.  
  175.  Byte   Description            Default  Range
  176.    0     ???                      ??    ?? [usually set to 14]
  177.    1     16Hz                     14    0-28 (14 is center)
  178.    2     32Hz                     14    0-28 (14 is center)
  179.    3     62Hz                     14    0-28 (14 is center)
  180.    4    126Hz                     14    0-28 (14 is center)
  181.    5    250Hz                     14    0-28 (14 is center)
  182.    6    500Hz                     14    0-28 (14 is center)
  183.    7     1kHz                     14    0-28 (14 is center)
  184.    8     2kHz                     14    0-28 (14 is center)
  185.    9     4kHz                     14    0-28 (14 is center)
  186.   10     8kHz                     14    0-28 (14 is center)
  187.   11    16kHz                     14    0-28 (14 is center)
  188.   12     ???                      ??    ?? [usually set to 24]
  189. Graphic EQ also seems to change all modulation targets to 16Hz boost/cut.
  190.  
  191. Here's the complete list, in byte order.  Note that all parameters have
  192. a 'default' value you can get by pressing both VALUE buttons at the same
  193. time - if you're building a patch editor you might want this info so your
  194. user can hit a button to get the default value for some parameter.
  195.  
  196.  Byte   Description            Default  Range
  197.    0    Low EQ Frequency MSB
  198.    1    Low EQ Frequency LSB     200  20-999Hz
  199.    2    Low EQ Amplitude MSB
  200.    3    Low EQ Amplitude LSB     280  0=-14db, 280=0db, 560=14db, 0.05 steps
  201.    4    Low EQ Frequency MSB
  202.    5    Mid EQ Frequency LSB    2000  200-9999Hz
  203.    6    Mid EQ Bandwidth         100  20-255 (0.2-2.55 octaves)
  204.    7    Mid EQ Amplitude MSB
  205.    8    Mid EQ Amplitude LSB     280  0=-14db, 280=0db, 560=14db, 0.05 steps
  206.    9    High EQ Frequency MSB
  207.   10    High EQ Frequency LSB   8000  2000-18000Hz
  208.   11    High EQ Amplitude MSB
  209.   12    High EQ Amplitude LSB    280  0=-14db, 280=0db, 560=14db, 0.05 steps
  210.   13    Leslie High Rotor Level   20  0=-20db, 26=+6db
  211.   14    Low-Mid EQ Freq. MSB
  212.   15    Low-Mid EQ Freq. LSB     100  20-500Hz       (really 100Hz default!)
  213.   16    Low-Mid EQ Bandwidth     100  20-255 (0.2-2.55 octaves)
  214.   17    Low-Mid EQ Ampl. MSB
  215.   18    Low-Mid EQ Ampl. LSB     280  0=-14db, 280=0db, 560=14db, 0.05 steps
  216.   19    High-Mid EQ Freq. MSB
  217.   20    High-Mid EQ Freq. MSB   6000  2000-18000Hz
  218.   21    High-Mid EQ Bandwidth    100  20-255 (0.2-2.55 octaves)
  219.   22    High-Mid EQ Ampl. MSB
  220.   23    High-Mid EQ Ampl. LSB    280  0=-14db, 280=0db, 560=14db, 0.05 steps
  221.   24        [unused]
  222.   25        [unused]
  223.   26    Pitch Mode                 1  0-5 m/s_chorus, m/s_flange, phase, detune
  224.   27    Pitch Input                1  0=pre-eq, 1=post-eq
  225.   28    LFO Waveshape              0  0=triangle, 1=square
  226.   29    LFO/Phaser Speed          20  0=1, 98=99
  227.   30    LFO/Phaser Depth          50  0=1, 98=99
  228.   31        [unused]
  229.   32    Pitch Feedback (%)         0  0-99
  230.   33    Detune Amount             99  0=-99, 99=none, 198=+99
  231.   34    Leslie Stereo Separation  99  0-99
  232.   35    Leslie Motor Control       1  0=off, 1=on
  233.   36    Leslie Motor Speed         0  0=slow, 1=fast
  234.   37    Trigger Flange             0  0=off, 1=on
  235.   38        [unused]
  236.   39    Delay Type                 1  0=mono, 1=stereo, 2=ping-pong
  237.   40    Delay Input 1              1  0=pre-eq, 1=post-e1
  238.   41    Delay Input Mix           99  0=input1, 99=center, 198=pitch/leslie
  239.   42    Left Delay Time (MSB)         1-400ms (1-800ms mono)
  240.   43    Left Delay Time (LSB)    100  If graphicEQ: 1-750ms (1-1500ms mono)
  241.   44    Left Delay Feedback (%)    0  0-99
  242.   45    Right Delay Time (MSB)        (Right not used in mono)
  243.   46    Right Delay Time (LSB)   100  1-400ms (if graphicEQ: 1-750ms)
  244.   47    Right Delay Feedback (%)   0  0-99
  245.   48        [unused]
  246.   49        [unused]
  247.   50    Reverb Type                0  0=plate, 1=room, 2=chamber, 3=hall, 4=rev
  248.   51        [unused]
  249.   52    Reverb Input 1             3  0=pre-eq, 1=post-eq, 2=pitch, 3=delay_mix
  250.   53    Reverb Input 2             1  0=pitch out, 1=delay out
  251.   54    Reverb Input Mix           0  0=Input1, 99=center, 198=Input2
  252.   55    Reverb PreDelay           40  1-140ms
  253.   56    PreDelay Mix             198  0=Pre, 99=center, 198=Post
  254.   57    Reverb Decay              50  0-99
  255.   58    Reverb Diffusion Amount    8  0=1, 4=5, 8=9
  256.   59    Low Frequency Decay       60  0=-60, 30=-30, 60=0
  257.   60    High Frequency Decay      40  0=-60, 30=-30, 60=0
  258.   61    Reverb Density             8  0=1, 4=5, 8=9
  259.   62    Reverb Gate                0  0=off, 1=on
  260.   63    Reverb Gate Hold Time      0  0-99
  261.   64    Reverb Gate Release Time  80  0-99
  262.   65    Reverb Gated Level (%)     0  0-99
  263.   66        [unused]
  264.   67        [unused]
  265.   68    Configuration              0  0-4
  266.   69    Direct Signal Select       0  0=pre-eq, 1=post-eq
  267.   70    Direct/EQ Signal Level    99  0-99 (EQ Out if Direct Signal Select = 1)
  268.   71    Master Effects Level      50  0-99
  269.   72    Pitch/Leslie Out Level    50  0-99
  270.   73    Delay Output Level        50  0-99
  271.   74    Reverb Output Level       50  0-99
  272.   75        [unused]
  273.   76        [unused]
  274.   77        [unused]
  275.   78        [unused]
  276.   79        [unused]
  277.   80    Mod 1 Source               0  0-125 (see list below)
  278.   81    Mod 1 Target               0  (see Modulation Targets section below)
  279.   82    Mod 1 Amplitude            0  0=-99, 99=0, 198=+99
  280.   83    Mod 2 Source
  281.   84    Mod 2 Target                  Sources: 0=pitch_bend, 1=after_touch,
  282.   85    Mod 2 Amplitude                        2=note_number, 3=note_velocity,
  283.   86    Mod 3 Source                           4-125 correspond to MIDI
  284.   87    Mod 3 Target                           controller numbers 0-121.
  285.   88    Mod 3 Amplitude
  286.   89    Mod 4 Source
  287.   90    Mod 4 Target
  288.   91    Mod 4 Amplitude
  289.   92    Mod 5 Source
  290.   93    Mod 5 Target
  291.   94    Mod 5 Amplitude
  292.   95    Mod 6 Source
  293.   96    Mod 6 Target
  294.   97    Mod 6 Amplitude
  295.   98    Mod 7 Source
  296.   99    Mod 7 Target
  297.  100    Mod 7 Amplitude
  298.  101    Mod 8 Source
  299.  102    Mod 8 Target
  300.  103    Mod 8 Amplitude
  301.  104        [unused]
  302.  105        [unused]
  303.  106    Edit Name Character  1    32  The following 96 characters, in order:
  304.  107    Edit Name Character  2         !"#$%&'()*+,-./0123456789:;<=>?
  305.  108    Edit Name Character  3        @ABCDEFGHIJKLMNOPQRSTUVWXYZ[Y]^_
  306.  109    Edit Name Character  4        `abcdefghijklmnopqrstuvwxyz{|}><
  307.  110    Edit Name Character  5
  308.  111    Edit Name Character  6        The second Y is the Japanese 'Yen' or
  309.  112    Edit Name Character  7        Chinese 'Yuan' (monetary) symbol.  The
  310.  113    Edit Name Character  8        last two characters are right and left
  311.  114    Edit Name Character  9        arrows.  The backslash and tilde
  312.  115    Edit Name Character 10        characters are not available.
  313.  116    Edit Name Character 11
  314.  117    Edit Name Character 12        Note this list is in ASCII order, and
  315.  118    Edit Name Character 13        the ASCII equivalent is what's stored.
  316.  119    Edit Name Character 14
  317.  120        [unused]
  318.  121        [unused]
  319.  122        [unused]
  320.  123        [unused]
  321.  124        [unused]
  322.  125        [unused]
  323.  126        [unused]
  324.  127        [unused]
  325.  
  326.  
  327. MODULATION TARGETS:
  328.  
  329. The target numbers are not constant; it depends on what configuration you
  330. are using, so you can't always change the target to #48 and know it always
  331. means your modulator affects Low EQ Frequency.  What a pain.
  332.  
  333.   0    Reverb Input Mix
  334.   1    Reverb PreDelay
  335.   2    Reverb PreDelay Mix
  336.   3    Reverb Reverse Time    (Reverb Decay?  I think the LCD mislabels this)
  337.   4    Reverb Diffusion
  338.   5    Reverb Density
  339.   6    Reverb Low Decay
  340.   7    Reverb High Decay
  341.  
  342.  16    Delay Input Mix        (L/Mono Delay Time if GraphicEQ)
  343.  17    L/Mono Delay Time    (L/Mono Delay Feedback if GraphicEQ)
  344.  18    L/Mono Delay Feedback    (R Delay Time if GraphicEQ)
  345.  19    R Delay Time        (R Delay Feedback if GraphicEQ)
  346.  20    R Delay Feedback
  347.  
  348.  32    LFO/Phaser Speed    (Leslie Stereo)
  349.  33    LFO/Phaser Depth    (Leslie Motor)
  350.  34    Pitch Feedback        (Leslie Speed)
  351.  
  352.  48    Low EQ Frequency    (16Hz boost/cut)    (Leslie High Level)
  353.  49    Low EQ Amplitude    (32Hz boost/cut)
  354.  50    Mid EQ Frequency    (62Hz boost/cut)    (Low-Mid EQ Frequency)
  355.  51    Mid EQ Bandwidth    (126Hz boost/cut)    (Low-Mid EQ Width)
  356.  52    Mid EQ Amplitude    (250Hz boost/cut)    (Low-Mid EQ Amplitude)
  357.  53    High EQ Frequency    (500Hz boost/cut)    (Mid EQ Frequency)
  358.  54    High EQ Amplitude    (1kHz boost/cut)    (Mid EQ Bandwidth)
  359.  55                (2kHz boost/cut)    (Mid EQ Amplitude)
  360.  56                (4kHz boost/cut)    (High-Mid EQ Frequency)
  361.  57                (8kHz boost/cut)    (High-Mid EQ Bandwidth)
  362.  58                (16kHz boost/cut)    (High-Mid EQ Amplitude)
  363.  59                            (High EQ Frequency)
  364.  60                            (High EQ Amplitude)
  365.  
  366.  64    Direct/EQ Mix Level    (Effect Mix Level if GraphicEQ)
  367.  65    Effect Mix Level    (EQ Mix Level if GraphicEQ)
  368.  66    Pitch/Leslie Mix Level    (Delay Mix if GraphicEQ, Reverb Mix if cfg 5)
  369.  67    Delay Mix Level
  370.  68    Reverb Mix Level
  371.  
  372.  
  373.  
  374. FULL PROGRAM DUMP FORMAT:
  375.  
  376. A full dump is all 100 programs, end to end.  HOWEVER, the MIDI encoding
  377. starts over at each program (that's why you see the i %= 147 statement in
  378. the decoding fragment above).  The edit buffer is not dumped on a full
  379. dump, so after decoding, your data should have 12800 bytes.
  380.  
  381. No MIDI parameters are ever dumped, and there is no checksum information.
  382. I don't know how to get the version of the ROM (without opening the case).
  383.  
  384. [END of document - hope it was useful.]
  385.