The recommendation system I just built was fine, but it relied on MuQ embeddings, and so was not very explainable or modifiable. Also, there needs to be a better and faster way to verify the recommendation predictions than playing them at a monthly concert and seeing the audience's reaction.
That is why I plan to build a classical DSP-based recommendation system, which relies solely on classical DSP methods of similarity tracking rather than embedding-dependent methods. My plan is to build a similarity vector of 6-7 components.
The vector should include the following quantities:
- Melodic similarity
- Harmonic similarity, including chord progression and any dissonance, which I would say is memorable
- Rhythmic similarity
- Valence similarity
- Arousal similarity
- Timbre similarity
- Prominence of the chorus: whether it features often, or whether the song is more flowing or random, which affects memorability in my opinion
I also have classified the components into two types:
- Similarity-only components, meaning components that derive their quantitative value from similarity operations themselves: melodic, harmonic, and rhythmic
- State-function components, meaning components that have quantitative values for a single song that are then compared for similarity: valence, arousal, and prominence
- I am not sure yet about timbre, and how that can be classified.