Navigation

    • Login
    • Search
    • PositiveGrid.com
    • Help Center
    • Contact Support

    BIAS Guitar Mini head and DIY MIDI footswitch (Arduino Uno)

    Hardware amps
    1
    3
    133
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • andrewhamtx
      andrewhamtx last edited by andrewhamtx

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

      MIDI PC messages sending.png

      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/

      1 Reply Last reply Reply Quote 1
      • andrewhamtx
        andrewhamtx last edited by

        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.

        1 Reply Last reply Reply Quote 1
        • andrewhamtx
          andrewhamtx last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • 1 / 1
          • First post
            Last post