Given the Coronavirus, many students taking a music course have an environment that is far from traditional. As students who have experience with music, we have first-hand experience of what this is like. To solve this, our team created Harmony.
What it does
Harmony is a web application that allows near-synchronous collaboration between musicians, with a focus on educational applications. When one arrives at the website, they can either enter a meeting code to join an existing room or create their own room. On creation, they are asked to enter a tempo to provide a standardized metronome for all members in the room. Once in the room, all members can record at their own pace with the metronome in their ear. The creator will have their own custom screen where they can see the various recordings, isolate recordings of their choice, and more giving them the opportunity to provide instantaneous feedback. Additionally, all clips can be played at the same time on the creator screen, so Harmony allows tracks to “merge” where traditionally students cant play together.
How we built it
Challenges we ran into
Unfortunately, due to some issues with the library we were using for audio visualization and playing (Peaks.js), so while the audio visualization shows the actual audio transferred, it unfortunately does not play back yet. Instead, a substitute sample audio file is played.
Accomplishments that we're proud of
We incorporated peer-to-peer (P2P) communication using Peer.js, so file transfers bypass central servers and are much faster.
What we learned
We learned Svelte and Peer.js for the first time, along with pretty much all the other libraries we used.
What's next for Harmony
We plan to fix that bug with audio playback, and add more features like synchronous recording, basic audio offset editing, and exporting audio to a file.