Month: May 2023

My publications list – updated

My publications list was missing some entries and many of the PDFs. I started uploading everything to Zenodo, but although they archive things well, it’s not ideal as a publications list, for example you can’t browse by publication date. So now I’ve switched to keeping my zotero publications list up to date. It’s really perfect for this, and it was quick to add PDFs to as much as possible – it does its best to convert any URLs/DOIs to PDF attachments. It still took a little while to tidy up, but considering how long it took to write, it is worth the little extra time and effort to make it easy to find and read!

The list is viewable here on, but probably best to view directly on Please let me know if you spot something missing.

Tidal 2.0 beatMode (TidalCycles vs TidalBeats?)

I’ve been rewriting Tidal again for a while but resisting actually using it, mostly out of a weird sense of delayed gratification.. Ideas expressed as code can get fixed once they become instrumentalised in a end-user interface..

But I’m finally starting to get a feel for Tidal 2.0. It’ll have two sides to it, the existing cycle-oriented pattern transformations, and a new realm of beat-oriented transformations. I wasn’t sure how both could be contained in the same interface, but just by renaming a function from toCycle to beatMode, I can start to get a feel for it. Here’s a tech test (not intended to sound nice!):

In ‘beat mode’, most things will look the same, but act differently. E.g. when you reverse a pattern in beatmode, the whole sequence gets reversed, rather than every cycle reversed independently. Even the mini-notation works, but becomes beat-oriented.

There’s a lot of reworking that’s gone into this. There’s now a Signal type which is like the old Pattern type, as well as a new Sequence type. Both Signals and Sequences are instances of a new Pattern typeclass. The nice thing is that the Signal and Sequences definitions are becoming mostly concerned with how to align and combine things of their type, most of the pattern operations can then be defined in terms of the more abstract Pattern typeclass.

This is only just starting to work, and already it’s fun to play with beatMode with its very strong polymetric affordance. It reminds me of early days of Tidal, when it was only beat-oriented. I love polymeter, and although the mininotation has always made it fairly easy to play with, it feels good to be able to do that outside of the mininotation without having to calculate ratios by hand.

Really though the payoffs for all this work are still to come. Coming up with a nice code interface for doing Carnatic-style addition/subtraction/manipulation of beats fluidly, following Aravind’s work. Also exciting are the possibilities of formalising alignment of sequences before combining them – I’ve been feeling my way around alignment of patterns for a while, including some prototyping in Strudel, and the possibilities feel limitless at the moment..

Of course beat representation is normally the very first thing you would implement in a music tech, using lists/2d arrays etc. It’s fun though to push against the usual grid-based approach, which tends towards score-like representations that are very much geared towards recording/transcribing, and not manipulating or indeed live coding with.. I continue to feel that staff notation, piano roll and all those DAW music interfaces that have flowed from them have really limited music, wherever they dominate. Lets see how it goes.