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!)
MarkMessage
RE: [Evolver] Sysex and Edirol
2004-05-12 by Mark Pulver
Attachments
- No local attachments were found for this message.