Live stream #8 - TidalCycles x DAWs with Jack Armitage

Commissioned live stream coming up! @jarm was going to record a video about linking TidalCycles with DAWs, but decided to do it as a live stream instead..


If this is past your bed time, feel free to ask questions below in advance.

This is ostensibly part of the overrunning week 8 of tidal club, but open to both @cycle0 and @cycle1.

Over to Jack w/ details !


YEEEEES! Very much looking forward to this. :smile:

1 Like

Hey y'all. I've been really enjoying reading this forum; seeing the joy and excitement of people learning Tidal for the first time, and the impressive creativity being shared.

I feel like I'm working towards a proper video covering Tidal and audio workstations. However a lot has been changing in my setup lately, so doing it as a live stream will probably be helpful to me and more accessible for others.

(If you're unfamiliar with my work, the Lil Data YouTube channel would be the most relevant place to find out)

My system is biased in that I use Emacs as my editor, a commercial virtual audio software called Loopback for routing (although I'm checking out the open source Blackhole lately), and Logic Pro X and more recently Bitwig for audio work. And musically, I have for the most part been focused on pushing the horizon of Tidal in a pop context, though I've also done some ambient music and started performing in ensembles last year too. In any case, I'll try to keep things as generally useful as possible.

It will be slightly ad-hoc, but these are some of the topics I hope we can cover:

DAWs: Audio, MIDI & Sync


  • Writing (new) custom Tidal OSC specs
  • Wrapping custom OSC into user friendly shortcuts
  • Using custom OSC to control a DAW

Tidal tips

  • Exercises and heuristics for learning Tidal
  • How I manage my Tidal composition code
  • A tour of my Tidal library jarmlib (which I'll try to update this week)

Music Production tips

  • How I approach producing tracks started in Tidal
  • Recording patterns
  • Rearranging patterns

Live Performance tips

  • Designing DAW templates for live coding performance
  • How I prepare for a performance
  • How I rehearse a performance
  • How I perform live with Tidal
  • The importance of reflecting on performances

Please add your +1's to the above and let me know what else you are interested in (I'm happy to talk about Tidal more from an artistic/cultural perspective as well, if prompted).


In terms of streaming, I am thinking to simulcast between my Lil Data YouTube and Twitch accounts.

1 Like

Sounds great!
I think producing/performing with a Tidal/DAW is a very powerful combo, there's many ways to approach such a hybrid setup so really looking forward to some insight on that (especially when it comes to performance).
Also wondering if it's all in the box or do you also use hardware?

1 Like

I don’t have any hardware in my setup currently. Contemporary hardware synths are sadly not “livecodeable” to the extreme degree that I desire (if you know of a synth that can be low level programmed via OSC, let me know!).

In my other life (PhD) I design musical instruments and interfaces and have done a little exploration there with Last year I played a singing bowl from Tidal using a vibration transducer which was fun.

With the new Tidal OSC, which will hopefully also be extended to controller input (, I am going to be exploring this area much more seriously in the near future :blush:


Excited for this thanks. And the syllabus looks great in general.

As far as 'sync' goes I'm curious how you think about that for DAW's with Link and for those without (i.e. Bitwig and Logic). I'm also curious to see the OSC integration between Tidal at Bitwig if there's time. In general I'm interested in the studio integration/production side of this talk for whatever that's worth. Cheers!

1 Like


I'm so, so looking forward to watching it ! Don't know if I can make it on time, but supposed it'll be possible to watch a replay.
I don't really have questions, as I'm already using Tidal to pilot Live 10 and soft-synths and have found workarounds whenever needed.
I bet I'll learn a lot though :smiley:

1 Like

Really looking forward to this too - it's several steps beyond where I am at right now, but it's nice to get a view of the mountain still to be climbed :wink:

I'll also only be able to catch the first hour unfortunately - will it be replayable?

Assuming no technical issues, the stream will be archived


Hey There, thanks a lot for this. Stupid question though, how long is the stream planned to last ?

Hey, about to go live, it's going to be at

Probably a couple of hours long depending on how it goes


When will the stream be available offline?

It's still at for now, archiving to YouTube long term

Thanks everyone who joined, hope it was useful/interesting

We can continue the conversation here - some things are easier in writing!


Really interested to see how the Tidal/OSC/Bitwig stuff progresses!

Wow. That live stream was amazing. Echoing cleary in that the info presented is many steps beyond my capability - but that has never stopped me before. I'm really struggling trying to install the library. I've changed all the \path\to\here references, but keep getting multiple variable not in scope errors. I am particularly interested in using the harmonise custom function. I tried just placing :script D:/jarmlib/tidal/lib/Lib.hs in my Boot file, but then I get another variable not in scope error:
* Variable not in scope:
harmonise :: [Char] -> [Char] -> Pattern Double
* Perhaps you meant `harmonic' (imported from Sound.Tidal.Context)

Can't figure out what I'm doing wrong install-wise.

Best thing to do is to comment out :script imports until it works and go forward from there

Ah yes! Thanks Jack. I've done that, but now need to figure out usage. Apologies for my underdeveloped programming skills. By way, thanks again for the stream. It is very helpful!

d1 $ n (harmonise 3 5 4 2 1) # s "bitwig" # midichan 0

results in this:

  • Couldn't match expected type Integer -> Integer -> Integer -> Pattern Double' with actual type Pattern Double'
    • The function harmonise' is applied to five arguments, but its type Pattern String -> Pattern Int -> Pattern Double'
      has only two
      In the first argument of n', namely (harmonise 3 5 4 2 1)'
      In the first argument of (#)', namely n (harmonise 3 5 4 2 1)'

And watching the stream again solved the problem. I neglected to feed it a scale.

d1 $ n (harmonise "major" "3 5 4 2 1") # s "bitwig" # midichan 0

Really brilliant stuff, Jack! Thanks.

1 Like