Completed MKS-50 MIDI controller/programmer

Status
Not open for further replies.

loveaurell

Well-known member
Hi, just wanted to share this project that I completed a while ago. This is my first Teensy based project and I've only completed a couple of preprinted DIY eurorack modules before so I'm quite happy with how it turned out :)

It's a MIDI controller for the Roland MKS-50. The synthesizer has very limited controlling abilities out of the box and depends on having an external programmer like the PG-300 to use it beyond its presets. Since it's quite old, 1987 it uses its own sysex implementation instead of ordinary cc messages for most of it's parameters, so I decided to make my own implementation.

Say hello to the TC-300!
Live demo here: https://youtu.be/3QjlO-yeFrc
Source code: https://bitbucket.org/loveaurell/roland-alpha-juno-mks-50-midi-controller
Schematics:
https://bitbucket.org/loveaurell/ro...tics for MKS50-MIDI-controller.png?at=default


2016-02-27 12.20.46-2.jpg2016-02-15 18.47.25-2.jpg2016-02-26 09.58.11.jpg2016-02-26 09.59.09.jpg2016-02-17 21.33.07.jpg2016-02-17 21.36.17-2.jpg2016-02-13 11.24.14.jpg2016-02-13 11.24.48.jpg2016-02-13 11.25.25.jpg

It has 46 knobs and switches to provide control over all the parameters you are likely to use. Here's a list of what you can control:

LFO:
Rate & delay

DCO:
Transpose (-12 - +12)
Octave (4', 8', 16', 32')
Finetune

Pulse wave (3 waveforms)
Saw wave (5 waveforms)
Sub wave (5 waveforms)
PWM rate & width (a LED is indicating if a pulse or saw waveform that supports PWM is chosen).
Noise level (4 steps)
Sub level (4 steps)

Envelope mode
Envelope modulation amount
Aftertouch modulation amount
LFO modulation amount

VCA:
Level
Envelope mode
Aftertouch modulation amount

VCF:
Cutoff
Resonance
Highpass (4 steps)
Key follow amount

Envelope mode
Envelope modulation amount
Aftertouch modulation amount
LFO modulation amount

ENVELOPE:
7 parameters/stages
Key follow amount

GLIDE:
Time & ON/OFF

CHORUS:
Rate/depth & ON/OFF

MASTER:
Volume
Bend range (1-12)
Poly/mono switch
Send control state button (Dumps all the controls physical positions to the MKS-50)

MOD ASSIGN:
Two buttons for assigning the mod wheel or control pedal to any of the potentiometers/rotary switch on the controller. This is not supported on the MKS-50 itself. It's fun to play around with, especially when assigning it to the octave switch parameter :)

When designing the panel, I took inspiration from the Roland Juno synths. I also like colour coding of the knobs indicating what function they have (LFO & envelope). Together with the distinct sections and the large envelope sketch, I think I managed to make the interface very intuitive.

The panel design was sent to Takachi Enclosure for inkjet printing and punch pressing on one their aluminum cases.

Here's some info about the MKS-50 and a sound demo (not made by me):
http://www.vintagesynth.com/roland/mks50.php
https://www.youtube.com/watch?v=uiCgFoZIH7w
 
Last edited:
That is super awesome. a real inspiration. did you use mux chips? I only see one teensy and a few suspicious chips on your board. Will you be publishing the code? A 'full' implementation of a groovy old synth will be prized by the old new school, I am sure. Just awesome. MKS-50 is pretty respected even today. I've got a roland sonic cell to play with at home (man that thing is complicated ...I just tweak a few presets to be honest ... menu divingf doesn't start to describe the sonic cell), and an old roland master keyboard. Never thought to make a sonic cell-specific midi controller ... I wonder ............................. nah! I'm going to get an MKS 50 now!!
 
Thank you!

I'm using five 74HCT4051, for the analog inputs. The seven digital inputs are connected directly to their own pins. I would like to publish the code, but I think it needs some refactoring and commenting first. It's my first time approaching c++ so it's a little bit messy :) But I will try to make some rough restructuring and then publish it.
 
super. i will watch it when i have some time. thanks.

if the code works, the code works!! the effort is in the implementation / mapping I'm guessing. Other people will be able to hack it, and be thankful ....

anyway, looking forward to a listen / watch
 
Last edited:
@Paul Thank you! I did my best. I will really consider designing a separate pcb for the controls next time :)

@adrian I promise I'll post the code as soon as I get the MKS-50 back from service. I need to check if the current revision still works, since I've made some changes since I've made a couple of changes since the last time I tested the code.
 
Last edited:
@adrian I've put a link to the source code at the bottom of my original post. I've added some comments and removed some unused stuff. I hope it's readable :)
 
Thankyou so much for taking time to post. its an impressive project aesthetically and technically. just a great job. I'm short of time at the moment, but I'm looking forward to reading your code. I'm already on the lookout for an mks-50! There are a couple on ebay, but nothing in NZ...and learning from your code will be great for my own controller project. thanks again.
 
Hello Loveaurell,

Great project and awesome casing.
I took a look at the source code and I was wondering how you found out about the poly/chord/mono modes.
I'm having trouble controlling that aspect of my MKS-50 with any controller (ex. Ctrlr) or with raw sysex data.
The synth receives the data and the change is even visible if I go into the menu and check the value, but the behaviour stays the same.
If it was in chord memory mode and I switch it to poly with sysex, check the menu and it's "poly" there, but still the chords are playing.

Does the MKS have different software revisions or OS updates?

Thanks
 
Hi!

If it actually changes on the MKS-50 screen then I don't know. I looked at Ctrlr when adding the Poly/Mono switch, which means that (as you probably already know) instead of "real" monophonic I switch to chord mode and use the first setting, which is all notes at the same pitch played at once. The mono mode on MKS-50 is for use with a guitar and assigning one voice to each string.

I doubt the os/firmware is updatable. Have you tried to do a factory reset?
 
Last edited:
Thank you, NotoYota. It was designed in Adobe Illustrator and sent to Takachi Enclosure in Japan for printing and punch pressing on one of their aluminum enclosures.

The .ai-files and other docs are available in the project repo, linked in my first post.
 
Hello, your controller is brilliant. I'm attempting to build from your excellent shared resources. Thank you for that.
May I ask: how did you get Takachi to punch and print your enclosure? I keep getting brick walled.
 
Hello, your controller is brilliant. I'm attempting to build from your excellent shared resources. Thank you for that.
May I ask: how did you get Takachi to punch and print your enclosure? I keep getting brick walled.

Hi, I'm happy to hear that you are about to build an MKS-50 controller based on mine!

That does not sound like Takachi at all. My contact, Jelvin Lim was very helpful and helped me to provide them with every detail they needed.

Can you tell me a bit more about your experience with them? Do they respond at all?

Also, I've updated my code, so make sure you update to the latest version!
 
Thank you for the quick response!

I emailed them direct (sales@takachi-el.co.jp) and they forwarded my email with no response to their distributor for my region (CamdenBoss, UK); who, in turn, directed me to another distributor (Azcon CSL), stating they couldn't produce a single hobby enclosure.

Would it be possible for me to send an email to Jelvin, quoting this project? A good quality enclosure is essential; if I had to make my own, it would look terrible >.<
 
Thank you for the quick response!

I emailed them direct (sales@takachi-el.co.jp) and they forwarded my email with no response to their distributor for my region (CamdenBoss, UK); who, in turn, directed me to another distributor (Azcon CSL), stating they couldn't produce a single hobby enclosure.

Would it be possible for me to send an email to Jelvin, quoting this project? A good quality enclosure is essential; if I had to make my own, it would look terrible >.<

Ah, I see. Maybe they have changed policy or I was lucky. But sure, feel free to reference my project. I will PM you Jelvin's email address.
 
Just wanted to share the new demo song I made for the Roland MKS-50 and my controller.
No eq or other effects were added post recording. Just some compression on the master.

Enjoy!

 
Status
Not open for further replies.
Back
Top