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