Show HN: CLAVIER-36 – A programming environment for generative music

clavier36.com

91 points by river_dillon 9 hours ago

CLAVIER-36 is a programming environment for generative music. Programs are laid out in a two-dimensional grid, and evolve over time according to a fixed set of rules. The system is much like a cellular automaton, in that most of the rules governing the evolution of the system are local.

C36 programs describe sequences of discrete events in time. The environment includes a primitive sampler, as a self-contained means of interpreting these events as sound. For full expressivity, though, the system is best used as a generator of data for interpretation by an external musical instrument, such as a synthesizer.

The project was very directly inspired by Orca (https://100r.co/site/orca.html). It began as my own from-scratch implementation of Orca and diverged over time.

It's written in C, and compiled to WASM for the browser.

See the following pages for more info:

about page: https://clavier36.com/about

user manual: https://clavier36.com/manual

tutorial video: https://youtu.be/rIpQmJVMjCA

gregsadetsky 9 hours ago

River (the software author) worked on this during his time at the Recurse Center and it’s been amazing to see him develop it all from scratch in C. (I contributed 2.5 lines of code on the web deployment/firebase side).

He’s a friend, but I am very unbiased in saying that the sample-rate execution of the entire grid seems like an incredible technical achievement.

One of the craziest (super super noisy but fascinating to watch) grids uses just a few “operators” that generate random operators and random values, and place them at random location.

That grid runs - easily! in the browser!! - at 1000 bpm. Forget 60 fps :)

I’ll update my comment linking to this patch so you can take a listen. It’s stunning, organic and very punk.

  • gregsadetsky 4 hours ago

    EDIT: sorry, got away for a few hours

    This is the patch:

    WARNING - GETS SUPER SUPER LOUD https://clavier36.com/p/tEWcc48tFPm8qiyx9ljo WARNING - GETS SUPER SUPER LOUD

    Zoom out using your mouse wheel/trackpad to see it all. It's realllly gorgeous if you let it run. But super, super loud at random times :-)

  • kookamamie 8 hours ago

    I'm curious - was it two and a half lines of code you contributed?

    • gregsadetsky 7 hours ago

      I was saying that in jest, ha. More like 2.5% of the code.

      Very briefly, I contributed the CI pipeline that makes git push build the wasm and deploy it to a micro server that sets the specific required headers. I used the deployment tool I’ve been working on with a friend, which is called Disco.

      There was something about wasm/the audio worklet requiring super specific headers - `Cross-Origin-Embedder-Policy: require-corp` … Nothing too complicated.

      The other part I contributed is the loading/saving patches to Firebase, which lets people share compositions.

      But all of the audio, grid, ui is all River’s!

rwhaling 2 hours ago

CLAVIER is amazing, the wire system alone is such a huge improvement over ORCA, and it's now feasible to make much larger patches and refactor safely, kudos to River for all the hard work on the polish and quality-of-life.

I was testing MIDI on a prerelease build last weekend and it turned out quite nice: https://www.instagram.com/p/DOUUIfeEQWY/

Excited for more folks to get to play with it!

nielsbot 6 hours ago

Cool project. I've referred people to Orca before--and the lack of "built in instruments" (and maybe the flow visualization) was a stumbling block. This feels more "consumer friendly" :)

santiagobasulto 3 hours ago

Off topic: where did you get the name from? There's a town Clavier (Claviere in French) in the Italian/French alps.

  • gregsadetsky 2 hours ago

    Clavier is keyboard in French and German (Klavier)

    36 because, just like base64 uses 64 characters, clavier uses A-Z and 0-9 :-)

sammy0910 6 hours ago

this is a neat project! i know river and he is a very good engineer

xeonax 8 hours ago

Can you see if you can serve the static files over cdn, might speed up the site loading speed. claviar.wasm took 4 minutes to load here. 200MBPS connection

  • gregsadetsky 7 hours ago

    Apologies, I’ll setup a proper CDN and update this message once it’s live. Thanks for the report!

qwertytyyuu 8 hours ago

It doesn’t seem to load…

  • gregsadetsky 7 hours ago

    Apologies, it may have to do with the server. I’m on it and will update this message once it’s fixed/better. Thanks!

    • 2b3a51 6 hours ago

      UK and Firefox 128-esr on linux appears to be loading and working ok