Hello fellow MIDI enthusiasts!
I recently purchased an Elektron Machinedrum drum machine, with the intent of performing live using it. Coming from the Korg ESX/EMX world, I am very keen to playing with track mutes (i.e. muting/unmuting tracks on the fly).
While the Machinedrum supports this functionality, it has two major disadvantages:
-
Mutes are not ‘directly’ accessible - I need to navigate to a specific menu to access them, and this is pretty annoying.
-
Mutes are not stored as part of a pattern - which is another thing I find to be very convenient for live performances.
Thankfully, the mutes can be controlled via MIDI - so I was thinking, why not build a device that has 16 buttons + LED indicators for each of the Machinedrum’s tracks. While at it, I figured it might be a nice idea to throw some knobs in the mix so I can control more Machinedrum parameters without navigating the menus around. This led to me wanting to create a device that has the following:
-
16 Pushbuttons with LED indicators
-
32 Potentiometers
-
LCD + Rotary Enc + few pushbuttons
-
Device cannot exceed 5.5" x 7" x 1.75" (so that it sits nicely next to the Machinedrum, allowing to mount both in a 19" rack)
That way I get to control the mutes, 2 parameters per track and more advanced functionality (maybe switching modes/shift button/etc) using the LCD/RotEnc interface.
While I am not sure I will manage to fit everything, I decided to give it a shot. The approach I’m thinking of is having 3 PCBs:
-
A PCB with 8 Pushbuttons+LEDs and 16 pots, together with two MCP3208 to read the pots, a shift register to control the button LEDs and a parallel in/serial out sift register to read the buttons. Since there is usually a minimum of 3 or so PCBs when manufacturing (not going to do this at home), I automatically get at least one other PCB, giving me the amount of IOs I want.
-
A PCB with a 20x2 or 40x2 LCD, RotEnc, Pushbuttons, etc
-
A “motherboard” PCB that has ports to connect each of the 3 PCBs (2 IO boards and the LCD control board), has the MIDI sockets, and either an STM32F chip - or preferably a STM4F Discovery board (will this fit?)
What do you think about this architecture/design? I am very open to suggestions ![]()
As first step, I went ahead and designed the IO board. I think I got it right, but I am not 100% sure - I am mostly concerned about the connections between the ADCs, the shift registers and the main board. I am also wondering about how hard would it be to modify the CORE32 code to support this connectivity. I looked at the AINSER64/DIN/DOUT drivers and it seems doable.
Some questions about the design, if anyone here feels like looking into this:
-
I separated the analog part (pots) of the circuit and the digital part (pushbuttons/LEDs) - Is this necessary? Did I get it right?
-
Did I get the ADCs connectivity right? Can I maybe switch to 1 ADC and use some sort of ‘analog bus switch’ to switch between the 2 rows of pots?
-
Can I expect a stable 8-bit reading using this? I am afraid of small value fluctuations sending updates to the Machinedrum, overriding its settings even when I didn’t touch any pots (this would suck badly :/)
-
Does the way I connected the shift regsiters makes sense?
-
Is the board layout acceptable?
-
For people who has the Core32 with the Discovery board - any idea what the maximal height of the two of them together?
-
Is there any chance this would all fit? The board is currently 5x2.5, leaving 2" for the LCD/control board - and very little for enclosure mechanics (which I don’t even know how to approach at the moment…)
I have attached pictures of the board and schematic. Eagle files are currently in my junk repository at https://github.com/eranrund/blinky-pants/tree/master/eagle/mutebox
As a side note, I intend to make everything open-source and sell spare PCBs I get while making this, if this is of any interest to someone. I can see other uses to this specific controller, the most interesting one being a 16-step sequencer.
Thanks for your time!
[mutebox.pdf](< base_url >/applications/core/interface/file/attachment.php?id=11631)


