Description:

Our website allows you to submit a youtube link for a music video and generate up to 5 (or more) "Shared BPM" videos. These shared BPM videos are the same video as the starting point, but with replaced audio from a song with the exact same tempo (BPM) as the original.

Inspiration:

One of our teammates has a lot of background in signal processing, so the project idea brainstorming started in the sphere of audio. In the first few hours, the ideas were narrowed down to something we thought could be fun, interesting, and a significant challenge to execute successfully.

What it does:

Our website allows you to submit a youtube link for a music video and generate up to 5 (or more) "Shared BPM" videos. These shared BPM videos are the same video as the starting point, but with replaced audio from a song with the exact same tempo (BPM) as the original.

How we built it:

At its core, it is a Flask web app (written in Python). Much of the data was gathered through various web scraping (also done in python). The main BPM approximation was done in python using a combination of filters, audio transforms, and analysis techniques.

Challenges we ran into:

The initial challenge was getting the best options for songs to match up to a video (i.e. not too obscure, not too similar in style - to keep things interesting, and obviously the correct matching bpm). Other challenges included: tweaking/testing/calibrating the bpm approximater, optimizing the video building process to its fullest, and displaying the result in an effective way.

Accomplishments that we're proud of:

The fact that we have a functioning product is an accomplishment in and of itself. But in addition, the fact that the bpm approximator was able to work at all was a big accomplishment. And the fact that our tool actually generated some funny shared bpm videos was also something to be proud of.

What we learned:

Some tools we learned more about were ffmpeg, moviepy, pytube, and google's youtube api. In addition, we all learned more about signal processing and subsequently some music theory.

What's next:

The next features would be about enhancing the robustness of it. This would include have an autocomplete youtube search within the page instead of a simple textbox for a youtube link. Also, potentially displaying the overlayed audio's album art and information more nicely could be potential features.

Built with:

Flask, MoviePy, Pytube, SciPy, and various other Python libraries

Prizes we're going for:

Arteck HB030 Portable Keyboard

Google Home Mini

Intel® Movidius™ Neural Compute Stick

$100 Amazon Gift Cards

Grand Prize

Jetbrains Pro Software

Team Members

David Malakh, Daniel Guddemi, Skyler Szot
View on Github