Jump to content

Elektron Machinedrum Mute Controller


keves
 Share

Recommended Posts

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

post-6757-0-06428200-1414971078_thumb.pn

Edited by keves
Link to comment
Share on other sites

Can you point me to the datasheet of device U$29/47. They are unknown by me...

And google doesn't help...

The connectors look a bit strange to me.

It should be possibul to connect just through J8/9 on the core to "in" and "out" shiftregisters with just 10pin IDC Headers...

You may have a look in to the schematics of DIN and DOUT.

Best Regards

Novski

Link to comment
Share on other sites

Hello Novski,

 

Thank you for taking the time to look at this. U$29/47 are MCP3208 - same ADC as used in the AINSER64 module. Datasheet is available here:

http://ww1.microchip.com/downloads/en/DeviceDoc/21298c.pdf

 

Re conenctors for DIN/DOUT through J8/J9 - I realize that is possible, however I want to connect both on a single connector. I am also thinking about merging the two connectors I already have on the board (JP1/JP4) into one, but not sure I'll manage to route all the traces if I do that.

 

Thanks again!

Link to comment
Share on other sites

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.

 

Maybe I haven't recognized a certain detail, but I don't see the need to modify MIOS32 code or any driver.

Just use the MIDIbox NG app and you can even use this hardware with an existing firmware without modification.

 

However, please note that the LEDs and buttons are connected in the wrong order.

The leftmost LED (B_LED_1) has to be connected to 74HC595 QH7, the next to QH6, etc...

The leftmost button (B_PB1) has to be connected to 74HC165 A, the next to B, etc...

 

In other words: when you compare with the MBHP_DINX4/DOUTX4 schematics, the LEDs are connected from D7, D6, D5, ... and buttons are connected from D0, D1, D2, ...

 

 

1) I separated the analog part (pots) of the circuit and the digital part (pushbuttons/LEDs) - Is this necessary? Did I get it right?

 

yes, this was a good idea.

But I'm missing the 10 Ohm resistor between digital and analog ground: http://www.ucapps.de/mbhp/mbhp_ainser8.pdf

 

 

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?

 

Bad idea, use two ADCs for best results.

 

 

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 :/)

 

Shouldn't happen with the 10 Ohm resistor which acts as some kind of filter.

As you can see here I even provide a jitter monitor to check this: http://www.ucapps.de/mbhp_ainser8.html

And the conversion results are very stable, especially when we consider that for your MIDI devices only 7bit are required, and values are jittering at +/- 3 at 12bit resolution ;-)

 

 

Re conenctors for DIN/DOUT through J8/J9 - I realize that is possible, however I want to connect both on a single connector. I am also thinking about merging the two connectors I already have on the board (JP1/JP4) into one, but not sure I'll manage to route all the traces if I do that.

 

As long as you keep both SPI interfaces (and don't try to handle SRs and AINSERs via a single SPI) it will work without firmware changes.

 

For the SRIO chain 4 signals are required: SO, SI, SC and RC1 (RC2 isn't required, it's just a duplicated RC1)

For the AINSER8 chain 5 signals are required: SO, SI, SC, RC1 and RC2

+ 5V and Ground makes 11 pins

 

However, it's your own decision if you select an incompatible Jxx pinout for your project, or if you take a compatible one and open the possibility for other people to re-use your PCB with a common MBHP_CORE_STM32F4 module.

 

 

Just another hint: with MIDIbox NG it would be possible to scan the buttons and LEDs from J10A and J10B instead of using shift registers.

 

This would result into one additional connector, but it would save two SRs

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Maybe I haven't recognized a certain detail, but I don't see the need to modify MIOS32 code or any driver.

Just use the MIDIbox NG app and you can even use this hardware with an existing firmware without modification.

My mistake - I wasn't sure there would actually be a need to modify anything.

 

However, please note that the LEDs and buttons are connected in the wrong order.

The leftmost LED (B_LED_1) has to be connected to 74HC595 QH7, the next to QH6, etc...

The leftmost button (B_PB1) has to be connected to 74HC165 A, the next to B, etc...

Due to my cramped board layout (or lack of layout skills...) my LEDs/buttons are already in a messed up order that made routing easier...

 

In other words: when you compare with the MBHP_DINX4/DOUTX4 schematics, the LEDs are connected from D7, D6, D5, ... and buttons are connected from D0, D1, D2, ...

 

 

 

yes, this was a good idea.

But I'm missing the 10 Ohm resistor between digital and analog ground: http://www.ucapps.de/mbhp/mbhp_ainser8.pdf

Thanks for the catch! Will add one.

 

Bad idea, use two ADCs for best results.

Okay, staying with 2.

 

Shouldn't happen with the 10 Ohm resistor which acts as some kind of filter.

As you can see here I even provide a jitter monitor to check this: http://www.ucapps.de/mbhp_ainser8.html

And the conversion results are very stable, especially when we consider that for your MIDI devices only 7bit are required, and values are jittering at +/- 3 at 12bit resolution ;-)

Sweet :)

 

As long as you keep both SPI interfaces (and don't try to handle SRs and AINSERs via a single SPI) it will work without firmware changes.

 

For the SRIO chain 4 signals are required: SO, SI, SC and RC1 (RC2 isn't required, it's just a duplicated RC1)

For the AINSER8 chain 5 signals are required: SO, SI, SC, RC1 and RC2

+ 5V and Ground makes 11 pins

 

However, it's your own decision if you select an incompatible Jxx pinout for your project, or if you take a compatible one and open the possibility for other people to re-use your PCB with a common MBHP_CORE_STM32F4 module.

I'll revisit the AINSER8 and DIN/DOUT schematics, and try to adapt my pinout to the standard ones. It is my interest to make this reusable by other people.

 

Just another hint: with MIDIbox NG it would be possible to scan the buttons and LEDs from J10A and J10B instead of using shift registers.

That wouldn't work in my case since I plan on having 2 of these boards connected to my core module.

 

This would result into one additional connector, but it would save two SRs

 

Best Regards, Thorsten.

 

Thanks for the detailed reply! I'll post back once I make the connector adjustments, and if everything seems correct I'll get on with the main board design. I still have to figure out if this is all going to fit given the physical size limits...

Link to comment
Share on other sites

No worries :)

I contemplated between encoders and pots, and opted for pots mostly due to the fact I like seeing where the knob is currently set at.

Led rings + encoders would've been way better of course, but that would make the whole thing way too complicated for my skillset :(

Link to comment
Share on other sites

  • 1 month later...

Made some good progress :smile:

10420023_10152857369055071_3144345444809

 

So far I tested this UI module (combination of DIN/DOUT/AINSER) - it works! However the main board support two such modules, and the second one would not work because I mistakenly confused RC(RCLK) signals to be chip selects. New revision would allow to chain the shift registers on the modules by providing a header with the outputs of the DIN/OUT registers that would go back to the main board, and on to the 2nd module. A bit of an inelegant hack, but should work. Haven't tested MIDI ports or LCD yet.

Edited by keves
Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...