Inspiration
Recently, the covid-19 pandemic has forced us into social distancing measures, and playing music together has become nearly impossible. When I found out that students could not make music together in their classes, I was devastated. Playing music with others can provide one with a huge sense of community, and the feeling of creating sound as a team is an experience like no other to me. I've also found that many mainstream video-communication services do not provide ways for musicians to play together easily in real time. For example, latency is a huge obstacle, causing most to fall out of sync with each other. This is what inspired me to create my own video-communication service for musicians.
What it does
This video-communication service, which is called MusicJam, aims to provide a way for musicians to collaborate on music synchronously. As of now, MusicJam only runs on localhost, since it is only a prototype. However, in the future it can be improved to connect musicians from different devices. This video-communication features both a metronome feature and an audio recording feature. This metronome feature can be toggled on and off using a start and stop button, and the beats per minute(bpm) of the metronome is controlled with a range slider. The purpose of the metronome is to help musicians to stay in sync despite network latency, which is important when playing music. Second, the record feature can be activated by clicking the record button, and then stop recording using the stop button. Following this, the application will automatically playback the recording. This recording can then be downloaded as a raw text file, then the user can convert this into an mp3 file.
How I built it
This project was built on a basic webrtc video conferencing app from here. I added the metronome and recording features myself, and changed the look of the video conferencing app.
Challenges I ran into
The metronome and recording features were some pretty big challenges. It was also difficult to put all of these features into one file, while making sure that they still function.
Accomplishments that I'm proud of
I'm mainly proud of being able to put together all the pieces of this project. This was challenging so I felt proud when the project worked.
What I learned
I learned a lot about webrtc during this project, as well as the issues of timekeeping in javascript while dealing with the metronome.
What's next for MusicJam
The next steps for this video conferencing app is to actually be able to communicate between devices and adding features to improve the user experience.
Log in or sign up for Devpost to join the conversation.