Ok, so I was trapped in quarantine, and thought I’d build a controller for a random person. The request was simple- 4 switches sending CC commands.

Here is the plan:

 

 

 

 

 

 

 

 

So, this is easy. Partslist here- total is about $40 with shipping:

Main Board- Ardruino NANO EVERY $11.00 –I burnt out a couple of the $5 knock-offs I was using, so I switched to the name-brand board for a bit. I think the knock-offs would be fine, though.. so a NANO clone would work here. It is probably overkill, but meh.

Enclosure $7.90

Switches 4x$2.09 $8.36

LED $1.15

power jack $0.75 (note- I dont love this jack. )

fancy nuts 4x$0.82 $3.28 (cheap bling)

Midi Jack $1.50 

–you also need a 220 OHM resistor, which costs $0.06, but you have to buy 100 🙂

 

So- the enclosure is a little tight for 4 switches, so I went with an offset Layout;

 

 

 

 

 

 

 

 

 

Drilling was easy. I am please with these step bits.:

  

Comes out nice and clean. Test fit everything and its good. The power jack and the switch were ~almost~ too close. I got lucky.

So then it’s just soldering it up:

How did I wire it? I used a common ground all around the switches, and ran ONE groundwire from a switch  to the board

POWER JACK:

Negative tip to go with BOSS wiring. Positive to VIN, negative to Ground on board

Typical MIDI wiring:

TX–>220 Ohm Resistor –> PIN 5

5v from NANO board–> PIN 4

Ground to PIN 2

This image is helpful, though it doesn’t have the ground:

The LED is pre-resistored, so I just ran red to the 3.3V output. I think LED’s are too bright generally, but 5V would work too. Ground to Ground.

 

And the switches I wired to pins 4, 6, 8, and 10. This board can support 12 switches on the digital pins alone, so it is a good board for these projects. It also has a flat backside, so once it was wired and tested, I stuck it to the case with double-sided tape.

Final look? Looks great. The fancy nuts give it some bling.

The code is below. I used the Arduino IDE for this, with Peiter P’s great library:

https://github.com/tttapa/Control-Surface

and a dependency library:

https://github.com/PaulStoffregen/Encoder

Notably, the encoder library failed if I used the IDE repository version- I needed to manually install the latest from github.

Finally, here is the code.

I used my previously documented code for this.. stripped down for these 4 switches only. All MIDI CC on Channel 1

//midi.controller for eventide H9
 //by Cameron Newell @the.nw.enterprise, https://thenorthwestenterprise.com/
 //Library Source https://github.com/tttapa/Control-Surface
 //Built for Ardruino NANO EVERY

#include <Control_Surface.h> // Include the library

// Instantiate a MIDI interface
 USBDebugMIDI_Interface usbmidi(115200); // for serial monitor in ide
 //HardwareSerialMIDI_Interface serialmidi = {Serial1, MIDI_BAUD}; //for normal operation

/*Hotswitch or other cc function
 Will fire 127 on press and 0 on release. Use a momentary switch, like the others.
 Assign CC number from here:
 https://tttapa.github.io/Control-Surface-doc/Doxygen/d4/dbe/namespaceMIDI__CC.html
 https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2
 For reference {PHYSICALPIN, {MIDI_CC::NAMEOFCC#, CHANNEL_1},{ VALUEWHNPUSHED, VALUEWHENRELEASED }};
 */

 CCButton button10 = {10, {MIDI_CC::General_Purpose_Controller_1, CHANNEL_1},}; //Hotswitch RIGHT front CC#16
 CCButton button08 = {8, {MIDI_CC::General_Purpose_Controller_2, CHANNEL_1},}; //Decrement Left Rear CC#17
 CCButton button06 = {6, {MIDI_CC::General_Purpose_Controller_3, CHANNEL_1},}; //Increment Right Rear CC#18
 CCButton button04 = {4, {MIDI_CC::General_Purpose_Controller_4, CHANNEL_1},}; //Toggle Bypass LEFT Front CC#19

void setup() {
 Control_Surface.begin(); // Initialize Control Surface
 }

void loop() {
 Control_Surface.loop(); // Update the Control Surface
 }

One Last Glam Shot