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] cakewalk INS files?

2006-06-09 by justmullaya

An excellent explanation Jim
I tried setting up a Remote 25 template before the CC's came out on 
the evo and got stuck on the fact that there was only one variable 
available. Your post has clarified things a lot. Thanks so much 
(archive this one people!!)I agree that the Remote 25's sysex 
implementation is terrible!

--- In DSI_Evolver@yahoogroups.com, James Elliott <johans121@...> 
wrote:
>
> As far as I am aware, the Evolver transmits neither RPN or NRPN's. 
It only transmits a few basic CC's, everything else is SYSEX. 
Programming SYSEX isn't terrible. You just need a BASIC understanding 
of the binary and hexidecimal notations. MIDIOX will help you see 
what your Evolver is transmitting and a simple scientific calculator 
(like the one provided with windows) will help translating between 
binary, hexidecimal, and decimal.
>  
> For example (and I'm at work at the moment, not home in front of my 
manual, I am doing this from "memory"), I believe "LFO 1 Amount" is 
Program Parameter #42 and it can accept values of 0 through 200. If 
you look in the manual, it will tell you how to format a SYSEX 
message for the transmission of a Program Parameter. It's definition 
is in binary, something like 1111 0000 0000 0001 0010 0000 0000 0001 
0000 0001 0XXX XXXX 0000 YYYY 0000 ZZZZ 1011 0111 (XYZ are variables 
for different combinations 0's and 1's). The program parameter list 
is in decimal, ie 42, and can also be found in the manual. Your 
resulting SYSEX message needs to be in hexidecimal, ie F0 ..... F7.
>  
> Here is a partial explaination of that binary string above. I am 
only going over the important parts as most of it will be a static 
hard coded value.
>  
> X
> Ok, 0XXX XXXX represents the two bytes needed to convey what 
parameter you are using - in this example we are using #42. If you 
use the calculator provided by Windows, in scientific mode, 42 
translates to '2A' in Hexidecimal. (or 0010 1010 in binary [notice 
the leading 0's, the first one matches the template above, the second 
one was added because 42 in binary is only 6 characters long and two 
bytes is composed of 8 characters, so the first is "given", the 
second is filler]).
>  
> Y & Z
> Now for the fun part. If I am not mistaken 0000 YYYY represents 
the "least significant byte" (LS) of the Program Parameter VALUE. 
0000 ZZZZ represents the "most significant byte" (MS) of the Program 
Parameter Value. Let's use 198 as our Program Parameter Value. The 
way it is written in the sysex message is slightly backwards. For 
example the binary representation of 198 is "1100 0110" LS=0110 & 
MS=1100.  To break that down MS=The byte containing "anything" over 
15. LS=The byte that contains 15 and under. Broken down even further 
MS='1100'==192 (128 + 64) and LS='0110'==6 (4 + 2)  MS (192) + LS (6) 
= 198.
>  
> So to put it together: 198 = '1100 0110' }--> MS=1100 LS=0110 }--> 
0000 MS & 0000 LS }--> SYSEX LS MS == 0000 1100 0000 0110.
>  
> Now to put our sysex message together translate your binary to 
hexidecimal (two byte groupings)
>  
> 1111 0000 = F,0
> 0000 0001 = 0,1
> 0010 0000 = 2,0
> 0000 0001 = 0,1
> 0000 0001 = 0,1
> 0010 1010 = 2,A  <<<<< Program Parameter for LFO Amount 1 = 42
> 0000 0110 = 0,6  <<<<< LS for 198  = 6
> 0000 1100 = 0,C  <<<<< MS for 198 = 192
> 1111 0111 = F,7
>  
> F0 01 20 01 01 2A 06 0C F7
>  
> Anyway, I hope this made sense. I know it looks daunting, however 
one thing to keep in mind is typically the only value you ever have 
to calculate is the Program Parameter, like LFO 1 Amount. The LS and 
MS are typically variables, so your editor will fill them in, you 
just tell it where they reside in the SYSEX string.
>  
> On my Novation Remote 25, it can only use values up to 127. So I 
can not go all the way up to 200 for my LFO 1 Amount. And on top of 
that, I can only have one variable in my SYSEX string. So I have to 
choose whether I want to turn my MS or LS into a variable and then 
hard code the other.
>  
> Here is what we are looking at:
> LS can represent 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, or 15
> MS can represent 16,32,48,64,80,96,112,128,144,160,176,192,208,224, 
or 240
>  
> Since I can only use one variable and would have to hard code the 
other, I would choose to hard code LS and turn MS into a variable so 
I can have a wider range of control - so I could get any of the MS 
values plus the hard coded LS. Since LFO 1 Amount only goes to 200 it 
makes no sense to hard code the LS to anything other than 0-8, if I 
do, I will make my control even LESS granular then it already is!
>  
> So, on my novation, my SYSEX for LFO 1 Amount looks like:
> f0 01 20 01 01 2a 0DV 00 f7.
> 0DV=variable=MS
> 00=hard coded=LS
>  
> If you already knew this, then sorry for the long winded answer. If 
you didn't I really hope you understood this. If you didn't then I 
will be glad to answer any additional questions. I hope I got it 
right myself!
>  
> Now for my rant....
> I'm going to complain to Novation, their controllers are VERY EASY 
to program, however they aren't very flexable with SYSEX messages!!! 
>  
> It also sux that Dave Smith didn't implement NRPN for their 
granular controls instead of SYSEX! HELLO DAVE, THAT IS WHAT NRPN IS 
THERE FOR!!! YOU HELPED CREATE THE MIDI SPECIFICATION, SO WHY DIDN'T 
YOU USE NRPN!!
>  
> Sorry Dave, I DO love your products though!
>  
> -Jim

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.