Ableton Foot Controller

Ableton Foot Controller

Description

5-switch and 2-switch versions of my Loop Controller (LC-5 & LC-2)! Uses Arduino Micro, and is easily reprogrammable. I love doing little live-looped jams in Ableton, often switching from guitar, to bass, to drums, to piano. For a long while I've wanted some sort of foot controller that can trigger loop recording, so I can create loops while I'm playing, when my hands are occupied. So, with my seriously beginner-level modelling and electronics knowledge, I attempted to make one myself! Well, two in fact, so now I can have one by my guitar pedalboard and one by my drum kit :). I considered having the Arduino Micros inside send out MIDI calls, but I actually ended up going with keyboard commands instead. This makes it much more versatile - now I can have multiple programs I can load up, so I can use the LC-5 or LC-2 for looping while playing music, shortcuts while editing, or triggering macros during daily computer use. It's become my favorite little productivity tool. The design on the front is meant for music, but it can be used for anything. The little icons on the front represent what each switch does - on the LC-5, it has track left and right, record, undo, and tap tempo. The LC-2 just has record and undo. I used simple momentary footswitches, and soldered jumper cables directly from the Arduino to the switches. If anyone wants the code, I'll paste the LC-5's below (LC-2 is the same, just minus three switches). I mostly copied it from what other people had done on similar projects, since I'm clueless when it comes to Arduino code, so the comments and such aren't mine. I just retrofitted it to my specific setup. Then, in Ableton, I set the “Session Record” button to be triggered by “]”, and “Tap Tempo” to “[”. Track left and right are just left and right arrow keys, and undo is CMD-Z (this was made for use on Mac specifically). CODE BELOW: #include <Bounce2.h> #include "Keyboard.h" #define BUTTON_DEBOUNCE 50 // 50 = 50 ms debounce time Bounce button2 = Bounce(2, BUTTON_DEBOUNCE); Bounce button3 = Bounce(3, BUTTON_DEBOUNCE); Bounce button4 = Bounce(4, BUTTON_DEBOUNCE); Bounce button5 = Bounce(5, BUTTON_DEBOUNCE); Bounce button6 = Bounce(6, BUTTON_DEBOUNCE); void setup() { // Configure the pins for footswitch buttons as input mode = pullup resistors. // The pushbuttons connect from each pin to ground. When // the button is pressed, the pin reads LOW because the button // shorts it to ground. When released, the pin reads HIGH // because the pullup resistor connects to +5 volts inside // the chip. pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); } void loop() { // Get a reading from the button button2.update(); button3.update(); button4.update(); button5.update(); button6.update(); // Turn notes on if a button has been connected to ground if (button2.fallingEdge()) { Keyboard.press('['); delay(50); Keyboard.releaseAll(); delay(100); } if (button3.fallingEdge()) { Keyboard.press(KEY_LEFT_GUI); Keyboard.press('z'); delay(50); Keyboard.releaseAll(); delay(100); } if (button4.fallingEdge()) { Keyboard.press(']'); delay(50); Keyboard.releaseAll(); delay(100); } if (button5.fallingEdge()) { Keyboard.press(216); delay(50); Keyboard.releaseAll(); delay(100); } if (button6.fallingEdge()) { Keyboard.press(215); delay(50); Keyboard.releaseAll(); delay(100); } }

Statistics

Likes

0

Downloads

0

Category

Music

Tags