Close
0%
0%

Loop based live/jam solution

Ableton Live based setup for live music collaboration using custom hardware controllers.

Public Chat
Similar projects worth following
Problem:

When improvising together using synths, drum machines etc. I often feel that something is missing. It's so easy to get lost in our own bubbles instead of listening, and the result could be so much better.

Monitoring is often limited, so that everyone struggles hearing themselves and kranks up their volume, and soon it's just a big mess.

There's always someone who needs the master clock to restart because their sequencer is out of sync, this can happen from playing around with track length, or just a clock tick missing in action.


Solution:

Talk with each other, rehears, listen more? Of course not, let's build something!


First of all this documentation is a bit of a mess, I just wanted to gather what we have so far and throw it somewhere. If anyone want to actually build something similar, by all means have fun and feel free to use what you want. However if you're not already skilled enough to know how to do most of this already, this probably won't work as a very good guide, sorry. Also, it's work in progress and there is a few ugly solutions in there. =) 


Here's what we set out to solve: 


Mixing - Someone needs to own the mix, and we decided that the most logical way was to run everything through separate channels in Ableton, mixing using MIDI controllers.

Sync - Everyone has a button they can hit to get a quick Stop/Start-signal together with the MIDI clock. 

Monitoring - Eeveryone needs a headphone signal, with their own sound and preferable plus the main mix in the background. We use a standard 1->4 headphone amp modded with separate inputs, cheap and dirty.

Looping - Everyone gets their own looper! YeyAlso, all loops are stored so it's also a way to collect material. Four round controllers was built for this purpose. 


A number of experiments and iterations landed in this setup, it's not perfect, but it works! 

The four round controllers are hooked up to a Teensy 3.5 using standard ethernet cables. They have 8 RGB LED's (showing loop status) two buttons and two knobs, and they have a MIDI out for clock. The Teensy talks to a Max patch through USB serial, and that Max patch talks to m4l-patches in the Ableton setup though OSC. Oh and the Teensy also acts as a standard 4xMIDI interface.

All audio goes into Ableton live, when pressing the Rec button, a new clip is recorded and automatically starts playing when done. A short click makes a short loop. If the button it held down, it keeps going until released. Ableton's global quantization setting decides the minimum length of recording, and how rec start and stop is quantized. 

LED's show progress in red when recording, green when playing. 

The big knob in the middle controls a cross fader between Loop and Live. In Ableton, this is two channels grouped together, Loop always plays the last recorded clip, and Live is the direct monitoring of the input. 


Like this - a practical example: 

1 - Your mix knob says Live. Whatever you do with your MegaGrooveBox3000 goes straight through the system. When ready, hold Rec, record as long as needed and let go. A new clip is created. 

2 - Flip over to Loop mode. This means that the beat goes on, but nothing you do now will mess up that loop. The only one who knows what you do now is you, through your headphones. Try out presets, program the sequencer or just practice some bold patch tweaks. If needed, press ReSync and your sequencer will be told to behave again. 

2b - Take your time, notice how the person doing the mixing had time to process your and the others loops, maybe mixing between them. Dance a little.

3 - Carefully (or not) fade over to Live mode again. Rinse and repeat.


Why the max patch? 

As there is just one microcontroller handling all four controller boxes, it made sense to keep all the serial USB traffic to one place. Technically I guess this could have been another m4l patch but another thing is that m4l doesn't allow for sending MIDI straight out, only filtered through Ableton where a custom MIDI clock would get lost on the way. I do recall we found some hack (external) for this but it wasn't stable. 

Why not just connect headphones directly to the instrument? 

We started like that, but we had some latency (about 30 ms) in Live and to hear your instrument without that got really weird when the mix in the speakers do. Of course one can trim down latency, but we wanted a bunch of effects running to get the sound right. Also all gear doesn't have...

Read more »

Crossfader.amxd

The m4l patch that controls the channel mixing between live/loop By Tobias Lilja

octet-stream - 119.74 kB - 10/31/2021 at 22:30

Download

Eagle.zip

Eagle Schematic for the main PCB. By Christian Björklund, great support from Sebastian Hastrup

x-zip-compressed - 383.68 kB - 10/26/2021 at 22:59

Download

mapul8tor-audio_TLclone_frozen_0.5.amxd

This is a take on the m4l Mapulator/Mapul8tor and similar patches that we use for the effect setup, with the main difference it's less buggy and slightly more fancy. By Tobias Lilja

octet-stream - 355.06 kB - 10/26/2021 at 22:53

Download

ClipLooper_Audio_GroupTrack 0.5.amxd

The Max for live Looper. It's specifically made for the Max patch but should be clear enough if anyone wants to edit it. By Tobias Lilja

octet-stream - 1.57 MB - 10/26/2021 at 22:47

Download

techno_leds_0.6.ino

Teensy code. By Christian Björklund and Philip Linde

ino - 11.75 kB - 10/26/2021 at 22:47

Download

View all 7 files

  • 1
    Teensy on breadboard

    First of all, this isn't a proper building guide at all, sorry, it is just a confused documentation of how it all was done.

    The Teensy was on a messy breadboard for a long time, with a couple of control box prototypes connected that had different shapes and forms. 

    Installation instructions for Teensy: https://www.pjrc.com/teensy/td_download.html

    We figured out how buttons and knobs works, found the libraries needed:

    Bounce.h
    ResponsiveAnalogRead.h
    Adafruit_NeoPixel.h
    MIDI.h

    Note: Should check what exact versions of libraries we're using

    The serial USB setup is very basic, check the code and Max patch. 

  • 2
    LED

    We started with normal leds, and also did some test with just one RGB LED per controller and both kind of did the job, but since these are connected in serial and just use one pin it just made more sense to use the fancy Neopixel ones.

    So from Max there's three bytes sent: ID, Mode and Position:

    unit_ID (1,2,3,4) or special commands (Brightness and stuff)

    LED mode 

    1 - all off
    2 - play, filled leds   
    3 - rec, filled leds flashing once per step   
    4 - resync effect, four steps loop   
    5 - cue, single LED position
    6 - flash (yellow version of play)

    LED position 

    0 - 31. It's just 8 leds but we send the position in 32 steps to be able to flash leds on each step 

  • 3
    Max and Ableton setup

    From the Teensy we get the button and knobs send to Max, and the messages gets scaled and routed into each m4l-patch.

    Ableton's sync out goes to a virtual MIDI device, we found Loopbe1 to be perfect.  https://www.nerds.de/en/loopbe1.html  Latency compensation is done in the Ableton MIDI out setting using negative delay on the clock out until the monitor inputs matches with the built in sound. 

    Max receives the clock ("MIDI clock in" )and distributes it to the Teensy's MIDI ports with the added resync (Stop/Play) messages. 


    For each instrument, the setup in Ableton consists of two channels grouped together. One for monitoring (live mode) and on for the clips. The ClipLooper patch sits on the group channel and has to point to the clip track. (lower left corner). It also needs to know which controller (A/B/C/D) it belongs to. 

    The crossfader patch is controlled from the big knob and simply sets the volume of the two channels ion the group. 

View all 3 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates