← Back to context

Comment by solomonb

21 days ago

100% agree.

I think this format of composition is going to encourage a highly repetitive structure to your music. Good programming languages constrain and prevent the construction of bad programs. Applying that to music is effectively going to give you quantization of every dimension of composition.

I'm sure its possible to break out of that but you are fighting an uphill battle.

Quite the opposite actually. certain live coding languages give you the tools to create extremely complex patterns in a very controlled manner, in ways you simply wouldn't be able to do via any other method. the most popular artist exploring these ideas is Kindohm, who is sort of an ambassador figure for the TidalCycles language. Having used TidalCycles myself, the language lends itself particularly well to this kind of stuff as opposed to more traditional song/track structures. And yet it also constrains and prevents the construction of bad programs in a very strict manner via its type system and compiler.

It's also notable for being probably the only Haskell library used almost exclusively by people with no prior knowledge of Haskell, which is an insane feat in itself.

  • > Quite the opposite actually. certain live coding languages give you the tools to create extremely complex patterns

    I think I must not be expressing myself well. These tools seem to be optimized for parametric pattern manipulation. You essentially declare patterns, apply transformations to them, and then play them back in loops. The whole paradigm is going to encourage a very specific style of composition where repeating structures and their variations are the primary organizational principle.

    Again, I'm not trying to critique the styles of music that lend themselves well to these tools.

    > And yet it also constrains and prevents the construction of bad programs in a very strict manner via its type system and compiler.

    Looking at the examples in their documentation, all I see are examples like:

        d1 $ sound "[[bd [bd bd bd bd]] bd sn:5] [bd sn:3]"
    

    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?

    > It's also notable for being probably the only Haskell library used almost exclusively by people with no prior knowledge of Haskell, which is an insane feat in itself.

    I think Pandoc or Shellcheck would win on this metric.

    • > 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é!

      1 reply →

The ease of quantization in the DAW is pretty easy to do as well. So I am not sure that would be unique to music / live coding sessions.

  • It is unique because everything is quantized. I've never used these tools but I am assuming you could give it some level of randomness but as someone who has performed and recorded a non-quantized performance is not random. So sure, it's super easy to quantize in your daw but it is a tool to be applied when needed, not something that is on all the time by default.

    • yes exactly, and when I say "quantization of every dimension of composition" I mean an application of quantization to every aspect of composition not just pitch and rhythm.

      2 replies →

Some of us enjoy highly repetitive music, at least some of the time.

"Computer games don't affect kids. If Pac Man affected us as kids, we'd all be running around in darkened rooms, munching pills and listening to repetitive music." -- Marcus Brigstocke (probably?)

Also, related but not - YouTube's algorithm gave me this the other day - showing how to reconstruct the beat of Blue Monday by New Order:

https://www.youtube.com/watch?v=msZCv0_rBO4

  • I'm not saying anything negative about repetitive music. I'm saying that tools like live coding are going to constrain the kind of music you can produce reasonably.

    • I mean, sure, art has constraints.

      My sister likes to work with [checks notes carefully to avoid the wrong words] old textiles. This of course constrains the kind of art she can make. That's the whole point.

      I see live coding the same way as the harp, or a loop sampler, an instrument, one of an enormous variety of tools which you might find suits you or not. As performance I actually enjoy live coding far more than most ways to make music, although I thought Amon Tobin's ISAM Live was amazing that's because of the visuals.

      5 replies →

I've suspected that, too, while looking at DAWs and how people make music with them. It seems a bit boring to me.

To kinda get away from that or even just experiment, I was interested in the possibility of writing music with code and either inject randomness in places or at least vary the intervals between beats/etc using some other functions (which would again just be layering in patterns, but in a more subtle way).