Giant midi/sysex controller


I’m planning on buying a 80s racksynth (guess which one looking at the mockup) but I would also like to build a MIDI controller to be able to program it live. There are devices like this, but for the asking price of those things they aren’t completely to my liking. So I started researching and had the idea of trying to build one myself.

I can write JavaScript, and it seemed that there are tons of great libraries for me to work with, so I’m confident to be able to figure out how to write the code for the Arduino. I of course found extensive resources for pretty much what I need for, just always on a smaller scale. The only thing I’ve found was a guy making a 45 potentiometer controller with an Arduino Mega and a MuxShieldII.

I’d love some pointers on which Arduino version and which extra boards to get should this is be feasible, what the possible problems are with this kind of project. Two things I can think of are processing power and energy needs. I’d love a smooth running system without any noticable lag and basically ideally have something on par with a retail midi controller. I’d like to purchase the right boards right away and then slowly work my way up - to test most of these things, I only need a few of the components I want to use in the final version. Unfortunately, I know barely anything about the physical side of things, but I am looking forward to learning, once I got the product to play with!

Here’s what I want to go for:

52x potentiometers, maybe a few of them dented
34x momentary switches as possibly led keys
7x 128x64 oled displays
1x 320x128 oled display
10-14x rotary encoders with push function
few control leds and toggle switches
midi in, thru, out
usb port to configure software and possible extension modules (?)
built into 19" rack and hopefully possible to gig with

The values interpreted from the potentiometers and some of the key presses should get translated to either midi or sysex (the synth receives in sysex). Every control module as seen on the picture I’ve uploaded (oscillators etc) have a few extra parameters in menus which should be accessable via either the 12 key keypad or the keys under it and controlled by the encoders (not in mockup yet). I think in the end, if I manage to do everything which I want to, there will be around 15-20 different menu screens.

Some of the functions are simple parameter menu change, comparing original patch (data from synth) to changes made with the controller, freezing notes, arpeggiator, sequencer and other ideas I might get down the line (virtual LFOs etc). Functions of keys might change depending on which menu you are located. The bottom row of 8 keys under the display should have an assignable function if you aren’t located in a submenu. All of this functionality is supposed to be shown on the large display.

The small displays show the currently selected options of the parameters hidden in the menus, and ideally, the oscillators and LFOs show their own wave form (not sure if this is actually possible to display accurately) but the ramps for the envelopes should definitely be displayable from the potentiometer values alone, which for me is also visually the most important one.

Thanks for reading, hopefully replying and happy new year!

Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".

Can you tell us your electronics, programming, arduino, hardware experience?

Ops pic.

Tom... :slight_smile:

Hi Tom,

Thanks for your warm welcome and reply, maybe it will be easier on people to keep it short:
No electronics, hardware or Arduino experience except soldering the circuit for my electric guitar once.
I did code JavaScript with different libraries and frameworks.

What I think I know so far: I will need a lot of analogue ins, so I'll need to use multiplexing. I'm about to order a Teensy 4 board with cables, a small OLED display and a few potentiometers and momentary switches to play around. I've checked several tutorials about doing tree menus and making MIDI controllers with like 8 pots etc. I'm getting a grip to the schematics on the small scale.
What I don't know: Will the amount of inputs be more difficult to implement than what the tutorials showed me, will an Arduino be able to power all this and handle simultaneous changes in values, handle all the different functionality inside the menu etc. and what troubles I should expect trying to complete this project.


Before you order a Teensy 4, keep in mind that you'll need 28 pins with interrupt capability for 14 rotary encoders.

A Teensy 3.6 might be more appropriate in that regard.

(You can write your own encoder code that uses port expanders with interrupt capability, but this is much more tricky than just using the Teensy's pins directly.)


This is a HUGE project.

Start with one pot, one LED. That's going to be your first challenge.

Then maybe the buttons and switches - those can indeed be multiplexed, saves on pins.

You're going to have to deal with a great number of expansion boards. Lots of analog inputs - that may be the main challenge.

OLED displays require quite a bit of RAM, depending on what you're displaying on them. Start with one, see that you can make it do what you want it to do.

So yes, work your way up, but don't expect to be able to buy everything and correctly now! You're bound to make changes to the design in the process, so you better simply start small, get a few of the parts you think you need to get started. Then in a year or two from now, when you have all the individual parts and the MIDI interface itself running, you will know what you really need to complete the project.

Reading buttons and switching on LEDs is easy. Quite some ICs to help you multiplex them and make handling large numbers of them easy.

Reading encoders and pots, not that hard, your main challenge is the sheer quantity of it. Voltage stability becomes an issue for the pots; the number of inputs and interrupts for the encoders.

The displays are another level of difficulty.

The MIDI interface is probably rather straightforward, just a LOT of work.

That leaves what is possibly the biggest part of the operation: the graphic user interface with all your menu items and the keypad, especially if you want this to affect the function of the other inputs.

For added complexity this looks like a project that simply has too many inputs for a single MCU to handle, even with extension boards it will be a huge challenge to connect everything to a single controller.

Thank you for your replies! I jumped the gun and ordered the Teensy 4, but it won't go to waste even if it turns out not to be the right thing for this project in the end - I'm sure I'll put it to good use.

Thanks for your detailed assessment as well wvmarle. Things like stability came to my mind when conceptualizing the idea - no way 64 pots and some more would behave the same way as 8, which is as far most examples shown online go. But to discuss this, I will need to understand the physics behind it and have planned and built my first circuits. I'll get back and report of my results very soon I hope.

A thought I had was also that it would maybe make sense to make it kind of modular - every segment would have its own MCU, with the big display part as the main brain. I will follow up on that thought as soon as I've collected my first experiences.

One of the major problems you may run into with your pots is voltage stability, there is bound to be lots of noise in the system. You'll probably need software hysteresis & averaging of he pot readigns: take a running average of the latest 4, 8 or even 16 readings (that are nice round numbers for a computer, computationally cheap as an average is a bit shift), and/or require at least a certain number of ADC points change before the output is changed. This lowers resolution and reaction a bit, but is probably just fine for your application.

Also in the second case I'd use separate power/ground wires leading to the pots, not shared with encoders and definitely not digital loads such as displays. Those simply add lots of noise.

All in all it's a lot of I/O, so start slowly, build it up bit by bit and do expect some major design overhauls (both software and hardware) along the way.