Synk is an application that allows a user to synchronize an action across many patrons in a room. In this case it is audio tracks played and their moment in the track synced to all listeners.


I run my own Dungeons and Dragons Campaign and stream it over Youtube so audio is a must so it isn't just silence. My players have shown interest to having live audio especially when it can set moods and give cues. We've been using Roll20 for a majority of sound and it works for general ambiance but it falls flat on creating a rich atmosphere with general sounds and varying volumes. It doesn't let the DM truly control the audio.


Simple. No product seems to do this so taking what I've learned from creating Puppeteer (another live syncing program) I can rip the socket code and reimplement it so it can handle translating audio cues and various events to everyone. As well as keeping an overall state in sync.


Synk is a side project of mine so development is not a huge part of my time as I would like. The current prototype I have is a demo of playing one song to many clients, which essentially is the bulk of the problem. I will make more blog posts on creating a synced state between all users.

Like most projects I like to break down everything I've written and write it over and over, so with this one I wanted to make sure I could completely isolate the client application from the backend. Something I haven't done as I used compilation features of laravel in the past. I've also grown fond of using laravel to deliver templates. Now however I'm going with the approach of an entirely separate client in the hopes I can port to Android using NativeScript and run create a desktop client using electron. A feature I hope to implement is streaming audio from the DM to the players in sync, however this creates an issue with permissions and whether I want to really get into WebRTC.

I think what would be a better option is linking to dropbox, box, google drive, one drive, or some other cloud provider and allowing the user to upload through the application and then create an active link to the file and let others listen to it. It does bring into question the legality of doing it, but I'm not the one streaming the audio or distributing the file. I'm merely providing a method for a DM to sync sounds. (I might need a lawyer on this one)

Synk should be an exciting project that eventually brings together some cool experiences and I'll be developing it and using it on my streams in time.