81 notes toggled · 0 scrubs · 82 lit now
A shared step sequencer: everyone edits the same 16-step loop live, each in a sound of their own, and every browser plays it on the same beat.
What fold does here
Every toggle is an edit in a history, with a list of edits in force, so the loop can be scrubbed back like the chess board. The grid is a view: the latest edit at each cell. Each player's sound is a row of settings, joined to their notes, so every lit cell carries its player's sound. The tempo is shared state too.
Fold keeps the tempo between 60 and 200, and gives each player a budget of 16 notes, refilling one every two seconds. That budget is a rule over a computed view: a note you can't afford is refused.
Why it shows off fold
The join is the showcase. Turn your filter knob and fold updates one row of settings; the join carries that change to every one of your notes at once, so your whole part re-voices live for everyone. Undo is the other: scrubbing rewinds the grid, the budget and the counts together, because they're all built on the same history.
Worth trying
- Open Sound and turn a knob while the loop plays: Inspect shows one change becoming a change on every note.
- Scrub back through the history, then edit: the later edits are dropped.
- Spend your budget and watch the note chip refill.
Still app code
Keeping time and making sound. Each browser works out the beat from the server's clock and plays it with Tone.js, through each player's synth, filter, delay and reverb, so the network never touches the beat.
Press \ in the app to watch fold's commits as they happen.