MIDI DESIGNER
The only MIDI controller for iPad, iPhone, and Mac


Talk to other MIDI Designer users about MIDI Designer, iOS MIDI and related topics. Or share layouts, pages, and ideas.

Check out our Facebook Group.

Of course, if you want to send us an email, feel free.

Open problem reports

Summary of user requests
PLEASE HELP: Roland JP-08 sysex confusion - MIDI Designer Q&A
0 votes
in How does MIDI Designer work with X? by effegee (320 points)
First thing: leave out the checksum and use the MD feature for this. It will insert the checksum in that penultimate byte.
Leave out the checksum? Do you mean select checksum "none" or "Roland"? No, I haven't added the checksum to the "Sysex Bytes in Hex" field, which reads:
41 10 00 00 00 1C 12 03 00 02 02 V

I've selected "2" bytes in value.

When I log the MIDI "Out" of the JP-08's "VCF Cutoff" slider, the value & checksum read on the high end:
0F 0F 5B
And on the low end:
00 00 79
I figured that 0F 0F converts to 1935, so I set the MIDI min-->max at 0-->1935.  But my MD slider outputs on the high end:
0F 0F 2D
And on the low end:
00 00 4B
This is with the checksum set to "Roland".
So what gives?  What can I do to get the checksum in MD to line up with what the JP-08 wants to receive?  I think that is the key to success(?)
Hey there. There are two open questions: 1) is MD's split between MSB and LSB correct for this MIDI target? 2) Is the checksum correct.

So let's go back to basics for testing (a HelloWorld, essentially):

The best way to deal with this is NOT to use a knob to try to get it right. The best way to go is to create two buttons and type in the ENTIRE sysex string. That way you can try out different ideas... once you figure that out, we can move to figuring out what you need to use in MD.

Possible outcomes:
1) The MSB/LSB split isn't right, so we'll need to use Named Ticks to hack the values. This is unlikely, but worth doubting to get moving.
2) The Checksum isn't a Roland  Checksum -- I think this is a newer device, and perhaps it's different... that's also unlikely.

Anyway, the most likely outcome is that you just need to figure some stuff out. We split MSB and LSB like this:

http://mididesigner.com/help/midi-byte-calculator/

So perhaps that will also help you sleuth out what you need.

Thanks, looking forward to getting this figured out, even if it turns out that MD must be modified.
I created two buttons with the entire sysex string (one button for the lowest value, one for the highest value), and they do work properly as expected.  What's the next step?

Note: Someone has already made a control surface for this synth with TB MIDI Stuff (which I've never used before), but I want to create one in MD.  Their sysex is set up with Value Format Method as Nibbles "(Big Endian)", Checksum Method as "Two's Complement" and Min & Max values as 0 and 255.  I don't know if that helps.
Thanks, that might help. So what are the two sysex strings and what values do they represent?
From one of your above comments, it looks like it's only the checksum that is wrong. Does that sound about right?
The two full sysex strings are:

41 10 00 00 00 1C 12 03 00 02 02 0F 0F 5B
41 10 00 00 00 1C 12 03 00 02 02 00 00 79
The values are : 0F 0F & 00 00, and they represent the VCF Filter all the way opened and closed.
You are right, it's just the checksum that is wrong.
Cool. Are you on the beta team yet? Would you like to test the functionality when it's added?
And thanks for the conversation on this. Have you tried the other types of checksum MIDI Designer offers?
I have tried all four types of checksum available and none of them work.
Also, I am not on the beta team.  How do I sign up?
Hi there, we'll add you to the team shortly (you'll get an email from Apple/Testflight). Then it's a question of when we get to it. Thanks!
Here's more info from another blog post (if it helps at all):


The checksum calculation is expressed simply in C as follows

static unsigned char roland_cksum(unsigned char *data, int len)
{
        int i;
        unsigned int cksum = 0;

        for (i=0; i<len; i++) {
                cksum += data[i] & 0xFF;
        }
        cksum = (0x100 - cksum) & 0x7F;

        return cksum;
}

for Max users, here’s an sxformat string you can use. It takes 4 inputs (sorry for the line break):

sxformat 240 65 16 0 0 0 29 18 3 0 / is $i1 / is $i2 / is $i3
         / is $i4 / is checksum(1,13,2) & 127 / 247
That helps. We'll queue this up with the ticket. Please hang tight as we're hyper-focused on something new during the next few months. Thanks.
That checksum is the same one we use. The only possibilities is: 1) it's a different checksum required for this device or 2) the bytes we're performing the checksum on are not the right ones. Anyway, nothing that cannot be figured out with a bit of focus, we'll hit this when we can, thank you.

2 Answers

+1 vote
This sounds like you are dealing with nibble bytes.

Check this thread for the solution.

http://mididesigner.com/qa/3881/how-to-send-roland-jx-305-nibbles-2-values-in-sysex-message

 

 From the sysex log it seems you have a 1 byte checksum to add. You need to select the 1 byte checksum in MD, like admin mentioned.
by ezb (5.7k points)
edited by ezb
ezb, the issue here is that MD does not add the checksum that the JP-08 wants to see.  I've tried all of the checksum types MD offers in the drop-down menu.  I don't what you mean by "1 byte checksum".
Effegee

According to your log and sysex description the following is the case with your log.

F0 41 10 00 00 00 1C 12 03 00 02 02 06 0F 64 F7

Bytes 02 02 are the address  MSB and address LSB
Bytes 06 0F are the value MSB and value LSB
Byte 64 is the checksum. It is only 1 byte.

If you have a range of 0-255 in your slider it is not gonna work. You need the named tick list I provided in the JX-305 thread.

Let me know how it goes, because it would be really strange if Roland suddenly started using some other checksum.
ezb--
Again, the issue is with the checksum.  I created a button in MD to send the following string, including the checksum, which is the last byte (5B):
 41 10 00 00 00 1C 12 03 00 02 02 0F 0F 5B

The JP-08 recognizes the string as a proper SysEx command. Remember, this is with "none" selected in the checksum drop-down menu.
Then I set up a button with the same string, MINUS the checksum (5B) and selected the "Roland" checksum.  This is the logged output:
F0 41 10 00 00 00 1C 12 03 00 02 02 0F 0F 2D F7

MD creates a checksum of "2D"
Axe FX II :  2C
Roland two-byte model ID:  2D
Roland three-byte model ID:  49

So, it seems that Roland may have done something with the checksum of these new synth modules.
Please add a another option to the value like “LSB First” This button would do the same as the named tick trick does (see the link for qa-3881 above) and would improve performance b/c you don’t need to translate 255+ named tick for 2/3 of your template. A PCM wave table in some roland requires 1024 values (V=3bytes)
Hi all, where did this conversation end up? Is there still a checksum we need to add? Thanks!
I was able to do named ticks for almost all roland related things. Using the roland checksum of course ... I still think that LSB First would save some resources ... I still use iPad 2 for some MDP templates
0 votes
v 1.1 firmware added CC control for almost all the panel controls check the roland site for details

Also the NAMED TICKs works but you need to HACK and create huge table with values and paste it to named ticks. ... all doable and works. If you search for roland here you’d find a message that shows you how to make named ticks for MSB/LSB Roland Sysex.

Again done this Jd-XI and works like a charm
by bladuck (640 points)
...