velocitatem / HarmoniQ

0 stars 0 forks source link

Roadmap #2

Open velocitatem opened 11 months ago

velocitatem commented 11 months ago
velocitatem commented 11 months ago

Product Spec:

SDK for Event Organizers

This should be an HTML iframe or just a link that event organizers can put into their event ticket-purchasing software. It will prompt the user to connect some service/answer questions. For the purpose of this project, we will want the user to connect their Spotify account. and save their data

Recommendation Generation

At some point before the event happens, data entry will be closed.

  1. For each user we get their top tracks, we put this in a SET (mathematical)
  2. Then for each track we use https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis (we could also eliminate some outliers)
  3. We somehow average that out and get some target values
  4. Finally we can apply this API: https://developer.spotify.com/documentation/web-api/reference/get-recommendations Which will in-fact give us recommendations
  5. Once we have this list of songs we can try to post-process them in order to develop some tentative DJ set.
velocitatem commented 11 months ago
graph TD;
  subgraph "SDK for Event Organizers"
    A(Start) --> B[Event Ticketing Software]
    B --> C{SDK Iframe/Link?}
    C -->|Yes| D[User Connects Spotify]
    C -->|No| Z(End)
    D --> E[Save User Data]
    E --> F{Before Event?}
    F -->|Yes| G[Data Collection]
    F -->|No| Z
  end

  subgraph "Data Collection & Processing"
    G[Data Collection] --> H[Collect Top Tracks]
    H --> I[Put Tracks in SET]
    I --> J[Get Audio Analysis]
    J --> K{Eliminate Outliers?}
    K -->|Yes| L[Remove Outliers]
    K -->|No| M[Average Target Values]
    L --> M
    M --> N{More Users?}
    N -->|Yes| H
    N -->|No| O[Generate Recommendations]
  end

  subgraph "Recommendation Engine"
    O --> P[Get Spotify Recommendations]
    P --> Q{Post-process for DJ Set?}
    Q -->|Yes| R[Post-process]
    Q -->|No| S[Final DJ Set]
    R --> S
  end

  S --> T(End)
velocitatem commented 11 months ago

https://github.com/JMPerez/spotify-web-api-js

velocitatem commented 11 months ago

@i-be-keggles we got data: https://gist.githubusercontent.com/velocitatem/294d7e7d3349cc081147a5118782c6e1/raw/b6853753c9a67be494f5e4b713a053946323348a/track_data.json

velocitatem commented 11 months ago

sometimes the algo sneaks in music that's not exactly right. Ideally we setup an iterative process of DJ selecting music from the recommendations and the using that generating more recommendations...