Well, I’ve finally got something that is more or less usable in its current form. I haven’t actually come up with a complete package that’ll be easy for other people to install, but I’m happy with how it’s working right now. Check it out (no sound, but you get the idea):
Obviously, there’s a few bugs to iron out (good, otherwise I’d have nothing to do for the rest of the summer) - currently, the only way to start a new “In the Mood” playlist is to delete the current one and drop on a different seed song. Also, it might be a good idea to add the option to generate a fixed-length playlist based on the seed song, rather than add on a new song based on the last one in the list. Finally, m4a and wma files are not supported, and if I have time during this project I’d like to add a decoder to Marsyas that will handle those file types.
I also completely forgot that I haven’t yet created a preferences window, so that’s something else to work on. Also, I don’t really like how I’m naming/retrieving the song info. Right now, I’m naming the feature vector artist-%-title.vec, with any forward slashes replaced by -#-, and any backslashes replaced by -*-. These ugly symbols are there to hopefully ensure parseability so that I can go back and find the actual songs in the Rhythmbox database (by splitting at -%- and re-inserting slashes). All of this ugliness could be solved if Rhythmbox had a unique ID for each song - I’d much rather have files named 12345.vec so that I could be guaranteed that the retrieved song matches the feature vector. Maybe adding unique IDs is something else I could do, provided Rhythmbox’s devs think it’s a good idea.