Creating An Analog Arduino Controller for Ableton Live

Before you retreat, this tutorial requires NO soldering or coding skills! With an Arduino Uno, Ableton Live 9, Max for Live and select tools you can make your own analog controller for Ableton Live!  

In this tutorial, I am going to show you how to get started using analog components via an Arduino Uno to control digital devices inside Ableton Live. This is only meant to get you started on the road to expressive, intricate and awesome micro controllers, while being incredibly fun and rewarding. 

Here's a video showing the basics of how to make this work. For more details we've included the written instructions below.

No coding or soldering required!

finished-controller-prototype

What you will need to follow along:

  • An Arduino Uno w/ the Software  
  • Ableton Live (Live 9 Standard or above)
  • Max for Live w/ Connection Kit Pack [Free]
  • 4 x Potentiometers (Any will do. I tested 5k, 10k, 100k, 500k)
  • 1 x Slider Switch (Optional)
  • Small Breadboard
  • Assorted Breadboard Jumper Wires (~20)

**The switch is optional. Also, you only need one potentiometer if you are just looking to get started. Though, I will use four for this tutorial.

We won’t be doing any coding in this tutorial, thanks to Ableton’s free Max for Live Connection Kit Pack. So, go grab it, if you haven’t already, and install it. 

URL: https://www.ableton.com/en/packs/connection-kit/

First, let’s set up the breadboard with the potentiometers (pots) and the switch. 

Place the 4 pots next to each other on the breadboard. 

Now, we need to run some jumper wires. There are three pins to a pot. The two end pins are for ground and power, while the middle pin is the signal pin. Most controls in Ableton Live go from left to right (low to high). That means, if we are looking at the front of the pot, the first pin (1) needs to go to ground and the last pin (3) needs to go to power. If you do it the other way, the pot will invert the signal and it would just be awkward while you were using them in conjunction with Live.

pot-pin-signal-ground

The middle pin for each pot needs to go from the breadboard to one of the analog pins on the Arduino. There should be six analog inputs. A0 – A5. We will be using 5 of them. I went with A0 – A4, but it really doesn’t matter which you use, but make sure to remember which you choose. 

arduino-uno-analog-pins-power

Now, for the switch. It has 3 pins as well. We only need two though. The middle pin goes to ground and one of the outside pins goes to the analog input. Doesn’t matter which one. 

The last thing we need to do is send 5v power from the Arduino to the power rail of the breadboard. Then connect the breadboard’s ground rail to any of the Arduino’s GND pin slots.

That’s all for the analog part.

Plug in your Arduino to the computer and open its software. Make sure all your libraries are up to date. We are going to load a sketch that is prebuilt and the Connection Kit will recognize and communicate with. It’s called StandardFirmata.

Go to File > Examples > Firmata > StandardFirmata

load-standard-firmata-sketch-arduino

Next, go to Tools > Board ad make sure that the Arduino/Generic Uno is selected.

Then go back to Tools > Port and make sure that you choose the USB port your Arduino is using. Usually it will be COM(x). The x being a number. 

arduino-board-port-settings

Next, upload the script to your Arduino. That’s it for the coding bit!!

upload-sketch

Now, you can open Ableton Live. Go to the Packs section of the Places section of the browser and find the Connection Kit. Open up the folder stack and choose the Arduino Max for Live Device. Drop it onto a new channel and wait for Max to start. 

Before mapping you need to make sure the right Port is selected. You want to use the same one that you used to upload the sketch. Mine is COM3. If, for some reason, you don’t see the one you used in the drop down, hit the rescan button.

Next, make sure you are looking at the analog options as opposed to the digital ones. 

Drop a simple delay to the right of the Arduino device. I chose the simple delay because four pot controls and an on/off switch cover most of the bases. Though, you can choose whatever device you want. 

Now, you want to hit the map button for an analog pin that you have connected to one of your pots. I am using A1 as the left most pot, for example. So I click “map” for the A1 ID and then click the Feedback parameter on the Simple Delay. This should grey out the parameter. At this time if you move that first pot you should see the Feedback parameter move on the device inside Live. Awesome! 

Repeat that process to map the Dry/Wet and the Left & the Right Delay Time parameters.

Now, for the Slide Switch. Click map for ID A0 (or whichever you are using). Then click the on/off button on the simple delay. Test that it works by switching the switch on and off. If the device turns on and off, you are good to go. 

If, when you slide it to one side, the device turns off, but the other state makes the device blink on and off rapidly you might have an issue. 

Don’t worry, first thing to do is to switch the signal wire to the other available pin on the switch. That might work. If it doesn’t, try another switch or delete and relaunch the Arduino Max Device.

What might be happening is called “contact bouncing” and you will need to do what is called “debouncing” if you can’t get it to work as is. That process is beyond the scope of this tutorial, but I got things working without debouncing the switch, so hopefully you do too!

URL: https://en.wikipedia.org/wiki/Switch#Contact_bounce

My final mappings for the Device looked like this. 

Port COM3 Connections (Analog) 

The On / Off Switch

  • ID A0 – Parameter – Device On

The Potentiometers 

  • ID A1 – Parameter – Feedback
  • ID A2 – Parameter – Dry/Wet
  • ID A3 – Parameter – L Time Delay (unsynced)
  • ID A4 – Parameter – R Time Delay (unsynced)
arduino-analog-control-final-mapping 

Now I can not only turn the Simple Delay on and off via an analog switch, but I can adjust the dry/wet, feedback, and time amount for the left and right channels all from my little analog controller!!

I have quite a few bigger and better projects in mind for 2017! If you have any suggestions or questions don’t be afraid to comment below and I will get back to you as soon as possible. 

Learn Ableton Live from beginner to advanced in the AskAudio Academy here.

Joshua Casper is an accomplished live performer, DJ, producer, and music educator. His specialties are centered in and around Ableton Live and Native Instruments. His educational material has been featured on Ableton.com and Maxforlive.com as well as a myriad of large music production websites. His music has been featured on Dubstep.ne... Read More

Discussion

bestform
Thank you very much. This was a great article. I had an old arduino duemilanove plus bread board, cables and pots lying around. So I grabbed them and built it myself. It went absolutely flawlessly and I had a lot of fun doing it. I will buy some interesting sensors next and use them as midi input. Good times. :)
Joshua Casper
Good to hear! I have another more advanced and exciting tutorial coming soon. Very exciting stuff in the pipeline!
Martin Orman
Great article Joshua. I made this on a breadboard last night and can give you some extra tips:
Open up the Arduino Connection Kit in a MIDI track.
Drop the soft synth of your choice into the instrument where it says "drop instrument here"
Right click on the synth title and select "Group" - an Instrument rack will appear
Click on the curly logo under the Instrument Rack on/off button - it's called "Show/Hide Macro controls"
Click "configure" on your soft synth and then click on the controls you want to control on the main VST GUI e.g. VCO, VCA, Osc, etc. They will populate under "configure". Click "configue" again.
Right click on a new configuration and select the macro control you want to use with it.
Click on a "MAP" in the Arduino control and then click on the Macro dial you want to control with that map.
You will then be ale to control your VST with the Arduino pots! Voila




Joshua Casper
Yes. That's great. Once you are connected successfully the sky's the limit :)
Martin Orman
So I just found out if I add another Arduino and open another instance of the connection kit on the same track I can add another 6 analogue maps. I just made sure the port was set the other Com port and not the same as the first Arduino. Looks like this is going to be extremely useful.
Joshua Casper
Glad to hear that!! Let us know what you come up with!!
Thomen
I was wondering what if you needed to retro fit your arduino for other purposes? I assume the firmata sketch is communicating via serial.. Is there scope to use a method like this via ethernet or something else to free up serial for visualisation in processing or similar?
Redsun1979
This is a great tutorial, Im having trouble getting this to work with an Arduino 101. Has anyone tried this with the 101?
Joshua Casper
Unfortunately, I have only had experience with the Uno.
kaptaine d
Guys! great tutorial, great video bt a silly question. If I plug an arduino mega is it going to automatically read the extra analog ports?

Want to join the discussion?

Create an account or login to get started!