Show HN: CLAVIER-36 – A programming environment for generative music
146 points
6 days ago
| 14 comments
| clavier36.com
| HN
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
6 days 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.

reply
kookamamie
6 days ago
[-]
I'm curious - was it two and a half lines of code you contributed?
reply
gregsadetsky
6 days 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!

reply
gregsadetsky
6 days 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 :-)

reply
goatking
12 hours ago
[-]
This project is really cool, love it!

How would someone start learning and implementing something like this? Like, I don't even know what keyword to put into Google.

Are there any articles, blog posts, etc. that you used while researching?

reply
nielsbot
6 days 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" :)
reply
rwhaling
6 days 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!

reply
eggy
6 days ago
[-]
Looks great, I'll have to play with it this weekend! Has a scent of Orca

https://github.com/hundredrabbits/orca

reply
pell
5 days ago
[-]
If you share this link on a public forum like HN you might want to add more than an error message for mobile devices so people might be incentivized to switch to desktop or bookmark it for later.

Otherwise really impressive.

reply
sammy0910
6 days ago
[-]
this is a neat project! i know river and he is a very good engineer
reply
xeonax
6 days 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
reply
gregsadetsky
6 days ago
[-]
Apologies, I’ll setup a proper CDN and update this message once it’s live. Thanks for the report!
reply
santiagobasulto
6 days ago
[-]
Off topic: where did you get the name from? There's a town Clavier (Claviere in French) in the Italian/French alps.
reply
gregsadetsky
6 days ago
[-]
Clavier is keyboard in French and German (Klavier)

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

reply
photonthug
6 days ago
[-]
An loanword in English, many will recognize it from Bach if nothing else https://en.wikipedia.org/wiki/The_Well-Tempered_Clavier
reply
kristopolous
6 days ago
[-]
In the video, within the first 10 seconds, I should understand the offering of the product by seeing it.

You can get into the details later but right now I've got no idea what's going on here and don't know why I should invest my time in it.

You need to motivate people by showing off the thing.

Also on the phone it just says basically "go away". Once again, show me some video, song, Bandcamp, SoundCloud, something that would motivate me to switch to a desktop.

reply
gregsadetsky
6 days ago
[-]
Apologies for the long video! I didn't want to rush too much as it's supposed to serve as a tutorial.

CLAVIER-36 is a musical instrument, so it will necessarily take some time to master it.

You can jump to 7:14 in the video - https://youtu.be/rIpQmJVMjCA?feature=shared&t=434 - to hear and see how it works. It's a grid based instrument, where you place "operators", or functions on the grid.

That's the 10 second version. The longer version will require a bit of a time investment unfortunately. But it's quite interesting once/if you get into it and start making patches.

@rwhaling posted one of his compositions: https://www.instagram.com/p/DOUUIfeEQWY/ hopefully that's more what you were looking for?

Also, if you click OP's link - https://clavier36.com/p/LtZDdcRP3haTWHErgvdM - you should be brought to an example patch. Is that working for you? Unfortunately, a mobile version is not available right now (it would be tricky to port it, without having to dramatically rethink the UI).

Cheers

reply
kristopolous
5 days ago
[-]
Thanks! Those were just tips and my first impression
reply
scloudfox
5 days ago
[-]
Its nice invention by you may i know is it a software only ya product also you are going to feature ?
reply
Teknomadix
6 days ago
[-]
I want to run this on a Steam Deck!
reply
gregsadetsky
6 days ago
[-]
Please wishlist it on Steam, it will help get the word out!

https://store.steampowered.com/app/3614060/CLAVIER36/

A Steam version is definitely coming - the biggest question re Steam Deck is how to deal with the input..

Do you use/like any other audio software on the Steam Deck?

reply
natebc
6 days ago
[-]
Wishlisted! Good luck!
reply
chris_st
6 days ago
[-]
See also [0] Ooda and Zoa on iOS and [1] Midinous on Steam

0: https://www.audiosymmetric.com/ooda.html (same person for Zoa) 1: https://midinous.com

reply
qwertytyyuu
6 days ago
[-]
It doesn’t seem to load…
reply
gregsadetsky
6 days 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!
reply
2b3a51
6 days ago
[-]
UK and Firefox 128-esr on linux appears to be loading and working ok
reply