Synchronising Tidal with Volca sequencer

I'm trying to synchronise Tidal with my Korg Volca synths. I know I can already use Tidal to send midi notes but I want the sequencer to play at the same tempo as Tidal. Here's my (not currently working) attempt at doing this so far:

At he heart of it is Ableton Link. I followed the instructions on the Tidal website to get it connected to Ableton Link and use Carabiner as I can't get Ableton itself on Linux.

I then use the Carla plugin host which can use Jack and Ableton Link simultaneously.

In Carla I load the Midi Clock plugin which can send midi clock information over midi either to other software or down a midi cable. This works for controlling the Volca when Carla's clock source is set to Internal but for some reason when I use Ableton Link it doesn't work. I've already reported this bug here.

If that plugin worked then, in theory, the Volca would be in sync with Tidal and any tempo changes would be updated across Tidal, Carla and the Volca(s). However, it's not working because of the plugin.

Does anyone have any other solutions for synchronising Tidal with Volca synths?

1 Like

This might help you further: https://linuxmusicians.com/viewtopic.php?f=19&t=22430

You could try to use the qmidiarp plugin or standalone version and see if that works. Qmidiarp has midi clock support AFAIK

Edit: https://tidalcycles.org/index.php/MIDI_Clock

Using jack_link sounds promising. Do you know how to connect Tidal to jack_link. The current instructions specify carabiner (sock <- carabiner tidal 4 (-0.14))

For Tidal to work with Link you need a extra step (unfortunately) and launch carabiner indeed. You don't connect tidal to jack_link I think, because jack_link works using jack transport and supercollider/tidal doesn't have jack transport support.

You connect Tidal to Link via Carabiner. The application with Jack support (qmidiarp), connect to Link using jack_link (you set qmidiarp to use jack transport). But as Carla has Link support, you won't need jack_link I think, if you use a plugin in Carla.

Tidal has also midi clock support, so you might not even need to use Ableton Link and Carla. But I've no experience with midi clock.

It integrates Jack + Ableton Link so I was hoping I could run something like sock <- jack_link tidal 4 (-0.14) but I guess it's hard coded?

Thanks for posting the Tidal Midi Clock instructions. That did indeed work, but I was hoping for one that didn't use Tidal as a clock source. I'll just have to wait and see if this plugin is fixed.

Qmidiarp has only midi clock input I think.

Ardour has it probably and it syncs with jack_link. Only it doesn't follow the tempo of jack transport, so also not the Link tempo. So you need Ardour to set the tempo probably and have the same tempo setting in Link.

If you don't want to create the MIDI clock direct in TidalCycles, but you use SuperCollider, then theoretically you could automatically synchronize the tempo clock and create a MIDI clock via SuperCollider and forward it from the computer in turn. This should simplify your setup considerably I think.

The SuperCollider could look like this (taken from https://github.com/musikinformatik/SuperDirt/blob/develop/scripts/sync-to-tidal-02.scd).

(
var quant = 1.0;
~dirt.receiveAction = { |e|
	var cycle = e[\cycle];
	var cps = e[\cps];
	var latency = e[\latency];
	cycle !? {
		if(cycle % quant == 0) { // set clock only quant in cycle
			TempoClock.default.beats = cycle;
		};
	};
	cps !? {
		TempoClock.default.tempo = cps;
	};
	latency !? {
		Server.default.latency = latency;
	}
}
);

So the default TempoClock is at least synchronized with the code. If you think this approach could work for you, then I could look again how to create a MIDIClock from it.

You can try this out. With setcps in TidalCycles the default TempoClock (testable with TempoClock.default.tempo) in SuperCollider should change as well.

I do this using a pretty lofi method: I create an 8th note pattern of something really loud and short, like

d1 $ s "cp*8" # sustain 0.02 # shape 0.98 # orbit 1

and send that audio output into my volca "sync" input. It takes a bit of tweaking to get the levels right, but using this method I can get a very solid sync without using midi at all.

I also use this method to sync with other analog devices that accept an analog "clock"

does that make sense?

7 Likes

This is a really innovative solution! Out of interest do you use an interface that has more than two outputs?

2 Likes

thanks @hellocatfood ! I sort of stumbled upon it when I was building my modular synth. It still blows my mind that everything with analog synths is just voltage, and you can use anything that generates voltage to control stuff!

yes I do, I have a 4 input 4 output interface. Some other alternatives to achieve the same sort of thing without using audio are:

  • use MIDI to trigger a sound on a piece of hardware (or iOS etc) that generates a loud short sound
  • use GPIO pins on a raspberry pi or similar
  • use an arduino to generate pulses - I do this method a lot, I like to use the little program ttymidi to convert midi messages from my computer into serial messages the arduino can understand

all that said, I've also had some success generating an actual midi clock in tidal, but I don't remember exactly how I did it.. i think it was something like generating a sysex or program change message 24 times per beat, plus sending "start" or "stop" messages. But honestly I prefer analog sync anyway - it's less fiddly and I think a much tighter sync

I hope that helps! :slight_smile:

ps I really love your stuff, your art and especially glitchy-databending stuff has really really inspired me :smiley:

1 Like

I think that'd be this link that @specht linked to before: https://tidalcycles.org/index.php/MIDI_Clock works well but yeah, it is more setup than just sending sounds down a cable.

Interesting. Soundcards are amazing really, I once did a psychology experiment where reaction times needed to be really accurate. Experimental psychologists don't like using normal keyboards because of the lag and jitter involved. I ended up making a buttons that sent impulses into a sound card, the 44.1k+ samplerate just couldn't be beaten via any other method..

3 Likes

I have a korg volca sample 2 and managed to pull it off!

I used an USB connection to my volca, and this was my startup script:

MIDIClient.init;
SuperDirt.start;
s.waitForBoot {
~midiOut = MIDIOut.newByName("volca sample", "volca sample MIDI 1");
~dirt.soundLibrary.addMIDI(\midi, ~midiOut);
~midiOut.latency = 0;
};

Also, i followed the steps in this link: MIDI Clock - TidalCycles userbase

And lastly, the midi signal from tidal was routed through USB using JACK Control: https://jackaudio.org/

1 Like

I was doing the same with the volca beats recently, and tried sending midi 'start' messages with euclidean patterns etc to reset the sequence according to a pattern. Recommended as one of those simple yet amazingly effective things to do.