Using Tidal with Ableton Live

Thanks for your reply!

I'll try to describe what I have been experiencing as I am having mixed experiences.

I just realised that when I do MIDI mapping with Arturia instruments, I shall do it incrementally ie. I have to set one ccn at a time. Moreover, Arturia has a really handy MIDI learn section in each instrument that helps a lot.
This seems to work and I can then save the mapping configuration so I can reuse it in the future. Here is a screenshot of the configuration in the VSTi:

and this is the resulting code:

    let flutter = "1"
        tapeSaturation = "2"
        noiseFloor = "3"
    d1 $ stack [
         note "{ c'min g4'min'i f4'maj }%4"
         , ccv (segment 2 $ range 0 50 $ rand) # ccn flutter
         , ccv "0 10 40 50" # ccn tapeSaturation
         , ccv "0 100@0.5 50" # ccn noiseFloor
        ] # s "midi" # midichan "0" # legato 0.7

So far so good, the problem comes when I try to do this with e.g. Wavetable and generally all Ableton instruments and effects.
I press the MIDI button to edit the MIDI map, but nothing changes even when I send control change messages. The same applies if I try to automate parameters from audio effects.
Can you do it this way, or you have to use a different approach?

1 Like

@mattia.paterna i also have lots of trouble mapping my ccv/ccn to tidal from ableton and pretty much gave up on trying to code it. i just twist the knobs like a normal person :slight_smile:

In Live, cmd/ctrl M then click on the param you want to map, then evaluate a ccv/ccn command. hush then repeat with a new ccn. Just like you'd do regular MIDI mapping with Live really.


I do exactly as you say, and it does not happen to register the control change!
I am wondering whether my version is jinxed? :no_mouth:

PS: checked with hardware, works as expected :confounded:

I frankly believe that setting custom OSC messages might be better, easier and more powerful but I am in a bit of time constraint as I am trying to prepare for a gig this Friday and I really do not have time to explore a different strand.

1 Like

Have you checked if "Remote" is enabled (Live / Preferences / MIDI) for your virtual MIDI bus ?

1 Like

ops :no_mouth:
I owe you one.

1 Like

@kit-christopher what I am still asking myself is whether the amount of boilerplate code and the tedious process of mapping one parameter at a time is more worthy than doing it in an automation line in a DAW.
I guess it comes down to a different way of approaching music production and how much you are interested in editing this in an online fashion.

@nilhartman rejoice! this worked! holy crap, so wonderful! i did not have remote enabled and i did not know the trick to evaluate ccn / ccv in midimap mode!

now, time to get busy :slight_smile:

1 Like

This is the right approach as OSC has way higher resolution than midi. Please keep us updated!

What I want is something like this but for Tidal mininotation

I currently use CC Modulat for all my LFO needs : Modulat | Chaos Culture | MaxforLive Building Set | Isotonik Studios

Or too smooth out CC flux coming from Tidal.

The only but key requirement is to make Carabiner work flawlessly, like start / stop sync etc... But once you've set it right it's really cool.

14bit MIDI is much better but will most likely overload your virtual MIDI bus if you send various CC sequences at once (my experience with OSX and Win 10).

Now, OSC seems perfect but I can't warp my head around it. @Francesco_Corvi's device looks absolutely awesome.

@tamlyn a Tidal M4L port / device would be sensational and solve so many issues. It'd make using Tidal, M4L and Live's Clips all together so easy. My drea set-up eh.

1 Like

I think some of the things described in the cheat sheet are feasible with mininotation.

What I would like instead is the possibility to define complex rhythms at a high level as described in Schillinger's Theory of Rhythm, that is not laying out every single detail but only describing the process that generates them.

Coming soon I promise, by the end of the month for sure!
I just need to fix a few things that the update to 1.7 broke and write a documentation.
Can't wait to see what other people do messing with it :slight_smile:


Take all the time you need, no pressure :wink:

1 Like

Meanwhile, would you guys have an example of how you set and use OSC ? Thanks !


There is some broilerplate code I want to share with you for syncing the start, stop and recording trigger. Maybe this approach could be interesting in general. Currently I am playing with using TidalCycles as a studio tool (primarily for transforming samples and doing some sound design there). Meanwhile I try to arrange everything in Ableton. Therefore I trigger the play, stop and record via TidalCycles and keep everything in sync with Ableton Link.

This is my mapping in Ableton:

This is how it looks like in SuperCollider for the OSC to MIDI mapping:

// like MIDI loop - my virtual MIDI device
var midiLoop = MIDIOut.newByName("IAC-Treiber", "Bus 1");
	midiLoop.latency = 0;

~dirt.soundLibrary.addSynth( \play, (play: {
	midiLoop.control(3, 100, 127);

~dirt.soundLibrary.addSynth( \stop, (play: {
	midiLoop.control(3, 101, 127);

~dirt.soundLibrary.addSynth( \rec, (play: {
	midiLoop.control(3, 102, 127);

And this is how it looks like in TidalCycles:

 once $ s "rec" -- could be stop or play too
 d1 $ qtrigger 1 $ s "[src:4*2]"
 d2 $ qtrigger 2 $ s "gretsch:6 gretsch:4!5"

I need to adjust the carabiner latency (last parameter in sock <- carabiner tidal 3 (0.182)) so that everything works, but in the end everything is in line. In this way I can record a new pattern during the playback of everything what is already recorded in Ableton.


@mrreason thank you for this! This is so unbelievably helpful!

1 Like

Here we are


awwwwww yeah!