Closed AlfredJKwack closed 12 hours ago
Hi. The problem is that for "creativity" to work we would need to different embeddings (ways to measure similarity between songs). With the tracklists I got from Spotify I was able to do this because I had (a) information on what songs tended to appear together in playlists and (b) the vector encodings using my "Speccy model", which captured similar genres, moods, energy and instrumentation. If there were a way to map your personal mp3 library to a spotify track ID, then this would be possible.
Aha, yep, I figured there was something quite big that I was missing. Finding a Spotify track ID from a random file on someone's HDD is a whole different scope. Thanks for the consideration.
Looking through the Deej-AI.online-app project I noticed there is a creativity factor that one can use to influence the playlist. Reading the text it speaks of:
That sounds like a very attractive feature indeed. I wonder, would there be appetite to have this same feature implemented in this project?
Looking through the codebase of Deej-AI.online-app you find that the creativity factor is ultimately implemented at deejai.py#L131-L134 as a set of positive and negative weights for the
most_similar
function. Higher level functions don't seem to do much with the values other than to pass it down to this one place.Specifically the
weights
that creativity represents has been implemented in Deej-AI.online-app as follows:That same function exists in this Deej-AI project (no surprise really). That makes me wonder how hard it would be to implement that same feature here? What would it take beyond modifying the signatures of a few functions and implementing the weights?
Implementation proposal for most_similar
Other functions to consider
make_playlist
directly callsmost_similar
and would need to pass the creativity parameter.--creativity
which it passes ontomake_playlist
update_output
deals with the user through the Dash interface so would need to pass the parameter. You could put some kind of knob on the GUI or a slider.play_track
as a feedback mechanism to state what creativity was used to influence the playlist.@teticio, what do you think? Does the approach, and most importantly the actual proposal for the implementation make sense? I don't really have the means to coherently test the results so I'm going purely on the codebase. Maybe I'm missing something quite big.
Looking forward to the feeback.