Tidal 1.7 control busses + midi control input = ❤️

Hi all,

[update] there is now control bus documentation!
https://tidalcycles.org/docs/reference/control_busses

I thought I'd share a very short experiment with the new control busses and midi input in tidal 1.7 - this immediately reactive control is something that I really missed when I first started getting into tidal, and I didn't have the patience to plumb the setup externally.

I'm twiddling knobs on a novation launchkey mini, mapped to djf, squiz, room and size respectively

d1 
    $ slow 2                    
    $ n "<d6'm9 g6'dom7'ii c6'maj7 c5'maj7'iii >"
    # s "superhoover"
    # djfbus 1 (cF 0.5 "21")  
    # squizbus 2 (7 * "^22" + 1)
    # roombus 3 ("^23")          
    # sizebus 4 ("^24")
    # cps 0.4
    # legato 1.05
16 Likes

very nice !! I'm thinking of building a custom keyboard for tidal with some knobs and faders!

5 Likes

I'm going to assume you mean a typing keyboard (as opposed to an instrument keyboard)? it sounds super cool! would love to see a worklog once you get going :slight_smile:

2 Likes

haha yeah you're right! should have specified :smiley:
yeah I'll definitely post something when I get to it :slight_smile: exam period is almost over so I'll have some free time coming up soon :slight_smile:

Aweesome! yeah, I always missed that continuos control of params, and now that I can do it, I realized that using the 'faders' on my launchpad mini aren't as smooth as I thought (you can really listen the steps!!)

1 Like

Hi @cleary could you explain how you assign Tidal parameters to your midi knobs controller in your example? Syntax seems different depending on parameter ?
Thanks.

Of course!

This is the longhand version:

    # djfbus 1 (cF 0.5 "21")  

It says listen to midi CC #21, regard the incoming values as a Float (cF), and superdirt does some magic in the background to convert the 0-127 value range to be read as 0-1 instead, and set the initial value at 0.5

This is the shorthand version - listen to CC #23, no default initial value (the same 0-1 range magic is in place):

    # roombus 3 ("^23")    

This is more complicated because squiz doesn't operate in a 0-1 range - in fact 0-1 squiz is not applied at all, it doesn't kick in until values > 1

    # squizbus 2 (7 * "^22" + 1)

I actually can't remember why the maths employed here was chosen... it could do with some validation, but the rationale is based on squiz being ranged in a non-standard way

Hope that helps :slight_smile:

1 Like

Thanks a lot @cleary that's clear now.
Second question, I don't understand how tidal maps this CC with rigth midi controller.
I added that in Supercollider to declare my komplete keyboard in order using its knobs:
MIDIClient.init;

	~midiOut1 = MIDIOut.newByName("pcMidi1", "pcMidi1"); //
	~midiOut2 = MIDIOut.newByName("pcMidi2", "pcMidi2"); //
	~midiOut3 = MIDIOut.newByName("KOMPLETE KONTROL M32 MIDI", "KOMPLETE KONTROL M32 MIDI"); //

	~dirt.soundLibrary.addMIDI(\midi1, ~midiOut1);
	~dirt.soundLibrary.addMIDI(\midi2, ~midiOut2);
	~dirt.soundLibrary.addMIDI(\midi3, ~midiOut3);

	~midiOut1.latency = 0.45;
	~midiOut2.latency = 0.45;
	~midiOut3.latency = 0.45;

But nothing is working. I suppose there is some tidal lines of code to add like when i want to use a midi synth but i don't found.
Thanks a lot.

2 Likes

@cleary , I apologize, I forgot to launch midi -> osc mapping on supercollider. Now it's working !!!
Thank you it's a great feature.

1 Like