Looper's Delight Archive Top (Search)
Date Index
Thread Index
Author Index
Looper's Delight Home
Mailing List Info

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Date Index][Thread Index][Author Index]

RE: Programming slightly more advanced midi stuff



Before we go down the sysex vortex of despair, experiment and see if you can control what you want with CCs.  Page 71 says that Control Change messages are received and implies they will be received by the effect algorithm.  I couldn't find a table where they describe what each CC number does for each effect so you'll have to try them all blindly and see what happens.  

If you want to use sysex, fasten your seat belt and put your tray table in the upright and locked position.  We're about to experience some turbulence.

I think the basic pattern will be this:

   0xf0 0x41 0x10 0x00 0x33 0x12 ... 0x?? 0xF7 

This is from page 72. The 0x thing is programmerese that means what follows is a hexadecimal number. That appears to be the convention that the Missing Link wants based on the message generator page you sent.  In MIDI numbers are 1 byte so there will always be two digits after the 0x ranging from 0 to F (15 in decimal).  The Roland manual uses a different convention, they have the two hex digits followed by an H.  So whenever you see a number in the Roland manual just remove the H and add a 0x at the front.

Problem 1: That 0x10 in the third byte is the "device id" which they helpfully document as being in the range of 0x10 to 0x1F.  This is usually 0x10 but some devices let you change this so it will need to match whatever the device id is on your the EF-303.  The reason for this is similar to MIDI channels, if you had two EF-303's in a daisy chain and wanted to send sysex messages to both of them they would need different device ids.  Start with 0x10 and if that doesn't work, look around in the system menus to see if you can set the device id back to 0x10.

Problem 2: The 0x?? second from the end is the "checksum".  This is a number calculated from the other numbers in the message and used as a sanity check to make sure the entire message was tranfered correctly.  Roland has their own way
of doing this.  Here is a page that describes it, scroll down to
"Part 2: The Roland Checksum".

    http://www.2writers.com/eddie/TutSysEx.htm

What will be tedious about this is that the numbers in the "..." section are going to be different for every message, so you'll have to calculate the checksum every time.  I hate checksums.  

What goes in the "..." consists of two parts an "address" and "data".  What goes here are in the charts starting on page 73.  

According to the template on 72 there are four bytes in the address.  There appear to be two parts to the address the "start address" and the "offset address".  The start addresses are seen at the top of 73, and target one of the user patches, plus a temporary patch.  I'm guessing that for real-time performance you'll need to pick one patch and stick with it, then do any adjustments to that patch with sysex messages.  If you want to use several patches, you'll need different messages for each patch.  If we're lucky, targeting the "Temporary Patch" will modify whatever patch is currently selected so let's start there.  The first
two bytes of the address will then be:

    0x01 0x00

The offset addresses are seen in the other tables.  For "Multi-FX Parameter 1" it would be:

    0x00 0x01

To determine what the number parameters mean you have to look at the tables beginning on page 76.  So for the Filter effect, parameter 1 is EFFECT_BAL.

Back to 73, in the second column we have the cryptic "0aaa aaaa".  I think what they're trying to say here is that there is one data byte (8 bits) and each bit that has meaning is represented with an "a".  We can ignore that and skip to the right side of the table where for parameter 1 it says 0 - 127.  This is the range of values that you can send in your one byte of data.  So to move the parameter to the lowest value you would use 0x00 and to move it to the highest value you would use 0x7F.  The tedious part here is that you're going to have to do decimal to hex translation.  Here is a translation page from someone that thinks math is fun and probably didn't date much.  

    http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html

So to sum it all up, to put Multi-FX Parameter 1 into it's center (64) position you would send:

    0xf0 0x41 0x10 0x00 0x33 0x12 0x01 0x00 0x00 0x01 0x40 0x?? 0xF7 

The 0x?? checksum would be calculated as

     0x01 + 0x00 + 0x00 + 0x01 + 0x40 = 
     1 + 0 + 0 + 1 + 64 = 65

Since 65 does not exceed 128 we subtract the final answer from 128 to get 63.  Converting back to hex we have 0x3F.  So the final entire message is:

    0xf0 0x41 0x10 0x00 0x33 0x12 0x01 0x00 0x00 0x01 0x40 0x3F 0xF7 

I may have gotten some of the numbers wrong, but that's the basic idea.  Repeat this for everything you want to change!

In case it isn't obvious, what sucks about this is that you probably cannot use this method with a continuous controller to sweep the parameter value through it's range.  Each movement of the knob/slider would have to calculate a different sysex message to set position 0, position 1, position 2, etc.  I'm pretty sure TouchOSC doesn't support that.  

Sysex interfaces like this were designed primarily for patch editing programs on the computer, where you can tweak things in the UI and have them sent down to the device as you edit.   They're hard to use for live performance control.

Enjoy!
Jeff


From: markfrancombe@gmail.com <markfrancombe@gmail.com> on behalf of mark francombe <mark@markfrancombe.com>
Sent: Saturday, August 24, 2013 6:34 PM
To: loopers-delight
Subject: Programming slightly more advanced midi stuff
 
Hi All!

I have really taken advantage of all my old hardware with the use of the Amazing missing link,
http://wifimidi.com/
(unfortunately my wife is allergic to Wifi, so I have to wait till she is out to fire it up)
But being able to get at and attach a fantastic control on my iPad, has really opened up some old boxes.

Its fantastic as a sequenceble effects unit, and designed for that, but kinda "thrown in" is a clone 303 synch. Sounds great, but as its a bit of an extra, the controls are not as "Hands on" as the processing part. Kinda hidden way are ADSR controls, for both amp and filter, quantise to Key, quantise to various Scales, Gate time, slide time, rest, ties.. and lots more.
None available via knobs, all a bit menu-ish.

FEAR NOT... QUESTION APPROACHETH
But when I look in the manual for some nice CC numbers... Hmm, its a tad advanced for me...
Although I can see these things listed, I think they as Sysex commands... and,,, guess what...

"Ive never used them... boo hoo"

I dont know how to take the weird codes and "use em"!

To program in TouchOSC for the missing link I use this (by our own Bernard Wagner)

There is a SysEx thingy, but I dont know HOW to read the manual, and translate what IM seeing to what is shown on Mr Wagners clever page.

So for you geeks edification I present the EF-303 manual...


All I need is an example of how to program ONE of the parameters for one of the steps in the sequencer. For example:
 S1 (step 1) GATE TIME.
Which is shown on page 74 of the manual
Please REFER TO the message generator mentioned above.

I think if I can do one I can do them all!

It may be that its not possible, if so.. tell me... I can take it!


And Please... NO ONE SAY, "Do it in Bidule"...

Just for the record, I dont use computers for music. OK?

Thanks so much...

Mark