Arduino midi controller DIY

Ablickton is a Arduino based MIDI controller for Ableton Live (or any other tracker working with MIDI)


  •  64 dedicated buttons to control the functions of your tracker (here 8 knobs and 56 buttons MUTE CLIP)
  •  16 potentiometers to control the parameters of your tracker (here VOLUME 8 knobs and 8 FX)


To build this controller you need:


Firstly, you need to download and install the Arduino software (if it is not already;) )

Then download the RAR file "Ablickton v1.0" and unzip it to your desktop. It contains all the files needed to program your Arduino. Once unzipped, open the folder "Ablickton v1.0", you come to the program with a folder called "libraries". Copy everything in the folder "libraries" in X :/ .../arduino-1.0.x/libraries /. You must then copy the file "wiring_shift.c" located in the SRIO library folder and replace the old file in your Arduino environment in : X :/ .../arduino-1.0.x / hardware / arduino / cores / arduino /. This file has been modified to optimize the speed of communication between Arduino and Dilicktal. Then open the file "Arduino.h" located in X :/ .../arduino-1.0.x/hardware/arduino/cores/arduino / Go to line 111 and replace lines 111 by "void shiftOut (uint8_t val); "And the line 112 by" uint8_t shiftIn (); "


For mounting you need to connect  Dilicktal and Lickogic in this order. Do not forget to set the jumper on Lickogic on positions 0 to the first board and 1 to the second one.


Number of controllers and button functions:
Each button sends a MIDI Control Change set in the code that goes from 0 to 63. Number button to corresponds to the controller number. There are two possible options for type of buttons: Toggle (press once => ON, sendingCC value of 127, the second pressure => OFF, sending a  CC value of 0) or Momentary (pressed => sending a CC value of 127, released => sending a CC value of 0). In the variable "button_toggle_Pin []" you can change the number of buttons that operate in toggle mode. As well as the variable "button_momentary [] []" you can change the value of the buttons will be Momentary Mode. Note that this variable is a double array to match buttons with Ableton clips.

//Pin number of the toggle button
byte button_toggle_Pin[]={
  52,53,54,55,60,61,62,63 };

//Array of the momentary button pin organize to match with Ableton clip configuration
uint8_t button_momentary[8][7]={
    0,4,16,20,32,36,48            }
    1,5,17,21,33,37,49            }
    2,6,18,22,34,38,50            }
    3,7,19,23,35,39,51            }
    8,12,24,28,40,44,56            }
    9,13,25,29,41,45,57            }
    10,14,26,30,42,46,58            }
    11,15,27,31,43,47,59            }


Potentiometers also send a Control Change message with a value of 7bit (0 to 127). The controller number is the number  of the potentiometer plus 64  to not interfere with the buttons.


  for (byte i=0; i<NUMPOT; i++){
    pot_Value[i] = Pot.Read(i)>>3;//convert 10bits to 7bits
    if (abs (pot_Value[i] - old_Pot_Value[i])>1){//value pot changed? 
      int data = map(pot_Value[i],3,123,0,127);// map to right midi value 0,127 
      data = constrain(data,0,127);
      Send_CC (i+64,data); 
      old_Pot_Value[i] = pot_Value[i];


Code configuration:
You can change the following settings in the code. If you add more Lickogic to your project  do not forget to set the jumper on each board.

//Number of connected potentiometers
#define NUMPOT 16
//communication mode 0=serial  1=MIDI  2=USB
//Midi channel
#define MIDI_CHANNEL 1