- Eventide Audio

Home Forums Products Stompboxes Cheap DIY Midi Controller Reply To: Cheap DIY Midi Controller

#155492
camn
Participant

ok people. cleanest codeset yet. 

Incluses a spot for an expression pedal (or multiples) as well as a VOLUME BOOST with an LED toggling it’s state. This might break with a Preset switch, but will reset if you hit it a couple times.

Lets see if I can get it to paste correctly. If not, download here:

http://thenorthwestenterprise.com/files/Expanded_Published.ino

 

//midi.controller for eventide H9

//by Cameron Newell @the.nw.enterprise, http://thenorthwestenterprise.com/

//Built for Ardruino NANO EVERY

 

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

 

// Instantiate a MIDI interface

USBDebugMIDI_Interface usbmidi(115200); // uncomment this for serial monitor in ide

//HardwareSerialMIDI_Interface serialmidi = {Serial1, MIDI_BAUD}; //uncomment this for 5-pin operation- this sends on TX **may need to rename Serial1 vs Serial

//USBMIDI_Interface midi; // uncomment for native MIDI over USB

//HairlessMIDI_Interface hair (); // uncomment this for Hairless

 

/* Instantiate PCButtons that read the inputs from a push button and sends out a MIDI Program Change message when they are pressed.

Ex: =   {**PHYSICALPIN**, {**PCHEXVALUE**, CHANNEL_#},}; 

This setup matches PC to PIN Number

*/

PCButton pcBtn2 = {2, {0x02, CHANNEL_1},};  //PC#2

PCButton pcBtn3 = {3, {0x03, CHANNEL_1},};  //PC#3

PCButton pcBtn4 = {4, {0x04, CHANNEL_1},};  //PC#4

PCButton pcBtn5 = {5, {0x05, CHANNEL_1},};  //PC#5

PCButton pcBtn6 = {6, {0x06, CHANNEL_1},};  //PC#6

PCButton pcBtn7 = {7, {0x07, CHANNEL_1},};  //PC#7

 

/*Hotswitch or other cc function will fire 127 on press and 0 on release by default. This is overridable. Use a momentary switch, like the others.

Assicn CC number from here, precede HEX with 0x

Ex: = {PHYSICALPIN, {**CCHEXVAL**, CHANNEL_#},{ VALUEWHNPUSHED, VALUEWHENRELEASED }};

*/

CCButton button08 = {8,  {0x10, CHANNEL_1},};  // CC#16

CCButton button09 = {9,  {0x11, CHANNEL_1},};  // CC#17

CCButton button10 = {10, {0x12, CHANNEL_1},};  // CC#18

CCButton button11 = {11, {0x13, CHANNEL_1},};  // CC#19

 

/* Instantiate a latched push button that sends MIDI CC messages for a BOOST function

This still uses a momentary physical switch. Assign to Volume in H9 control

Default values overriden. Adjust to boost strength preference

 */

CCButtonLatched boost = {12, {0x07, CHANNEL_1},{ 127, 80 }};  // CC#7 – VOLUME BOOST

const pin_t BoostLed= {13};  // The LED to display the state of the boost button.

 

/* Instantiate an analog input for an Expression pedal

This ia an analog POT with 5v, Ground and Signal. **may jitter**

 */

CCPotentiometer potentiometer = {A0, {0x0B, CHANNEL_1},}; // CC#11, pot wired to pin A0

 

void setup() {

Control_Surface.begin(); // Initialize main Control Surface code

pinMode(13, OUTPUT);  // assign Led pin as output pin

}

 

void loop() {

Control_Surface.loop(); // Update the main Control Surface

digitalWrite(BoostLed, boost.getState() ? HIGH : LOW); // Update the LED state to reflect the toggled switch state. Match name of led to name of button

}