# ******************************************************************************
# This file is part of the AaMakro5oul project
# (An OSC/MIDI controller for Ableton Live with DJ features)
#
# Full project source: https://github.com/hiramegl/AaMakro5oul
#
# License : Apache License 2.0
# Full license: https://github.com/hiramegl/AaMakro5oul/blob/master/LICENSE
#
# Copyright 2018, 2019 by Hiram Galicia ([email protected])
# http://www.unasystems.com
#
# All rights reserved.
# ******************************************************************************
OSC/MIDI Controller for Ableton Live 9 with DJ features.
Introduction video - launching AaMakro5oul
- 5 Views:
- Session
- Clip / Fx
- Sequencer
- Keyboard (108 keys, 9 octaves)
- Mix (for DJ'ing)
- Macro-controls
- Automatic volume control (increase and decrease)
- Automatic effect control (increase and decrease dry/wet)
- Automatic crossfader control (fading from A to B or B to A)
- 4 channels for automatic effects control (increase or decrease dry/wet)
- 1 channel for detailed control of effects
- 8 scenes / 8 tracks matrix
- 8 sends and 8 returns control
- Clip loops
- Loop roll
- Loop jump
- Transpose control
- Duplicate clip / scene
- Copy, paste and cut clips
- Multiple clip selection
- Mouse cursor positioning from GUI
- Mouse scrolling from GUI
- Cue/Solo toggle
- Legato toggle
- Session/Arrangement toggle
- Clip/Effects toggle
My objective with this project is to develop an Ableton Live controller for DJ'ing with the capability to add and edit loops on-the-go during gigs. I also wanted to create functions or commands ("macros") that perform many operations simultaneously, just with the touch of one button.
In order to install AaMakro5oul, you should install the following dependencies (in this order):
- Deploying scripts (MAC OS)
- Open Stage Control (0.23.0)
- Ruby and 'mouse' gem
- Virtual MIDI Port (MAC OS)
- The root 'AaMakro5oul' directory (containing 'AaMakro5oul.py') shoud be copied inside Ableton Live 9:
/Applications/Ableton Live 9 Standard.app/Contents/App-Resources/MIDI Remote Scripts/AaMakro5oul
- The 'AaMakro5oul' subdirectory (containg config.txt) should be copied in your user directory:
/Users/<your_user_name>/AaMakro5oul
It also possible to create a soft-link (which is the solution I have myself). Run in a terminal:
ln -s /Applications/Ableton Live 9 Standard.app/Contents/App-Resources/MIDI Remote Scripts/AaMakro5oul/AaMakro5oul /Users/<your_user_name>/AaMakro5oul
Open Stage Control is used as a bridge between the AaMakro5oul GUI and Ableton Live. The GUI configuration is saved in the file 'ifc/latest.json' and is loaded when the script 'AaMakro5oul_server.sh' is executed. Open Stage Control has released many new versions after 0.23.0 but unfortunately I was not cautious enough to download the latest versions and try my 'latest.json' every time. Sadly, when I tried the latest versions the GUI did not work at all, but it works fine with 0.23.0. The link to download Open Stage Control 0.23.0 is here:
Official Open Stage Control 0.23.0 download
Updating to the latest version of Open Stage Control is in the roadmap.
In order to be able to use some special commands is necessary to install Ruby (scripting language interpreter). If you use MAC OS then you already have ruby. Furthermore, is necessary to install the gem 'mouse' that 'AaMakro5oul_server.rb' uses. In order to install the gem you need to run the command 'sudo gem install mouse' in a terminal and accept the installation. Afterwards, it will be possible to start the script 'AaMakro5oul_server.rb' and have the functionality that it provides.
A Virtual MIDI Port is necessary in order to be able to use the keyboard view and the drumpad. You can use the following instructions to create a Virtual MIDI Port (only for MAC OS):
- Open the application called "Audio MIDI Setup"
- Activate the "IAC Driver"
- Create a virtual MIDI port "AbletonLive"
- Confirm that you virtual MIDI port is actually found by Open Stage Control by running the command "open-stage-control -m list".
- Select the MIDI Port "AbletonLive" that you just created when configuring your control surface in the "Preferences" dialog of your Ableton Live 9.
One of the amusing things with this project was to assemble the hardware as well. I bought all parts separated and afterwards assembled them into one plastic case that I made myself. The parts are:
- LCD touchscreen (to display and interact with the GUI)
- Raspberry Pi B+ (the bridge between the touchscreen and the Open Stage Control server)
- External soundcard Behringer U-Phoria UMC404HD (in order to output the sound to the speakers from Ableton Live)
I found a thread with some tips about cheap touchscreens for raspberry Pi.
After checking the alternatives I decided to invest in this one:
There is a couple of videos in that page showing how to connect the touchscreen with the Raspberry Pi (no rocket science at all). I selected this touchscreen because it was big, but I'm still looking for a bigger one! :-D
I bought the Raspberry Pi in an electronics store and it was really easy to get started just by watching some videos in youtube. Again, no rocket science to assemble the Raspberry Pi B+ neither.
I was looking for a soundcard with balanced XLR connectors since it was the most common interface in the places I had been playing. It also has a headphones output for monitoring. I'm really happy with this soundcard and I highly recommend it!
This is the first project that I program in Python. While developing this project my script used to crash very, very often, so in order to load it again I needed to scroll in the list of MIDI controllers in Ableton Live until I found it, which was time consuming. Therefore, I put the 'Aa' at the beginning so that it would not be necessary to scroll but just find it first in the list of surface controllers.
Originally 'M4kro' but I tought it would be more confusing to pronounce, therefore I left it as 'Makro'. Makro is for "macroi-nstructions" or "macro-commands", i.e., commands that execute things automatically, like autovolume control, autoeffect control, build-up automation, rebooting a channel, etc. I want to save time by clicking one button that does everything for me.
I got inspired after watching a couple of videos of two of my all-time favorite DJ's: Paul Van Dyk and Deadmau5. Indeed, that is the reason why I have the '5' in my Dj name 'Lua5oul' and in my controller, which is the soul of my mix :-)
My name is Hiram Galicia ([email protected]) and have a great passion for music, dancing and programming.