we wanted to make the relaxing effects of lo-fi beats accessible to everyone, no matter their music taste.
what it does
lo-fi-fy is a website where the user can upload an mp3 file and input the bpm and key of the song, and then press the play button to generate a new lo-fi sample of the song that can be played through the browser or downloaded.
how we built it
the core of lofi-fy is an express.js web server that accepts data submitted through the front-end, lofi-fy-s it with supercollider and ffmpeg, and plays it back through the browser.
our front-end is a web page written with bootstrap that lets anyone upload an mp3 to the server for processing, then relax/study to the new lofi beat when it's finished. to manipulate the music data, we used supercollider, a free and open source audio engine for composing and synthesizing music, as well as foxdot, a plugin for supercollider with python hooks.
challenges we ran into
- getting foxdot to run
- getting foxdot to run without crashing almost immediately
- getting foxdot to run to completion
- getting foxdot to output a file
- getting foxdot to output a file with actual audio
- getting foxdot to output a file with the intended audio
- getting foxdot to reliably manipulate the bpm of a sample
accomplishments that we're proud of
we are proud of overcoming foxdot 's many shortcomings to build a tool that brings more sick lofi beats into this world. we want to make the world more chill and relaxed, and with this project, we have achieved our goal.
what we learned
this project forced all of us outside of our comfort zones, as we all had to learn new skills to be successful as a team. from learning html and css, to learning how a server works, to learning how to use a jank music editor to create lofi beats, everyone was able to gain from building this project.
what's next for lo-fi-fy
- allow the user to upload a spotify playlist or name a song on youtube rather than an mp3 file
- automatically detecting the bpm of a given song
- more robust system architecture allowing many users to use it at once
- increasing the variety of drum samples