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:
1) Mutes are not 'directly' accessible - I need to navigate to a specific menu to access them, and this is pretty annoying.
2) 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:
1) 16 Pushbuttons with LED indicators
2) 32 Potentiometers
3) LCD + Rotary Enc + few pushbuttons
4) 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:
1) 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.
2) A PCB with a 20x2 or 40x2 LCD, RotEnc, Pushbuttons, etc
3) 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 :smile:
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:
1) I separated the analog part (pots) of the circuit and the digital part (pushbuttons/LEDs) - Is this necessary? Did I get it right?
2) 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?
3) 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 :/)
4) Does the way I connected the shift regsiters makes sense?
5) Is the board layout acceptable?
6) For people who has the Core32 with the Discovery board - any idea what the maximal height of the two of them together?
7) 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