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
Message
Re: [Evolver] cakewalk INS files?
2006-06-08 by John Pascuzzi
Attachments
- No local attachments were found for this message.