logoalt Hacker News

rbn3yesterday at 10:24 PM1 replyview on HN

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.


Replies

solomonbyesterday at 11:59 PM

> 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.