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-08 by John Pascuzzi

At 11:53 AM 6/8/06, you wrote:
>I don't know what happened!?!?
>When I typed it up it was full of paragraph and line breaks! I am a 
>programmer by trade, so white space IS my friend!


Came in fine and formatted on my Eudora pc email client:


>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.