Inspiration

As music fans, there's nothing we like more than being surrounded by awesome groves and passionate musicians. As most of you have heard a million times, the pandemic has forced us to discover new and creative ways of engaging with others. This is why we've decided to make CrowdSong: the open-sourced crowdsourcing musical extravaganza!

What it does

Combine DAW (digital audio workstation) technology and social media together, what do you get? You guessed it! CrowdSong is a platform for sharing and interacting with other's music projects. Using our website, you can either create a track or put your own spin on someone else's. We have support for both MIDI and audio input too!

How we built it

CrowdSong is primarily built using React for the UI, alongside some javascript for processing inputs. To do so, the website made use of the Web Audio API, which also provided functionality for the basic oscillator synthesizer we implemented.

Challenges we ran into

Our primary difficulty was the scale of the project: Turns out building an in-browser DAW isn't so easy after all! In particular, coding the animations in React and figuring out ways to make the timings tight proved to be quite challenging.

Accomplishments that we're proud of

Our team is proud to have produced a functioning prototype at all, given the amount of things we had to implement.

What we learned

Most of us were relatively unfamiliar with Javascript, providing us with a rich learning experience. We also acquired a better understanding of DSP (Digital Sound Processing) and the complexity that high quality sound brings to the table.

What's next for CrowdSong

There's ample room for exciting new features to be implemented. Here are a few that we think could really improve the project:

  • A better home page, with a user-personalized feed
  • Virtual MIDI keyboard
  • Having more instrument options for the MIDI tracks
  • Implementing filters and effects for both MIDI and audio tracks
  • possible support for VSTs created by the user
Share this project:

Updates