Cracked – Method chaining/CSS-style selector web audio library

86 stephenhandley 23 5/16/2025, 2:46:18 AM github.com ↗

Comments (23)

freeamz · 16h ago
Hmm seems like the jQuery of Web Audio API? How are the browser support on mobile?

Edit: with a bit pure data flavor mixed in... super nice!

jeremyleach · 15h ago
This is wonderful - a very immediate and intuitive way to construct and create audio graphs!
stephenhandley · 17h ago
WebAudio-based library that provides quick way to set up a web audio graph.

Desktop wrapper: https://github.com/billorcutt/Cracked

Cat examples: https://idroppedmyphonethescreencracked.tumblr.com/

xipix · 14h ago
Can it handle "nodes" that emit a different number of audio samples than they consume?

I'm thinking of time stretch effects like mine https://github.com/bungee-audio-stretch/bungee

stephenhandley · 11h ago
It's basically just a wrapper around WebAudio, I've generally just used the builtin nodes, but I think you could do sample-level processing with this? https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkle...

love the demo https://bungee.parabolaresearch.com/change-audio-speed-pitch

have you thought about wrapping it as an audio unit or vst via juce/clap/iplug so its usable in a daw?

https://juce.com/ https://cleveraudio.org/developers-getting-started/ https://github.com/iPlug2/iPlug2

chaosprint · 11h ago
if you are looking for some performant declarative web audio lib in js, check:

https://glicol.js.org/

it's ported from Rust

stephenhandley · 11h ago
looks cool but wasn't able to get audio output from the stackblitz demo
wesz · 17h ago
This is brilliant! I'm gonna use it to prototype synths for my drum patterns/bass lines website.
gravitronic · 9h ago
You should check out webaudiomodules and sequencer party.
tristanMatthias · 15h ago
Would love to plug this into https://synthia.app
stephenhandley · 11h ago
cool app. maybe its already possible but i'm missing how but would be awesome if dragging a new node between an existing connection it would automatically insert it between the nodes to avoid the steps to disconnect / reconnect
jeremyleach · 14h ago
Nice app!
nailer · 16h ago
Just in case you scrolled past it, the live demo was in the github website link:

https://idroppedmyphonethescreencracked.tumblr.com/

thenthenthen · 5h ago
I think i-dropped-my-phone-in-the-toilet-and-the-audio-stopped-working-and-yes-i-checked-the-mute-switch because it does not seem to generate any sound on iOS Safari, not supported?
hdjrudni · 15h ago
THese all sound awful. I don't get it.
stephenhandley · 11h ago
You didn't even like this one!? https://idroppedmyphonethescreencracked.tumblr.com/post/9350...

That said, guessing a bunch of those are meant to be concise examples.

For what its worth my quick take on a lot of the text-based sound coding environments [1] is that they provide a relatively quick way to approach creating audio programmatically differently compared to a more traditional spatial / grid-based daw.

One nice thing about Cracked is that you can treat it as an audio input in Ableton, Logic, etc. and so you could use it to generate a sound to sample / process further in a daw arrangement. I had stumbled across it originally from the author's Wikipedia page which mentions that he uses it to create longer albums / pieces https://en.wikipedia.org/wiki/Bill_Orcutt

Interview with him about it https://www.thewire.co.uk/news/41540/bill-orcutt-releases-op...

[1] https://tidalcycles.org/ https://sonic-pi.net/ https://chuck.stanford.edu/ https://supercollider.github.io/

promiseofbeans · 15h ago
I think the idea is that you can use this to build synths that you then control woth midi, etc
DrSiemer · 14h ago
Would this also work for adding effects to existing audio? A simple reverb and pitch bend on a recorded vocal would make me a lot more excited than experimental synth effects.
phantomathkg · 16h ago
Interesting library with a rather weird name.
mattigames · 14h ago
Its just social engineering to make people who drop their phones get involved in audio creation.
noelwelsh · 12h ago
I find the underlying premise a bit odd. I can name values in Javascript just fine:

const whatever = ...

I would rather refer to them by these names than by strings. It's both faster and safer to do so.

zamadatix · 2h ago
This provides ID + class based selection of nodes with a syntax which allows combining multiple filters. It's more akin to the methodology of selecting nodes in the DOM than just providing a name alone.
gitroom · 14h ago
This is super cool, Im definitely gonna mess around with it for my own synth experiments!