Roland MC-09

By paulaudi, 10 July, 2025
Forums

Hello!

Im trying to learn BCR from Roland MC-09 but BCR just learn 7 parameters:

General Purpose Controller 1
General Purpose Controller 2
General Purpose Controller 3
Cutoff
Reso
Decay
And Volume

Remaining 4 parameters I programmed manually by studying the BCR architecture and MIDI implementation chart:

Modulation (which is also OSC vibrato depth which is in the menu I'm interested in)
Balance
Portamento
Pitch bend

Can somebody please help to figure out how to write script correctly? I found MIDI Implementation for device but don't understand exactly. The first 6 strings in my script:


$F0 $41 $10 (or 11? because Device ID of MC-09 from 17 to 32 and 10 in hex mean 16?!?) $00 $4F $12 - that's it... I'm trying to finish script and sent it to BCR via BC Manager but nothig good happens)))

Especially ineresting to control the parameters that are under shift menu in MC-09:

1.LFO rate
2.LFO waveform
3.OSC waveform
4.OSC vibrato depth
5.Filter type
6.Filter envelope attack time
7.Filter envelope sustain level
8.Filter envelope release time
9.Filter LFO depth
11.Amplifier envelope depth
12.Amplifier envelope attack time
13.Amplifier envelope decay time
14.Amplifier envelope sustain level
15.Amplifier LFO depth
16.Effect type (LEAD) Vintage mode (BASS)

Would be very grateful if somebody help!

Mark van den Berg

4 months ago

$F0 $41 $10 (or 11? because Device ID of MC-09 from 17 to 32 and 10 in hex mean 16?!?) $00 $4F $12 - that's it... I'm trying to finish script and sent it to BCR via BC Manager but nothig good happens)))

Concerning the Device ID:
MC-09_OM.pdf specifies that the Device ID ranges from 17 to 32; but this is the value that you see when you set it as a system parameter. To arrive at the internal value (to be sent in System Exclusive messages, as specified in MC-09_MI.pdf), you have to subtract 1. So the default Device ID is shown as "17", but its internal value is 10H, so you need "$10" in BCL scripts.

Another crucial point is that the checksum must be correct.
So a SysEx message to an MC-09 having the default Device ID must have the following format:
$F0 $41 $10 $00 $4F $12 Address Data Checksum $F7

Address should consist of 4 bytes.

Data must consist of 1 or more bytes.

Checksum must be a single byte, namely bits 0 to 6 of the negative sum of the Address and Data bytes.
You can make the BCR calculate the correct checksum automatically by replacing Checksum in the above definition with "cks-1 6". ("cks-1" is the BCR's name for the checksum method used by Roland, "6" is the index of the first Address byte.)
So:
$F0 $41 $10 $00 $4F $12 Address Data cks-1 6 $F7

Furthermore, for a BCR button/encoder assigned to a single-byte MC-09 parameter, you can replace Data with "val". So:
$F0 $41 $10 $00 $4F $12 Address val cks-1 6 $F7

So all that remains then is to replace Address with the 4 address bytes of the parameter, as specified in the MC-09's Parameter Address Map.

See section 14.6 of BC MIDI Implementation.pdf for further information on System Exclusive messages defined in BCL.

If you're going to define many buttons/encoders, it might be an idea to create a "SysEx model definition file", as explained in section 19 of the BC Manager Manual. (There's even a section specifically about Roland.)
Initially it's a bit more work, but once you have this file, it is very easy to set up buttons/encoders.

The header of such a file for the MC-09 must be something like:

[MODEL]
ProgramName=BC Manager
ProgramVersion=4.0.0
ManufacturerName=Roland
ManufacturerID=41
ModelName=MC-09
ModelID=00 4F
DevicePosition=BeforeModel
MinDevice=10
MaxDevice=1F
DefaultDevice=10
Command=12
AddressLength=4
AfterData=
ChecksumMethod=1
ChecksumStart=6

After the header, you can add the list of parameters you intend to use, including their addresses and value ranges.

Then you can use the "SYX" button on BC Manager's "Custom output" tab to assign any of the defined MC-09 parameters to any BCR button/encoder.

Let me know if you need further assistance.

   Mark.

Thank you Mark for your reply!!!

I really appreciate your support.


I found that the first 2 bytes should be from the Temporary Pattern and the last 2 from the Synth/Effect Parameter of Roland MI. In the end it worked but with errors)):

1.  Roland show from time to time Error E3 what mean 

The checksum value of a received exclusive message is
incorrect. 

2. Received data from BC arrives with delay

But already it's something!

Roland show from time to time Error E3 what mean 

The checksum value of a received exclusive message is
incorrect. 

That should never happen.

Are you sure that you are sending the correct SysEx messages to the MC-09?
One thing that might be the cause: in the BCR's "custom output" definitions you should make sure that all the bytes specified in hexadecimal format have a "$" prefix. It is very easy to forget one...

To find out what is going wrong, you might try to send test messages from BC Manager's "MIDI System Exclusive messages" window (accessible from the main menu via View -> MIDI -> System Exclusive messges) to the MC-09:
When you press the red "R" on the toolbar in this window, the "Roland System Exclusive message(s)" dialog box opens: this allows you to define correct Roland SysEx messages.

Hope this helps,
   Mark.

Looks like you are right - probably I need to understand more about section 14.6 of BC MIDI Implementation. It is quite difficult to understand when you do it for the first time. The problems with the E03 error went away after I rebooted both the BC and MC devices. I checked the script lines several times and did as you advised and checked through your program in the System Exclusive messges dialog box and did not see anything strange. In the end, I created a patch that works, but sometimes it has an undesirable effect on the sound - it sometimes "stutters". This is especially noticeable when you quickly turn the BC knobs. I tried assigning resolusions as indicated in the Royce Craven manual and it seems to have improved, but I would like more stable work. As an example, if you do not mind, I can post a beta version of my patch - maybe someone will be interested in it!

Thank you very much!

Alex.

In the end, I created a patch that works, but sometimes it has an undesirable effect on the sound - it sometimes "stutters". This is especially noticeable when you quickly turn the BC knobs. I tried assigning resolusions as indicated in the Royce Craven manual and it seems to have improved, but I would like more stable work.

In general it isn't very surprising that the MC-09 can't handle a quick succession of parameter changes via SysEx messages: it needs to process the SysEx messages, and (like all hardware) the device needs some time to adapt its internal setup.

Is the stuttering the same for all parameters, or are certain parameters worse than others? If there are big differences in behavior between parameters, that indicates that the MC-09 struggles more to adapt for certain parameters than others; but if the stuttering is roughly equally bad for all parameters, the problem might simply lie in the time it takes the MC-09 to interpret incoming SysEx messages.

But yes, the only practical solution is to lower the frequency of SysEx messages being sent to the MC-09 by lowering the resolution value(s) of the BCR knob. The BCR allows you to set the resolution as low as you want (even 1 per rotation!), although of course at extremely low values turning a knob becomes cumbersome.

As an example, if you do not mind, I can post a beta version of my patch - maybe someone will be interested in it!

Sure!

  Mark.

I checked everything again - yes - the MC09 starts to stutter when it is overloaded with information. Most often this happens when you start the internal (factory) sequences and quickly turn the knobs on the BC. But if you start external sequences from the other machine, the Roland behaves much more stable, if not ideally for this level of device. All parameters behave equally well if you do not overload the device and equally badly when you feed him too much data. I am very glad that everything worked out and I have posted my script on your site in the B-Control user files section.
Thank you for your support and trust!!!