BIAS Guitar Mini head and DIY MIDI footswitch (Arduino Uno)
-
Greetings All,
I built an Arduino Uno powered DIY 6-button footswitch. I can monitor the MIDI PC commands that are sent when the buttons are pushed (via USB with MIDI Monitor software on Mac OS X):
The numbers in the "Data" column correspond to the PC numbers already present on the head. Note that I'm sending on channel 1 which the head expects as well.
That said, when I plug the device into the MIDI "IN" port with a 5-pin DIN-to-3.5mm cable and power on both devices, the head does not respond in any fashion?
I'm at a dead stop with this project as I'm not finding any other support documentation on this topic.
In the event there are any Arduino "Pros" on here, here's is my code:
#include <MIDI.h> #include "Controller.h" /* * Midi Footswitch - BIAS Mini Guitar Amp Head * 6 switches + 6 LEDs * 3 clean amp models - 3 dirty amp models * @version 0.1 * @created 2021-08-15 * @updated 2021-10-11 */ MIDI_CREATE_DEFAULT_INSTANCE(); // Declare LEDs int _INPUTS = 6; int LEDS[] = { A0, A1, A2, A3, A4, A5 }; /* * Declare buttons * --------------------------------------------------------- * param 1 = pin * param 2 = command (0 = midi note, 1 = CC msg, 2 = toggle) * param 3 = note number * param 4 = channel * param 5 = debounce time (milliseconds) */ // CLEAN _____________________ Button BTN_1(2, 1, 8, 0, 5); Button BTN_2(3, 1, 10, 0, 5); Button BTN_3(4, 1, 15, 0, 5); // DIRTY _____________________ Button BTN_4(5, 1, 1, 0, 5); Button BTN_5(6, 1, 2, 0, 5); Button BTN_6(7, 1, 4, 0, 5); Button *BUTTONS[] = { &BTN_1, &BTN_2, &BTN_3, &BTN_4, &BTN_5, &BTN_6 }; byte sendChan = 1; byte currChan = 0; void setup() { MIDI.begin(); // Set Serial baud rate: Serial.begin(31250); // 9600 // Set pin modes for (byte i = 0; i < _INPUTS; i++) pinMode( LEDS[i], OUTPUT ); for (byte i = 2; i < _INPUTS + 2; i++) pinMode( i, INPUT_PULLUP ); _LED_ON(0); MIDI.sendProgramChange(8, sendChan); delay(100); } void loop() { //buttonsListener(); // Cycle through Button array for (int i = 0; i < _INPUTS; i++) { byte message = BUTTONS[i]->getValue(); // Button is pressed if (message == 0) { if (currChan == i) return; // Turn OFF LEDs _LEDS_OFF(); currChan = i; // Turn ON the proper LED _LED_ON(i); byte btnValue = BUTTONS[i]->Bvalue; MIDI.sendProgramChange(btnValue, sendChan); delay(100); } else { delay(10); } } } // --------------------------------------- // UTILITY FUNCTIONS // --------------------------------------- void _LEDS_OFF() { for( byte i = 0; i < _INPUTS; i++ ) { digitalWrite( LEDS[i], LOW ); } } void _LED_ON ( byte targ ) { digitalWrite( LEDS[targ], HIGH ); } void _LED_OFF ( byte targ ) { digitalWrite( LEDS[targ], LOW ); }
Any ideas are greatly appreciated! \m| |m/
-
UPDATE: I have all but abandoned the Arduino footswitch thinking that perhaps something is incorrect with my code.
I purchased a Tech21 Midi Mongoose thinking this would surely resolve my MIDI issue. Sadly, it does not work with the head either?
I have engaged support to find out why this is happening. In the process of troubleshooting I discovered that my Arduino device is sending exactly the same data over MIDI that the Tech21 hardware is. In short – the DIY Arduino device appears to be functioning properly!
Will update again when support (hopefully) resolves this issue.
-
UPDATE: After A LOT of back and forth with Positive Grid Support I was informed that only a specific MIDI adaptor will work (MIDI TRS DIN Type B). #facepalm
Note that the BIAS Guitar Mini Head does ship with 2 of these cables, but I purchased my head used from Guitar Center and no cables were not included.
Here is the ONLY after market MIDI adaptor cable that will work:
https://www.amazon.com/MIDI-Cable-1010music-Arturia-Novation/dp/B074XGJRQK
The GOOD NEWS: my DIY Arduino-powered 6-button foot switch DOES WORK!!! I gigged with it last week.