Dave Smith Instruments SYNTHESIZERS group photo

Yahoo Groups archive

Dave Smith Instruments SYNTHESIZERS

Index last updated: 2026-04-28 22:43 UTC

Message

RE: [Evolver] Sysex and Edirol

2004-05-12 by Mark Pulver

Robert Krueger (08:24 AM 5/12/2004) wrote:

 >Okay,  walk me through this if you could and let me know if I got this down.
 >
 >[stuff clipped out to be repeated below]
 >
 >Or do I have this all screwey???

No, you're really close.

I don't have the manual or anything in front of me, but what's happening is 
that it looks like Dave is using two bytes in the SysEx "packet" because he 
wants them "flipped" (LS comes before MS versus the normal of MS then LS). So..

(and to use your example)

   1. 1111 0000  System Exclusive	
   2. 0000 0001   DSI ID
   3. 0010 0000	Evolver ID	
   4. 0000 0001 	File Version
   5. 0000 0001	Program Parameter
   6. 0vvv vvvv 	Paramater # you want to control
   7. 0000 vvvv	Parameter value, LS Nibble
   8. 0000 vvvv	Parameter value, MS Nibble
   9. 1111 0111	End of Sysex

In HEX,  this is : F0 01 20 01 01 ?? ?? ?? F7

Okay, so lets say I want to program Resonance ( page 55 ) Resonance is
parameter # 22

So line 6 of the code, parameter #22 would be 0001 0110 in binary (16 in
HEX).  So line 7 and 8 are the midi range values, which are 4 bits each here
(1/2 a byte, hence a nibble)

*** this is correct to here.

 >So if the value range of resonance is 0 - 100, the LS Nibble should be value
 >0 or 0000 0000 in binary and 00 in HEX.

This is a bit confusing because of how you phrased it.

A byte can handle values 0-255, a nibble will only get you values 0-15, so 
when you talk about a range of 0-100, you can't just set the LS or MS 
nibble to 0. I understand how you got that from reading the spec, but 
you're interpretation is a bit off. :)

When a spec is given like this:

   7. 0000 vvvv	Parameter value, LS Nibble
   8. 0000 vvvv	Parameter value, MS Nibble

Then it means that you have to break up the byte value into two pieces, the 
MS and LS nibble, and send each piece as a separate byte. So..

If you wanted to set resonance to 100 (decimal) then:

   - Convert the value to binary: 01100100
     (make sure you use leading 0's to avoid getting "lost")

   - Split it into two nibbles:   MS   LS
                                 0110 0100

   - Now set the parameter values:

       7. 0000 vvvv	Parameter value, LS Nibble
          becomes:  0000 0100  or 04 hex

       8. 0000 vvvv	Parameter value, MS Nibble
          becomes:  0000 0110  or 06 hex

So, your SysEx string would be:

   F0 01 20 01 01 16 04 06 F7

Does that make sense?


Something else to note... Just 'cause Resonance is spec'd to be in a range 
of 0-100 doesn't mean that you can't stuff 101, 102, 103...255 in there. :) 
You won't hurt anything and you may get some interesting results. :)


(btw... good job at figuring this out - it's not easy!)

Mark

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.