Roland MC-505

Hey everyone, I got a E1 Mk1 that I would really love to use to control the synth and FX parameters of my Roland MC-505 groovebox.
The biggest problem is, I don’t really know where or how to begin.
For example, how do I structure the preset? The 505 has 7 Synth (midi channel 1-7) parts and one Rhythm part (midi channel 10). I would like to have parameters for one synth part spread over several pages, changing the midi channel according to the selected Synth part. But I am not even sure if that’s possible, or if it is even the best approach to this.
Other questions then follow, like how do I set up the E1 preset, so that it receives the parameters for one or all the channels when loading it up? I tried to find answers in the documentation, but couldn’t bfore my adhd brain got distracted and switched to a different task.
I did even ask ChatGPT if it could help me write a preset file for the E1, but unfortunately it said there’s Lua scripting necessary, which it does not support yet.

Now I have a little above basic knowledge of Midi, but not so much with SysEx. So far it’s fairly confusing, but for what it’s worth I don’t feel completely lost.
I know I should read up on SysEx and Midi in general to get a better idea and understanding how to use both machines together, and I’d love to do that, but I don’t really want to wait several years before I get to that point - so I thought maybe the community can help and guide me through this process? (not asking for anyone to do the work, just for answers and tipps)
Any help is very much appreciated!

Edit: I found this MC-505 Manual with Midi implementation chart, which is fully OCR’d, in case anyone want’s to have a look.

Start simple, and concentrate first on the MIDI implementation on page 249. Check the part with the MIDI CC’s and try building controls for them (see screenshot). See where this brings you.
The easiest way it to make a control in the E1 per channel and per CC you want to control. You do this by defining 8 devices in your preset, each with their own MIDI channel), then assign each control you design to one of these 8 devices.

Forget about SysEx for now. Roland made it quite extensive in those days. You’ll need to have expereince with building presets first, before you emark on lua , patch parsing or SysEx.

I have a Roland Fantom-X and a Roland XV5080 from those years, and haven’t even touched their SysEx yet, as it is, together with the Yamaha SY77 , one of the most complex Sysex implementations out there.

1 Like

The ChatGPT is a great (and scary) thing. I use it a lot as kind of support tool. My experience, however, is that it often “invents” stuff that does not exist. So, when one gets an answer from ChatGPT and has some understanding of the domain to see the obvious mistakes, it is possible to iterate to better answers. If the mistakes cannot be recognized, the answers might be rather misleading sometimes. Maybe It is just my personal experience…

1 Like

Thank you for your reply and your help getting started, @NewIgnis
I will start, as you suggested, with the Midi CCs. The advice to structure the preset, with 8 devices in my preset and assigning one Midi Channel each is very valuable. I’ll try that and see how far I’ll get.
I thought I’d need Sysex at some point, because the CCs of the 505 are somewhat limited, but maybe I was wrong about that. Also didn’t know that Sysex can be that difficult and complex.

Just one more question, do I need to set the preset of the E1 up in a certain way for bidirectional change of parameters? I’m wondering, do I need to do anything special for the E1 to get the parameters of the MC-505 and for the parameters to be synced between both devices?

That’s very true and thus far also my experience with ChatGPT. However, it can also provide some pretty good starting points sometimes - nothing perfect, but definitely something worth being tweaked to make it work.
My experience is limited to ChatGPT3.5 though, I haven’t interacted with GPT4, so I don’t know if that improves on this. Would be pretty sweet, if the AI could eventually help create presets for the E1 though :wink:

usually 3 things to check:

  • the MIDI OUT of the E1 must reach the MIDI IN of the MC-505
  • the MIDI OUT of the MC-505 must reach the MIDI IN of the E1
  • sometimes it’s necessary to configure a synth to transmit its MIDI CC messages to the outside world, and enble the synth to listen to the MIDI to receive MIDI CC messages. Ensure both are enabled

You may need SysEx at a certain point, but if you’re new to it, it’s not where one should start.

Thank you! I realize where my communication can use a bit more precision.

So, yesterday I sat down and built a preset with the Midi CC messages available. It was an excellent learning experience, that taught me a couple of things and raised a bunch more questions.

Firstly, the connection between the machines is not an issue, the preset works pretty well, first try. However, my previous question got a bit more clear in the process. Is it possible that the E1 “reads” the values of the MC-505? Right now, the values on the E1 are at 0 (or the set default value) and start reflecting the value on the MC-505 only after I turned the associated value knob on the E1. But it would be awesome if the E1 could “collect” the values from the MC-505 when connecting/starting to avoid any parameter jumps.

Also, another issue is the overall structure of the preset, at least it became clearer to me, while creating the preset. Channel 1-7 on the MC-505 are identical - meaning, they should have the same exact controls, just with different channels. Not sure if that’s possible, but it would be fantastic, if I could select a channel either on the MC-505 or the E1 and the controls on the E1 correspond to that channel but not to the others.
I tried your suggestion, @NewIgnis and looked into devices on the E1, but I’m not sure, from my understanding, if it’s possible to achieve what I’d like that way. The way I understand the feature, you can assign a parameter in the preset to only one of the defined devices. This is at least my understanding from what I’ve read last night, but I might’ve missed some important bits.

I also understood that eventually I’ll have to dive into Sysex to really gain control over all the Synth engine parameters of the MC-505, that are hidden from the CC’s, but you’re right, that wouldn’t have been the best way to get started.

That’s a lot of layers of complexity you want to reach in one go :slight_smile:

Step by step. Were you able the send out CC messages from the groovebox and have the E1 respond?

The rest you ask is all possible but it’s one of the most complex machines you have there. so take it step by step. Most other synths of that era are simpler to start with!

I suggest you first try mode 2 with the cc messages of page 233 of the manual.

First of all, I really appreciate the time you take and all your advice. It’s very helpful. Thank you!

The E1 does respond to CC messages from the MC-505, yes. :slight_smile: It just doesn’t get the values before that.

And I did switch to mode 2 on the MC-505, since that supports more CC messages.

I know it’s not an easy machine to start with. And as weird as it sounds, I didn’t choose it, it chose me :roll_eyes: :wink:
I would love to take it easier and start with a different, less complex machine. However, I happen to use the MC-505 as the main sound source in my current setup (live-streaming on twitch twice a week and VoD on YouTube (if self-promotion is not welcome here, I’ll happily delete the links)).
I grew to really like the MC-505 despite all its quirks and shortcomings, and enjoy making music with it. Just the User Interface is painfully limited and the “many functions per knob” strategy leads to value jumps, no matter how hard I try to avoid them, which can disrupt the flow of the music.
So the E1 is a bit of a savior device, and I’m happy to dive deeper into its complexity, if I can make working with the MC-505 a little less painful and bring more of its potential to the surface. I’m willing to pay that price :wink:

1 Like

Now let’s see if you can make all controls on the E1 change MIDI channel at once.

For this you work with only one device in the preset, but you will need to add a control ‘Part Select’ to your preset that runs a function in lua. You could call this function ‘setChannel’ for instance. The control must allow you to select values that correspond to the MIDI channels you aim to control.

Imagine the device you use is the first one.Then at the start of the lua, foresee a command saying:

currentDevice= devices.get(1)

The function ‘setChannel’ must then be assigned to the control ‘Part Select’ and must look like:

function setChannel(valueObject, value) 
  currentDevice:setChannel (value)

If you can make that work, it’ll make all your CC controls, which are assigned to device 1 (and that has been assigned to ‘currentDevice’), change to the selected MIDI channel.

If you want some inspiration, go look for the “Part Select MIDI” control in my preset for Novation Summit

If you manage to tmake that work, we’ll proceed to the next step

Well, I got it working, although with a little issue.
First, I set it up as you described, assigning the parts 1-7 to the values 1-7, and Part R to value 10 - corresponding to the Midi channels of the MC505.
However this kinda worked and kinda didn’t. Part 1 on the E1 controlled Part 1 of the MC505, but Part 2 of the E1 also controlled Part 1 on the MC505. From there it was continuous, Part 3(E1) controlled Part 2(MC505), Part 4 controlled Part 3, etc. Part R didn’t respond at all.
I then experimented with adding different values and changing the order around a bit. Assigning the value with a +1 to the corresponding Parts on the MC505 did work, apart from Part R. I got Part R working as well, by assigning it to value 11 and leaving values 1, 9 and 10 in the control “Part Select” of the E1. The value list of the control “Part Select” now looks like this:

If I remove any of the ‘blank’ values, Part R won’t respond. Now I’m happy I got it working, but confused as to why it works the way it does.

It’s because the value in the function is numbered 0 to 11 in your example, which is the sequence number in the option list. You can solve that with some conditions in the lua code: add a 1 to each value, except when the value is 7 then make the value 10.

Hmm, I feel like I’m not doing it quite right.
So the values starting at 0, not at 1, makes sense to me. I do have a little bit of experience working with Arduino and Max for Live and did come across this, but didn’t think of it. Haven’t been in this mindset for a while.

After some playing around, I also got the conditions working, although there’s almost definitely more elegant ways to do it.


However, one thing continues to confuse me. In the option list, I still need to include “blank” entries 8 and 9. If I take them out of the list, Part R doesn’t respond at all. If I include them, it works just fine.

To be honest, this is confusing, but I’m actually not too bothered by it - at least when using the MC505 with the E1, this is not a big issue. Not sure if it could cause issues further down the line though, and should be sorted out before continuing.

1 Like

Just edit the list and make the next entry after 7 to be Part R and assign the value 10 to it.

The list values do not have to be sequential.

I’ve just completed a preset for A station . I suggest you copy it.
Because I will now add SysEx parsing to it. Once you habe both versions, this will provide you an example on how to add Sysex to an existing preset.

Also check the info on the Se-02 preset that was posted today. Here the approach was different: the values were first aligned with the SysEx values and afterwards converted in real time to comply to CC needs.
In the Novation A-station I don’t know yet what direction I will take, but I’ll try to keep close to CC values.

For the MC505 the same uncertainty is currently a fact as well!

1 Like

That was what I was thinking, and I did exactly that, but then Part R (10) didn’t respond. Only if I leave the items with the numbers 8 and 9 (what I called ‘blank’ entries) in the list, it does work. And that is exactly what confuses me.

I can’t look at it during the day, but when I get home I can look at the preset you created.
I think I know why things are happening, but I want to look at the actual preset to be sure.

Either post the link here or send it via DM and I’ll give it a look later today.

I’ll check the mentioned presets out and see what I can learn from them and how they’ll develop over time. Thanks!

One thing, I’m wondering at the moment: how difficult is it to make the preset I have now to get the parameter values from the MC-505 into the E1? I understand that the original idea to include all kinds of sysex parameters will take time (probably a lot). The preset I have now could still be useful to me in the meantime, if there would be a way to get the parameters from the MC-505 into the E1, to avoid value jumps when turning a dial for the first time, which can drastically change the sound and interfere with the creative flow.

I’m thinking about creating a temporary preset for the MC-505 with all CC controls for one channel per page, to avoid mixing up the values for all channels. This isn’t ideal and surely there’s better ways to do this, but it could work as a temporary solution and mean that my E1 actually gets used to help, instead of it collecting dust until I worked out the full preset.
A pointer in the right direction would be much appreciated!

Edit: Since I haven’t looked into the mentioned presets, it’s possible that the feature I’d like in included in them. In that case, just point me towards that and I’ll figure it out. Thanks!

Oh that would be fantastic, thank you so much!
Here’s the link to the preset. I kept it a private preset for now, so I’m not sure if sharing the link works…

yes, that does work. I can copy it to my presets and play with it without bothering your original version.

I’ve sent links of my problems to Martin many times. lol