velocitatem / HarmoniQ

0 stars 0 forks source link

Actual DJing #7

Open velocitatem opened 11 months ago

velocitatem commented 11 months ago

We have been provided with a rich data schema that includes various parameters like tempo, loudness, key, time signature, and many more. The goal is to use this data to implement an algorithm that can automate DJ tasks such as track sorting, transitioning, beat-matching, etc.

Objectives:

  1. Track Sorting: Implement a function to sort tracks based on user-defined criteria like tempo or key.

  2. Transition Planning: Utilize the end_of_fade_out and start_of_fade_in fields to automate seamless transitions between tracks.

  3. Beat-Matching: Use the tempo and beats fields to sync up the beats between the outgoing and incoming track.

  4. Key-Matching: Transition between tracks with either the same key or compatible keys using the key and mode fields.

  5. Loudness Normalization: Implement volume adjustment based on the loudness field to maintain a consistent audio level across tracks.

  6. Segment Mixing: Use the segments data to apply effects like EQ adjustments or even mashups.

  7. Apply Effects: Add optional DJ effects like reverb, flanger, etc., based on track characteristics.

Requirements:

https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis