Giter VIP home page Giter VIP logo

aamakro5oul's Introduction

# ******************************************************************************
# 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.
# ******************************************************************************

AaMakro5oul

OSC/MIDI Controller for Ableton Live 9 with DJ features.

AaMakro5oul Views

Introduction video - launching AaMakro5oul

Features

  • 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

Objective

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.


Installation

In order to install AaMakro5oul, you should install the following dependencies (in this order):

  1. Deploying scripts (MAC OS)
  2. Open Stage Control (0.23.0)
  3. Ruby and 'mouse' gem
  4. Virtual MIDI Port (MAC OS)

Deploying scripts (MAC OS)

  1. 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
  1. 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 0.23.0

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.

Ruby and 'mouse' gem

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.

Virtual MIDI Port (MAC OS)

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):

  1. Open the application called "Audio MIDI Setup"
  2. Activate the "IAC Driver"
  3. Create a virtual MIDI port "AbletonLive"
  4. Confirm that you virtual MIDI port is actually found by Open Stage Control by running the command "open-stage-control -m list".
  5. Select the MIDI Port "AbletonLive" that you just created when configuring your control surface in the "Preferences" dialog of your Ableton Live 9.

Software connections

Software connections


Hardware

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:

  1. LCD touchscreen (to display and interact with the GUI)
  2. Raspberry Pi B+ (the bridge between the touchscreen and the Open Stage Control server)
  3. External soundcard Behringer U-Phoria UMC404HD (in order to output the sound to the speakers from Ableton Live)

Touchscreen

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

Raspberry Pi B+

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.

U-Phoria UMC404HD

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!

Hardware connections

Hardware connections


Why AaMakro5oul?

Aa

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.

Makro

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.

5oul

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 :-)

About the author

My name is Hiram Galicia ([email protected]) and have a great passion for music, dancing and programming.

aamakro5oul's People

Contributors

hiramegl avatar

Stargazers

matt petters avatar Fortes avatar  avatar  avatar

Watchers

 avatar James Cloos avatar  avatar  avatar

aamakro5oul's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.