Routing Tidal audio to Ableton

I'm trying to figure out how to route my Tidal audio to Ableton. It would be great if I could send different orbits to different tracks in Ableton. I know this is possible, but I never got it to work. Soundflower didn't work, kuwatec Audio Loopback did, but I couldn't send out different orbits. I know this is possible with Jack as well (https://github.com/jackaudio/jack2), but I'm not sure how to install it (I am quite new to GitHub as well).

I am using macOs High Sierra 10.13.6

Could anyone help me out with this or point me in the right direction?

2 Likes

I use jack under Linux, but I think it's difficult to get that working on a mac.
I've heard from @tedthetrumpet that blackhole works well: https://github.com/ExistentialAudio/BlackHole

Here's the userbase page:
https://tidalcycles.org/index.php/Separate_audio_outputs

Here's a nice video about it:
https://www.youtube.com/watch?v=W6ZJVHUpTRA

3 Likes

i have the same issue on windows, where jack is just for 32 bits and i have all my plug ins for 64.
Also quite n00b with github and code/audio routing deep understanding.

I route audio from SuperCollider to FL Studio on MacOS using JackRouter: https://jackaudio.org/downloads/

When you start it, you'll get a little routing/patch window:

Any "jack connectable" application should show up. I imagine Ableton will.

@torotumbo on Windows, my experience is very frustrating. I've used various "Virtual Audio Cable" applications on Windows with the ASIO driver, with occasional success. The last few times I tried it I couldn't get it to work. I fear that I do not have a good solution for Windows.

@torotumbo

In Windows I've been able to send two channels to Ableton successfully using Virtual Cable. You need to make sure SuperCollider is outputting to Virtual Cable (by switching your default output to Virtual Cable before booting SuperCollider and SuperDirt). You can then choose Virtual Cable as an input in Ableton, and monitor Ableton via your usual setup.

Multichannel is a bit tricker - I've managed to get it working into Reaper using WASAPI. I think in theory you should be able to use ASIO4All to get multichannels into Ableton but I can't get it to work.

To get it working in Reaper this is what I did:

  1. Installed LoopBeAudio (this costs about 20EUR but you can get a trial version for free that runs for 60 mins at a time).
  2. Set up LoopBeAudio as an 8 channel device at 44100 hz
  3. Booted SuperCollider with LoopBeAudio as the device
  4. Set SuperCollider up to output on 8 channels, and set 4 orbits in Tidal each starting at a different channel (so effectively we can send four stereo channels from Tidal as orbit 0 (channel 0&1), orbit 1 (channel 2&3), orbit 2 (channel 4&5) and orbit 3 (channel 6&7)) by running this code in SuperCollider:
(
s.options.numBuffers = 1024 * 256;
s.options.memSize = 8192 * 16;
s.options.maxNodes = 1024 * 32;
s.options.numOutputBusChannels = 8; // total number of channels output
s.options.numInputBusChannels = 2;

s.waitForBoot {
    ~dirt = SuperDirt(2, s); // pan across two channels
    ~dirt.loadSoundFiles;
    ~dirt.start(57120, [0, 2, 4, 6]); // set up four orbits, and start each output at a diff channel
};
s.latency = 0.3;
);

I then set up my four stereo channels in tidal using # orbit:

d1 $ s "cpu*4 ~ ~ ~" # orbit 0 # pan "<1 0 0 0>"

d2 $ s "~ cpu*4 ~ ~" # orbit 1 # pan "<0 1 0 0>"

d3 $ s "~ ~ cpu*4 ~" # orbit 2 # pan "<0 0 1 0>"

d4 $ s "~ ~ ~ cpu*4" # orbit 3 # pan "<0 0 0 1>"

And checked it was all working using s.scope in SuperCollider ((since I don't have a multichannel speaker setup at home here it helped me understand what was going on))

Then in Reaper I opened my audio settings and chose WASAPI as the driver and LoopBeAudio as the device. I made sure all my settings were the same (8 channels, 44100 hz). I then set up four tracks, and set the input of each as a stereo pair (1&2, 3&4, 5&6, 7&8)

Hopefully that helps... it might give you the clue you need to get stuff working in Ableton. Maybe even using ReWire to get audio from Reaper to Ableton would work, I'm not sure. I'll keep trying anyway and shout back if I get anywhere.

2 Likes

@yaxu @kindohm @tedthetrumpet Thank you everyone, I got Blackhole to work. My problem is now that I only get audio when ableton is running and I'm monitoring all the channels. When I set the output to "Built-In Output" in SC I only hear channels 0-1/orbit 0, I guess this is because of the changes I made in the SC startup file (https://tidalcycles.org/index.php/Separate_audio_outputs)?

I want to hear what I'm doing in Tidal, even when Ableton is not running, so I've tried to set up a multi output device in Audio/Midi Setup (which combines my Built In Output and Blackhole 16ch), but when I set this as my output in SC I get this error message:

get kAudioDevicePropertyStreamFormat error on input ?ohw
could not initialize audio.
Server 'localhost' exited with exit code 0.

Not sure what to do about this.

I suspect you might need to have two different setups, rather than a single startup file. When I run audio mulichannel from SC into Logic via Blackhole, I set the SC server to 16 channels and reboot. Then, if I want to go back to stereo monitoring, I reboot the server again. I'm not sure how you would be able to go back and forth between these two scenarios seamlessly.

1 Like

I do the same. I kill the SuperCollider server, restart SuperCollider, and eval a different startup file if I need to monitor outside my DAW. I do not use an auto-startup file because my configuration changes day to day.

1 Like

Of course! Completely forgot that that was even an option :slight_smile: . Thank you!!

I was finally able to get multichannel recording into Ableton with ASIO4All thanks to the information you provided here. Thanks again!

1 Like

Hey guys,

I'm trying to route multi channels through blackhole into logic. However, if i play more than one channel within atom through different orbits (e.g. 'orbit 6' and 'orbit 8') everything still through 0, 1 as shown on supercolliders meter. Within Logic i only receive audio through inputs 1-2 no matter which orbit i use.

I have attached my startup file for reference.

@1528DD What steps did you take to send multi channel to blackhole and then your DAW?

If anyone has any idea of where im going wrong it would be greatly appreciated as i'm stooped

Thank you!

Edit: no longer having all audio through channels 0-3 just restricted to 0,1 atm

include("SuperDirt")

SuperDirt.start

Quarks.gui

s.options.numOutputBusChannels = 16;

s.waitForBoot{
	~dirt = SuperDirt(2,s);
	~dirt.start(57120, [0, 2, 4, 6, 8, 10, 12, 14]);
	s.meter;
	s.latency = 0.0;
}

MIDIClient.init;

~midiOut = MIDIOut.newByName("Pro40", "MIDI");

~midiOut.latency = 0;

~dirt.soundLibrary.addMIDI(\midi, ~midiOut);

Hi @harry - it might be because you are running SuperDirt.start which runs dirt with the default 2 channels... so then when you try to open dirt with more channels later it doesn't work.

Maybe try removing those lines from your startup file

include("SuperDirt")

SuperDirt.start

and see what happens

2 Likes

PS. I'm no SuperCollider expert.... but I did just try running your code with a couple of tweaks and it has opened 16 channels for me and Tidal is routing audio to different ones... so maybe try this with your setup and let me know how you get on

(
s.options.numBuffers = 1024 * 256;
s.options.memSize = 8192 * 16;
s.options.maxNodes = 1024 * 32;
s.options.numOutputBusChannels = 16;

s.waitForBoot{
~dirt = SuperDirt(2,s);
~dirt.loadSoundFiles;
~dirt.start(57120, [0, 2, 4, 6, 8, 10, 12, 14]);
s.latency = 0.0;
};
)

s.scope

2 Likes

Its worked!! thank you very much, thats absolutely ideal

@harry great news :slight_smile:

@heavy.lifting thank you, this worked for me as well using BlackHole...ugh, what a mess! i did, however, need to specify the orbits in my SC startup else the audio was all garbled (in case anyone else is struggling with this...).

anyone here have any luck / advice for getting the midiclocking to sync between Ableton and Tidal? the docs for midi clock synchronization did not pan out well for me...can't really figure out if these are sequential evals that i'll need to do for every session or what...

You can simply synchronize TidalCycles and Ableton Live with Ableton Link: https://tidalcycles.org/index.php/Link_synchronisation
This is much more accurate than a MIDI clock.

Therefore you need the carabiner software started and then type sock <- carabiner tidal 4 (-0.14)in your current session (or you add this line in your startup script).

Note: Unfortunately this link synchronization feature is not implemented in TidalCycles directly, because someone needed to build a connector to the c++ api in haskell.

1 Like

hey @mrreason thanks for letting me know. i have linked Ableton and Tidal with the carabiner but my latency is still a big issue. Ableton is about 1/32 of a beat late and i have been tweaking for an hour trying to iron it out.

Just to be sure, does Ableton Live and Carabiner looks similar to this?

And can you change the global speed in Ableton, so that it's effects the TidalCycles speed?

If this is the case, try to change the latency in your startup script. I set the latency for me in this way: s.latency = 0.3
In which OS do you try it an do you use your onboard sound card?

[Edit:] Now that I rethink about it, I don't think the sound card should cause a problem because the problem seems to be with the internal audio routing. So it's interesting to know if you're running Windows with Jackd or MacOS with Blackhole.

hey! thanks for the reply. below is what my setup looks like. i am using OSX Catalina with UA Apollo. i am curious if my overall latency in Ableton is causing the issue...47.0ms...

i had actually set my s.latency in SC to 0.0 but changing it back to the default 0.3 just now did not seem to help.