Realtime Collaborative Music Making in the Browser

Hi Lines,

Mark Fell, Rian Treanor and myself have been building a real-time collaborative sequencer in the browser. The sequencer allows you to interact with and modify an ensemble of synthesisers and pattern generators with friends and strangers no matter where you are. If you’re interested in that sort of thing, the link is here:

This evening and over the next month we have some great artists — Modern Institute, Ewa Justke, Beatrice Dillon and Errorsmith — who have generously agreed to hang out and experiment with the synth, allowing anyone to interact with the creative process live. Simply follow the link on the home page which also has dates and times. In the spirit of learning/sharing as well, if anyone has any questions musical/technical or otherwise feel free. The code is all available on github too:


beautiful! thanks so much for sharing this - very excited to check out


i love this idea!

my first thought, are there plans beyond virtual collabs like this? either in-person networked performances which involve the audience somehow or perhaps migrating the tool offline as a max or sc standalone app?

i’m also trying to imagine how the collaborative side of this could be preserved if ported to a hardware platform like norns (by leveraging framework behind

1 Like

You can create your own rooms to go and jam with friends or in a local space (it does require an internet connection to communicate with the websocket backend for now). Just replace the link with a room code of your own confection :slight_smile: for example will make a room with the code lines which other people can join. For convenience we have a static one set for each artist right now.

Mark, myself and Rian have talked a lot about the prospect of expanding the general idea. The initial premise was actually much simpler than what this has become and we began to imagine entire (in person) gigs with screens/terminals situated around the room allowing people to interact and shape music in real-time as well as people from outside a venue contributing online.

I dont own a norns or know much about the online platform you’ve linked to but preservation is something I have in mind. At the moment the data for this is entirely ephemeral and lives in RAM, but I have a branch of the backend which utilises a version controlled database to create persistent sessions. I’d be interested to see similar approaches explored more in other environments and domains and to let the successes of each cross pollinate :slight_smile:



very kind of you to respond so quickly…i’ll definitely set up a room to test with friends
also gonna tag @infinitedigits so he sees the topic (seems it might overlap with their interests)


feel free to prod me for code / anything of that nature too. It was newish territory for me to explore and I learned a lot so I can talk someone’s ear off !


This is lots of fun to play around with, thanks for sharing. I’m looking forward to peeking at some of the drum synth implementations later too. :slight_smile:

1 Like

Glad you enjoyed it! Some of it is custom stuff but two of the synths were Tone.js defaults :slight_smile:

this is really cool @jamesbradbury93 ! I love the ui interface and the whole idea of sharing a sequencer is really cool! I’m curious did you implement a clock synchronization so things are as-synced-as-possible? of course, for this it seems like its not really that important to have things as-synced-as-possible, unless two people are doing intersymmetric at the same time in the same room and playing audio at the same time. but the clock syncing algorithms are pretty fun to do since they give pretty good results with really simple code.


Forgive me if I at all patronise you with the details I’m about to provide. I’d be super interested in the clock syncing algorithms you mentioned :slight_smile:

The site is split into two parts, the client-side (browser) and the server-side (server). The client manages its own “clock” because it uses a web audio context created by Tone.js. All that is passed through the server is the state of the grid and the dials, as well as things like rooms and which one you belong to. This means that you are entirely desynced from everyone else unless you get lucky with starting the app. I have in the development phase tested things like having a ‘master clock’ (the first person in the room) who could trigger a sync event to other people but it got messy fast in terms of interface. What if they leave? What happens if they “troll” the room lol. Given the server doesn’t have anything to do with timing info I think it would be very hard to ensure that clients are in sync, without compromising on a solution where its ‘as in sync as possible’ by trying to match up scheduler offsets and times inside the client via messages and then reporting to each other on some kind of agreement about when to start/stop.

What kind of clock syncing algorithms do you know about?


Really beautiful work. It would make a nice sketchpad as well.

I like the idea of live performances where the audience can join in.

This one is even cooler, I’d love to learn more about the process behind it.

1 Like

We talk a bit about it here:



I just showed this to my class today :slight_smile:

I am teaching a laptop ensemble at the university here in portland and we’re planning on using the intersymmetric sequencer for one or more of our compositions. I’ll definitely be sharing any media that comes from it.

I noticed today that the AAA sequencer was having issues on our computers. Lagging or sometimes not running.


quite incredible to hear more detail on the emergence of this tool
thank you!

just watched this as well and am feeling quite inspired by intersymmetric again

btw this reminds me @jamesbradbury93 is mapping to dials/faders on a midi controller possible?
it doesn’t seem like part mark or rian do that (as far as i’m aware) so it might not have been a priority

1 Like

this is unbelievable

6 people are playing with rian right now (i think)
this might be my fav system yall have made!