An implementation of Music-Graph for foobar2000 using Spider Monkey Panel, which creates intelligent "spotify-like" playlist using high-level data from tracks and computing their similarity using genres/styles.
Creates playlists using high-level data from tracks similar to the currently selected one according to genre, style, key, etc. When their score is over a threshold, they are included in the final pool. After all tracks have been evaluated and the final pool is complete, some of those tracks are chosen to populate the playlist. You can choose whether this final selection is done according to score, randomly, using Harmonic mixing rules, etc. All settings are configurable via button's menus (on customizable button) or the properties panel (static buttons).
To use this plugin at its best and to benefit the most from your library, you will want to make sure that your songs have the most possible information on genre, style, key, moods, etc.
There are 3 methods to calculate similarity between tracks: WEIGHT, GRAPH (see above) and DYNGENRE.
WEIGHT: -> Score
Calculates similarity (score) according to tags. Similarity is calculated by simple string matching ('Rock' != 'Soul'), range comparison for numeric tags and a special algorithm for Key tags (harmonic mixing). This means some coherence in tags is needed to make it work, and the script only works with high level data (tags) which should have been added to files previously using manual or automatic methods (like MusicBrainz Picard, see note at bottom).
GRAPH: -> Score + Distance
Apart from scoring, it compares the genre/styles tags to the ones of the reference track using a graph and calculating their minimum mean distance. Imagine Google maps for genre/styles, and looking for the distance from Rock to Jazz for ex. Note this is totally different to simple string matching, so 'Acid Rock' may be similar to 'Psychedelic Rock' even if they are totally different tag values (or strings). This method is pretty computational intensive (but tons of optimizations have been taken in place).
DYNGENRE: -> Score + Simplifed Distance
Uses a simplification of the GRAPH method. Let's say we assign a number to every "big" cluster of points on the music graph, then we can simply put any genre/style point into any of those clusters and give them a value.
Graph behavior, new genres or substitutions may be tweaked by the user. Changes to the descriptors may be added to an user file instead of editing the original descriptor: 'helpers/music_graph_descriptors_xxx_user.js'. Check sample for more info.
See _TIPS and INSTALLATION (txt) and the Wiki. Not properly following the installation instructions will result in scripts not working as intended. Please don't report errors before checking this.