This project was inspired by a deep dive into Kanye West's unreleased discography. I (Cody) discovered two interesting things that would form the main use cases for my project:

  1. Your favorite songs' original samples are so far removed from the listening experience they might as well not exist
  2. Linear playlist-making leaves no room for meta-expression

I'll make this more concrete with specific examples:

  1. I loved the song from The Life of Pablo "Father Stretch My Hands, Pt. 1" and listened to it frequently, but it took niche YouTube videos for me to be exposed to the original sample, which I quickly fell in love with--I was listening to it when I found out I got into Stanford. Why wasn't it easier for me to be exposed to this?
  2. I discovered mutliple versions of the popular Kanye album My Beautiful Dark Twisted Fantasy, including a studio leak without overcompressed mastering and a fan-edit that extended samples and included exclusive content found only in love shows and the short film he made for the album titled "Runaway". I wanted to be able to click a button whenever I want to listen to this album that chooses between these and the original album at random, but it did not exist. Why can't I manage relationships between groups of songs on a higher level?

What it does

You can edit the code to create a nonlinear playlist out of songs on your computer, linking them together and customizing the transition probabilities.

This program can navigates through the playlist, playing the files on your local computer.

Empty song nodes make it possible to implement the button I referred to earlier, that would randomly choose between versions of the album for me to listen to.

How we built it

This project uses os.startfile() to run the audio files, and utilizes Python classes to represent songs and playlists. Dicts are used to store playlist transition probabilities for going to the next song, and a last-in-first-out queue is used to keep track of the play history for rewinding.

Challenges we ran into

No one on our team knew JavaScript, so it has no front-end. I tried learning but due to time constraints, eventually I just built up a back-end in Python and that seemed to suffice. We struggled to contrain the ambitiousness of the project and were only able to build the MVP of something much broader.

Accomplishments that we're proud of

-Creating an MVP that works! -Iterating and exploring a wide variety of interesting use cases

What we learned

-You don't need to know the "right" programming language before you can make a prototype of something that excites you.

Next Steps

-Building a frontend in JS, click-and-drag to create connections between songs -Spotify API integration: Import your Spotify playlists -Utilize Samplify to create a knowledge-graph of samples to browse & explore

Built With

Share this project: