Skip to content

Claire56/protag

Repository files navigation

ProTag

ProTag leverages Genius' API to provide users data visualizations of their favorite song, performer, album, or producer.

Table of Contents

Overview

ProTag was inspired by the need for production information of songs. The major components of song production are:

  • The recording of the performer delivering her lyrics.
  • The making of the beat (song's instrumental, non-lyrical/non-vocal rhythmic backing track) by the producer. A producer's beat is often identified by the producer's signature, aka tag.

Tech Stack

Frontend: JavaScript (AJAX, JSON, React), Jinja, jQuery, Bootstrap
Backend: Python, Flask, SQLAlchemy, PostgreSQL
Libraries: D3, Chart.js, Pandas, Scikit-learn
API: Genius

Setup/Installation

On local machine, go to desired directory. Clone protag repository:

$ git clone https://github.com/rbarner14/protag.git

Create a virtual environment in the directory:

$ virtualenv env

Activate virtual environment:

$ source env/bin/activate

Install dependencies:

$ pip install -r requirements.txt

Create database:

$ createdb music

Build database:

$ python3 -i model.py
>>> db.create_all()

Seed database:

$ python3 -i seed.py

Run app:

$ python3 server.py

Navigate to localhost:5000 in browser.

Demo

Enter a song, performer, album, or producer. Select desired result.

Homepage

If song selected, view song's title, album, performer, Apple Music player, and producers.

Song

If producer selected, view producer's name, image, bio, and data visualizations. Related producers are provided, generated with a k-means machine learning algorithm; nearest neighbors determined by like performers).

Producer_Landing

If producer has been making songs for at least 10 years, a ProTag Verified Industry Vet tag will accompany their name.

Producer_Sidenav

Chart.js donut graph shows songs producer made by performer.

Producer_Donut

Chart.js line graph shows songs producer made over his career tenure.

Producer_Line

Similar views are provided for performers, except the frequency at which they work with producers is visualized.

If album is selected, view album's title, cover art, performer, D3 data visualizations (bubble and web) of songs on album by producer.

Album

Each node represents a producer. Weights are assigned according to the number of songs that producer has made on that album.

Album_Bubbles

D3 force directed graph of album's producers.

Album_Web

Electric charge on particles is simulated to visualize the network of performers and producers.

Network

Thanks for exploring!

Future Development

  • Enable user profile creation for favorites saving.
  • Implement algorithm to suggest music to user leveraging their favorites.