Forums > MaxMSP

Roland MC-303 Checksum in SXformat

Nov 11 2013 | 1:35 pm

Hey Guys–

Several months ago I asked you guys to help on a DX7’s sysex formatting. The help I received was incredible.

Now I’m here again, with another sysex midi implementation question. I’ve got this old Roland MC-303 whose sysex I’d love to fiddle with. After perusing the manual, it seems that there are sound parameters you can control via sysex that aren’t accessible on the interface.

The problem: I’ve never worked with checksums before.

The DX7 sysex messages were shorter (like 7 bytes or something). The sysex messages on The Roland are typically longer, including the checksum, for instance:

| F0 41 10 00 03 12 | 00 40 18 02 | 07 | 1F | F7 |
Header | Address | Data | Chksum | End

In the sxformat example in max, the example message seems to be for a DX7. The checksum on the MC-303 adds the address and data together, and subtracts it from 80(hex). How do you write a function that calculates this kind of message?

In short, I just wanna be able to fiddle with sysex parameters through max via a midi controller.

My apologies if this has been answered elsewhere; I was unable to find anything particularly specific to this question.

Thank you!

Nov 12 2013 | 5:36 am

it’s spelled out here on the 1st google hit !
(i can see you’ve maybe even been there)
you should do your maths in *decimal* anyway as max converts into hex when you send it out
i just create raw midi data so i cannot comment on using sxformat
so your sysex strings go to [midiout] starting with 240[0xF0] and ending with 247[0xF7]

i’ve done the following as an investment in your sharing the ‘proceeds’ here when you’re done, hope it helps

-- Pasted Max Patch, click to expand. --


Nov 12 2013 | 8:11 am

Um, wow? Thanks, a lot!

Since there are a few objects here that I’ve never used, it’ll take a bit of messing around to wrap my head around this well organized, good-lookin’ reverb macro example that you’ve provided. Thank you!

Yes, I’ve been to that site; it’s a good resource. It seems to be, more or less, a transcription of some of the MC-303 documentation.

Question: You know in your example how you provided a drop down menu with the various reverb options in it? I am guessing that is sending a value from 0 – 7? What if the particular sysex parameter that you want to control could take a value from 0 – 127? Could you just replace the drop down menu with a number box?

Nov 12 2013 | 10:58 am

yep – the example on the left (it virtually duplicates the guts of template patcher) does just that with a value limited to 7, just change that value to 127 ! (also change the parameter address list ! e.g. Reverb_Send for Part_1 is 00 40 01 22, the available range is 0-127 ) (00 40 02 22 for Part 2 and so on)

the example i provided is an overly detailed way to do the formatting task – i just thought it’d help you see what you need to do more easily and establish how to assemble the other synth parameters – if it’s clear there’s a better chance you’ll knock up something helpful to give life to this currently unloved device on my shelf !!

do post back if you assemble something you’re happy to share

it’s an unusually deep midi implementation though

i’m excited because it seems to allow non-western tunings : – ]

Nov 13 2013 | 11:14 am

Yeah I am really surprised at how deep the midi implementation goes. Pretty surprising as this thing generally gets written off as a mere rompler. Can’t say why exactly, but I love this machine.

I can’t wait to report back!

Thanks so much.

Aug 23 2015 | 5:15 pm

Hi Kevin and Avantronica!

Bit of a bump….

I’ve taken this on board, with the intention of converting to a M4L once completed (Sysex will be smuggled to an external).

Anyhow, Checksums…

I’m trying LFO Waveform for my first sysex (I did these years ago on my Kenton KontrolFreak).

Does this look correct?

-- Pasted Max Patch, click to expand. --

With your patch (further up the page) I had some negative numbers in the checksum, so I’ve broken it down. At one point I had a Checksum greater than 127, can you have Checksums greater than 127?

I’m doing this without the 303 connected at the moment, as I’m doing it from bed at the moment!



Aug 23 2015 | 5:52 pm

sysex attached.

  1. Screen-Shot-2015-08-24-at-01.52.19


Aug 25 2015 | 8:32 am

i’ll have a look to refresh myself – can you provide more info on exactly how/where an issue arose . cheers

Aug 26 2015 | 10:42 am

Hi There,

Thanks for the input. I’ve gone back to your patch now and changed the sysex from the reverb macro to the lfo waveform and don’t seem to get the errors…

With the sysex for lfo waveform: [00] [40] [midi chan] [39] [waveform 0-5] [checksum] [end] and the formula for calculating the checksum from:

and the manual:

have I done this correctly here?:

-- Pasted Max Patch, click to expand. --

I still haven’t connected the 303, working on this thoeretically at the moment.



Oct 22 2015 | 2:49 am

Hi Guys, Had the same issue too. I came up with this. Has been working well for me.

Viewing 10 posts - 1 through 10 (of 10 total)

Forums > MaxMSP