Multiplayer Music Progress Update: We have a connection!

I’ve been grappling with NodeJS and trying to integrate it with the Web Audio API for a few weeks, and feel like I’ve got enough to warrant a decent update to how it’s going. I started to learn NodeJS using game development tutorials for online games, as they are much more documented, and share so much with the ideas I am working on. From this I currently have:

  • A shared canvas interface – A player can connect and move their dot around the screen, with the movements being reflected on another player’s screen. This is quite a big step as it means that I can hopefully make the jump from X and Y coordinates for a dot onto for example choosing pitch and notes on a synth.
  • An update loop from a server to each player’s client- this means that everyone is seeing each other in almost real time, but also enables me to push information from the server itself out to players, which could be things like timing information such as the current bar or what part of a song is being played.
  • A form of communication: currently it’s a basic chat window, but I’m hoping to create a more intuitive gesture system from this which lets performers have something much less cumbersome than talking or typing while playing their instruments.
  • A basic MongoDB database – this might be a loose end, but I’m hoping to store player information, or even presets for instruments…possibly that might be how I catalogue instruments, songs… It’s all got to go somewhere so I’m hoping it’ll be of use later on in the project.


The next steps are:

  • Have a proof of concept where every player controls two synth parameters using their dot’s position on the screen. This will involve creating a single synth for each player when they first connect, and then tying up their coordinates with the synth’s parameters. It’ll be tricky given that the players who are already connected will need that update, and a lot of the game tutorials I follow gloss over this initialisation, as they use constantly updating images and such (but if you create a new synth every frame it’ll be extremely performance intensive).
  • Improve the chat UI with buttons for “quick gestures” such as a thumbs up to express liking what another player is doing. These will need to be thought out so as not to be a distraction, but enough to be noticeable to a performing musician.
  • Fix my MongoDB database (again…), currently I am in need of sorting out my database to stop it crashing my project at runtime, but hopefully I’ll get to the bottom of that as soon as possible.


Does anyone have any suggestions for the project? Please feel free to leave a comment below! 🙂

I’ll try to keep the page updated with updates to the Synth Museum Project as well- at the time of writing, the most recent post on that project is the Montron Inspired Synth (Version 1).

Leave a Reply