when you have more and more interactions on the gui web audio api will become a problem, check out audioworklet.
I am developing https://glicol.org/ and it has a js port on https://glicol.js.org/ a typical usecase is drum machine with very high time accuracy
2 small requests that (I think) would help with the UX: consider moving (or duplicating) the play button - maybe directly in the middle below the editor, or on that panel itself. It took me a few confusing seconds to realise where it was. Also, could you consider making each fourth (or first) column a very slightly lighter grey? So if I want my kick on 1, 3, 10 and 11 it's really easy to see where to click without counting?
This could be a component logic; a row of drop downs for customizing the UI and a good examples are color and grid count. This could even be a toml/json config file that can be imported/exported.
My own addition is ability to import samples from my own device.
To be clear, this is pure curiosity on my part as I love Clojure(Script) and am consistently missing it during my day job.
One thing I'd find frustrating if using this when working on music: "When beat is playing, get new sample for drum plays as soon as it generates".
If "this sample is programmed to play in playing beat", then it'd be good to do a silent replace, or have the option to, so that you don't get a weird unquantized snare sound, for example. I'm finding it puts me off the generated sound more if I initially hear it in a context where it doesn't fit.
Used GANs & a lot of weird hacky optimizations, can't even find the code for it anymore, but it was a great time :)
https://devfolio.co/projects/rosaline
This is all that's left of it
ClojureScript is such an awesome secret weapon for building web apps. I started building a similar web audio looping app using borkdude's scittle version of ClojureScript. Only once the app had grown substantially, did I move on to proper ClojureScript. The cljs development experience is just awesome.
One piece of feedback; I'd love an option to toggle background color of everything nth note. Makes it easier to place on beat.
One thing I notice is that the generated beats are very alike. Yeah it makes sense to play snare on the 2 and the 4, and to have kicks always fall on the downbeat, but you'd get more creative grooves if you allow for some more variation there.
It could even be a slider that allows you to stray away from the common patterns.
It also includes a bunch of greek rhythms; try tsifteteli!
This is the repository for the webaudio functions <https://github.com/chr15m/cljs-dopeloop>
You can get an explanation directly from the MPC 3000 manual [0].
> Does that mean you can push the swing beats all the way to the next time slice?
At least the original MPC series couldn't move the note to the next time slice. The maximum setting was 75%. That made the first note of each pair of 1/8 or 1/16 notes three times the length of the second note.
[0]: <https://www.manualslib.com/manual/207365/Akai-Mpc-3000.html?...>
That sounds like a very normal and unremarkable swing implementation, like I've used in every DAW and sequencer. But maybe MPC did it first, and I've been using MPC-like swing this whole time.
> CTRL+F "React"
> 93 matches
Somewhere there is a React lurking :)
Guessing it's via Reagent as it's also mentioned 8 times, and is a fairly traditional approach to frontend with ClojureScript.
Seems like a cool, simple app