Using USB footswitch

Looking to add a couple more foot switches to my live setup…
Any chance I can use a straight USB-type “transcription” pedal? There’s a nice 3 -switch one for sale used, it has very nice ergonomics. It’s made for controlling a transcribing recorder. Model is the Executive Communications Sustems Infinity 3 USB foot controller.

Thanks for any info.

Lou

I don’t think this foot controller speaks MIDI. I use Disaster Area Designs MIDI Baby 3

Steve

@Lou I tried some time ago to use this type of footswitch as a controller but it never worked.
The manufacturer explained me that it will only work with transcription software.

If you’re looking for a practical and cheap midi controller, there is for example the Line6 FBV Express MK2 which has 4 footswitches + 1 dual function expression pedal.

I use one of them live to control GP without any problem.

1 Like

https://www.audiofront.net/MIDIExpression.php

2 Likes

i use a quad one. works like a charm. Has been recommended to me here at GP.
ships from Taiwan…something like this…its good to know :wink:

I think if it’s a USB connection it will be sending some form of key code. So I don’t think the Audiofront devices are going to help with this.

I think it’s more a case that a pedal built for transcription purposes is not the right tool for the job.

1 Like

I build my own using Arduinos. They are cheap, easy to program, recognized as a MIDI controller (so plug and play) and with a decent number of digital and analog inputs can support a lot of switches or expression pedals.

1 Like

Thanks all, great answers and info. Yes thinking it thru further I realized of course that the ‘transcription controller’ USB pedal will be sending a proprietary signal which it’s own app would recognize, but unless that app has the ability to output a Midi event (which it wouldn’t) it won’t work.
I do like the layout of that transcription pedal but the only way to make it work would be to hack it, wire the button closures directly as contact closures to another Midi Expression convertor. I might go that route. The other suggestions here are all worth exploring as well. The Arduinos approach is pretty cool, completely customizable.
Thanks all again.

Lou

Do you have some Arduino code to share with us? I don’t think that Arduinos are recognized as a MIDI device by default, but with the right code it can do wonders as you say.

For easily building USB MIDI devices, I can recommend the (Arduino-compatible) Teensy with the excellent MIDIController library. I’ve been using it for a while with a little purpose-built controller box.

You’ll find my code for it here: gigbox v0.2 · GitHub
It’s basically one of the examples with a custom debounce function for the sustain pedal.
Oh yeah, the included examples are great! :slight_smile:

1 Like

This is excellent information! Thanks so much. I’ve just downloaded Arduino tutorials, going to dive in and start learning it. I’ve looked thru the libraries you reference and this looks exactly what I need. Got the Teensy on order.

Regards
Lou

1 Like

Looking forward to seeing what you’re going to build :raised_hands:
One more hint about the Teensy: To program it using Arduino, you need to use their Teensyduino fork. In case of any other questions, just post them here :slight_smile:

This is the library I settled on:

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

and here is a good writeup of boards that support midi over USB:

https://tttapa.github.io/Control-Surface-doc/Doxygen/d8/d4a/md_pages_MIDI-over-USB.html

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

constexpr uint8_t MCC_USER_14 = 0x0E;
constexpr uint8_t MCC_USER_15 = 0x0F;
constexpr uint8_t MCC_USER_16 = 0x10;

// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;
 
// Instantiate a CCPotentiometer object
CCPotentiometer potentiometer = {
  A0,                                   // Analog pin connected to potentiometer
  {MIDI_CC::Channel_Volume, CHANNEL_1}, // Channel volume of channel 1
};

// Instantiate a CCButton object
CCButton button16 = {
  // Push button on pin 4:
  4,
  // General Purpose Controller #1 on MIDI channel 1:
  {MCC_USER_16, CHANNEL_1},
};

// Instantiate a CCButton object
CCButton button14 = {
  // Push button on pin 5:
  5,
  // General Purpose Controller #1 on MIDI channel 1:
  {MCC_USER_14, CHANNEL_1},
};

 // Instantiate a CCButton object
CCButton button15 = {
  // Push button on pin 6:
  6,
  // General Purpose Controller #1 on MIDI channel 1:
  {MCC_USER_15, CHANNEL_1},
};

void setup() {
  button14.invert();
  button15.invert();
  Control_Surface.begin(); // Initialize Control Surface
  
}
 
void loop() {
  Control_Surface.loop(); // Update the Control Surface
}

The box I pictured above uses 49 lines of code (including white space and comments). I define a Potentiometer control which is a standard expression/volume pedal, and three switches. SW1 is a simple momentary/sustain type pedal, and SW2 is a guitar 2-switch box with a TRS connector.

Even for non-coder I think it’s pretty easy to follow.