What is Musicord?

Musicord is a web application that allows multiple groups of users to build collaborative playlists and stream music together.

It is written with node.js and uses sockets to synchronize playing, pausing, and skipping between tracks. In addition, Musicord takes advantage of annyang.js to provide voice commands to be accessible at or away from the keyboard.

Why did we build it in the first place?

As college students, we found that in many group settings there isn't always easy access to speakers. Though we don't have speakers, many of us have our laptops all the time. It is frustrating to not be able to coordinate the speakers in these devices for a solid audio experience. Along with this, we wanted to make collaborative playlists easily accessible so that each device owner has a say in the music being played.

Musicord makes it easy to collectively break out into song and jam with your friends on lazy afternoons. It's intuitive web interface coupled with voice recognition makes it a breeze to use while ensuring minimal latency so that you can enjoy a 360 degree audio effect while achieving virtually unlimited amplification.

Technologies and libraries that fuel this project

For this project we explored a large variety of technologies. We implemented sockets to keep the streamed audio in sync between devices and built our backend in node.js. With Spotify's api we were able to search through a large database of music to play from. Annyang.js enabled void commands, WaveSurfer.js and Granim.js provided the nice UI.

Challenges we ran into

Deploying our website on the google cloud platform proved to be more difficult than anticipated. Getting the different instances of rooms to be completely independent of each other had many obstacles.

Accomplishments that we're proud of

We're really proud of the fact that we were able to set up independent instances of rooms that play separate music. The music that is played has no lag and the spotify api gives users a large variety of music to choose from. We were also really excited to be able to synchronize audio from a web browser on Windows and MacOS. It was really cool to see up to 9 devices playing the same song in different parts of the room at once while we were testing it.

What we learned

Due to the technologies we explored before settling on our final solution, we were exposed to a far greater amount of information than seen in just the final project alone. We learned about the difficulties involving pairing time and the libraries used to tackle this problem (like socket.io).In addition to this, we are now familiar with several audio libraries in JavaScript. This of course is in addition to the APIs and languages used in the project.

What's next for Musicord?

Finish debugging and refactoring the code. Implementing the same utility with video and youtube's apis would be great too!

Share this project: