← Back to context

Comment by rbn3

21 days ago

> So it definitely isn't leveraging GHC's typechecker for your compositions. Is the TidalCycles runtime doing some kind of runtime typechecking on whatever it parses from these strings?

the runtime is GHC (well GHCi actually). tidal's type system (and thus GHC's typechecker) ensures that only computationally valid pattern transformations can be composed together. if you're interested in the type system here's a good overview from a programmer's perspective https://www.imn.htwk-leipzig.de/~waldmann/etc/untutorial/tc/...

these strings are a special case, they're formatted in "mini-notation" which is parsed into composed functions at runtime. a very expressive kind of syntactic sugar you could say. while they're the most immediately obvious feature of Tidal (and have since been adapted in numerous other livecoding languages), mini-notation is really just the tip of the iceberg.

>The whole paradigm is going to encourage a very specific style of composition where repeating structures and their variations are the primary organizational principle.

but that applies to virtually all music, from bach to coltrane to the beatles! my point is that despite what the average livecoder might stream/perform online, live coding languages are certainly not restricted to or even particularly geared towards repetitive dance music - it just happens that that's a common denominator of the kind of demographic who's interested in livecoding music in the first place.

i'd argue that (assuming sufficient knowledge of the underlying theory) composing a fugue in the style of bach is much easier in tidal than in a DAW or other music software. on the more experimental end, a composition in which no measure ever repeats fully is trivial to realize in tidalcycles - it takes only a handful of lines of code to build up a stochastic composition based on markov chains, perlin noise and conditional pattern transformations. via the latter you can actually sculpt these generative processes into something that sounds intentional and follows some inner logic rather than just being random.

the text-based interface makes it much easier to use than anything GUI-based. it's all just pure functions that you can compose together, you could almost say that Tidal is like a musical equivalent of shell programs and pipes. equally useful and expressive both for a 10 year old and a CS professor.

>I think Pandoc or Shellcheck would win on this metric.

touché!

> i'd argue that ... composing a fugue in the style of bach is much easier in tidal than in a DAW or other music software. on the more experimental end, a composition in which no measure ever repeats fully is trivial to realize in tidalcycles - it takes only a handful of lines of code to build up a stochastic composition based on markov chains, perlin noise and conditional pattern transformations. via the latter you can actually sculpt these generative processes into something that sounds intentional and follows some inner logic rather than just being random.

I agree that it's easier to build a composition in a coding environment that uses stochastic models, markov chains, noise, conditions, etc. But I don't think that actually makes for compelling music. It can render a rough facsimile of the structure, but the result is uncanny. The magic is still in the tiny choices and long arc of the composition. Leaving it to randomness is not sufficient.

Bach's style of composition _is_ broadly algorithmic. So much so that his style is taught in conservatories as the foundational rules of Western multi-voice writing, but it's still not a perfect machine. Taste and judgment have to be exercised at key moments in the composition on a micro level. You can intellectually understand florid counterpoint on a rules-based level, but you still have to listen to what's being written to decide if it's musically compelling or if it needs to be revised.

The proof is in the pudding. If coded music were that good, we would be able to list composers who work in this manner. We might even have charting music. But we don't, and the best work is still being done with instruments in hand, or written on a staff, or sequenced in a DAW.

I want this paradigm to work - and perhaps it can - but I've yet to hear work that lives up to the promise.