Inspiration
We were inspired by the struggle to compile remote recordings while musical ensembles were unable to play together in person. While playing alone will never compare to the feeling of playing live with your friends, listening to a recording that you've worked hard to create is very fulfilling.
What it does
Currently, members of an ensemble all have to record their parts separately using a common backing track, often just a metronome. PlayTogether allows members to use other members' recordings as their backing tracks, leading to more cohesive playing. As more members submit their recordings, the backing track becomes more complete, making it easier to play in time and with more energy than when recording to a metronome.
How we built it
We built PlayTogether using Python with the Flask library and deployed it to Heroku using Github Actions and Docker.
Challenges we ran into
The main challenge we faced was with ensuring the delay experienced when using PlayTogether was minimised. It is obviously very important that musicians face very little delay, which is why live versions of apps like this tend to not work so well. Whilst delay was hard to deal with at some points, we managed to reduce it enough that it is functionally unnoticeable compared to other live solutions.
Accomplishments that we're proud of
Managing to apply our knowledge from second-year courses, particularly DevOps, allowing us to quickly launch a functional and useful web app that has room for future development. Ultimately, we created a reasonably well-designed web app in a very short period of time with technologies that are very new to all of us.
What we learned
Numerous technical challenges were faced in the course of the project, mostly surrounding our unfamiliarities with JavaScript and CSS. Specifically, most members of our groups have never used Bootstrap but we are satisfied with its convenience in the end. Another thing we've done well was the delegation of tasks as it allowed for efficient parallel development with minimal merge conflicts
What's next for PlayTogether
We have added a feature to the recording webpage which scrolls through the current sheet music being played in time with the metronome. Currently, this sheet music only shows empty bars with the correct time signature, however, in the future we would like to show the actual sheet music being played, and we have implemented PlayTogether with this in mind.
Log in or sign up for Devpost to join the conversation.