Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

v8.0.0 - Music Map + Genre explorer + Internal changes

Choose a tag to compare

@regorxxx regorxxx released this 20 Sep 12:04
· 21 commits to main since this release
0910c52

There may be a SMP's bug on installation. See wiki.
REQUIRES SMP OR JSPLITTER

Download below clicking at 'Source code (zip)'. Check installation instructions here.

See full changelog here.

8.0.0 - 2025-09-20

Added

  • Toolbar: new entry on toolbar menu to share current UI settings across all toolbar panels on foobar2000. See here.
  • Tracks source: added new settings to select source different than library. i.e. active playlist, now playing playlist or selected playlists by name.
  • Tags: added 'FOLKSONOMY' tag slot with it's own whitelist (only values on the list will be used) and blacklist (any value not on the list will be used). It behaves as a standard multi-value string tag in any other sense. It's a default tag which can not be removed, but it's weight may be set to zero in case you don't want to use it.
  • Configuration: new setting (at 'Search method') to stop processing as soon as the playlist is filled. This will greatly improve processing time on huge libraries, as long as the desired playlist size or desired similarity score is low enough. Note enabling this option can not ensure that tracks with highest similarity are shown, it just outputs the first -similar enough- tracks found. To avoid always showing the same tracks, while using this option the source items (library) are shuffled; i.e. consecutive runs will output different tracks (which may partially override other sorting and picking options). Enabling this option may increase performance up to +50% in some cases. This setting is now enabled by default.
  • Advanced mode: added advanced mode setting which must be enabled by user (disabled by default). Advanced mode includes all available settings (previous behavior present on 7.6.0 and below). If not enabled, only a small subset of settings is shown. Themes are only available on advanced mode too. Already existing installation should not be affected by this change, and advanced mode will be enabled by default in such cases.
  • Descriptors: added Bachata, Uptempo Hardcore, Digicore, Glitchcore, Psychedelic Techno, Barcarola, Tribal House, Acid Techno, Hyperpop, Jersey Club, Muiñeira, Alalá, Afro-Rock, Afrobeat, Classical Crossover, Corrido, Drill, Bubblegum Bass, Deconstructed Club, Big Room House and Corrido Tumbado styles.
  • Descriptors: added Galician Folk XL, Mainstream Electronic and Latin Urban Music & Rap XL cluster.
  • Descriptors: added influences and anti-influences for Freak Folk and Dream Pop.
  • Descriptors: merged Punk Pop and Pop Punk into a single node (Punk Pop). Pop Punk is now a substitution.
  • UI: toolbar tooltip now shows 'Shift + Win + R. Click' shortcut to open SMP/JSpliter panel menu (which works globally on any script and panel, at any position).
  • UI: exposed color settings via window.NotifyOthers() method for themes/multi-panel support. You may pass a color scheme -size 6 recommended- (output from GetColourScheme()) at 'Colors: set color scheme' (applies to all compatible panels) or 'Toolbar: set color scheme' (applies only to this script), which will set appropriate colors following panel's color logic; alternatively you may set direct color settings at 'Toolbar: set colors' which needs an array of 5 colors or an object {toolbar, text, button, hover, active}. Panel has also independent settings to listen to colors from other panels (but not for sending colors as a color-server to others). See this and this.
  • Readmes: Ctrl + L. Click on any entry within 'Add button' submenu on toolbar now opens directly their associated readme (without actually adding the button).
  • Other tools: added new entries at 'other tools' to calculate similarity between tracks and report the score.
  • Info: added hated stats.
  • Info: added artist stats. Total artists from selected genre and top 5 artists (by # tracks).
  • Info: added similar genres stats.
  • Info: added similar genres from same region stats.
  • Info: added similar genres search tools.
  • Info: added similar genres from same region search tools.
  • Info: added influences search tools.
  • Info: added entry to input any genre/style value as string, instead of using the selection. It will report if the tag is not present on the graph (independently of being on library).
  • Info: added readme menu entry.
  • Info: added settings menu entry.
  • Info: added percentage of tracks with selected genre for displayed artist.
  • Presets: "X Most similar tracks" recipes, which should return the X most similar tracks to selected track from current playlist, sorted by scoring/genre variation. They use the new "Tracks source" feature. The number of tracks is asked everytime before searching.
  • Dynamic queries: support for '#NOW#' (or #TODAY#) variable, which resolves to current date (2025-3-8).
  • Dynamic queries: support for '#YESTERDAY#' variable, which resolves to yesterday date (2025-3-8).
  • Dynamic queries: support for '#WEEK#' variable, which resolves to first day of current week (8).
  • Dynamic queries: support for '#NOW_TS#' and '#YESTERDAY_TS#' variables, which resolves to Unix timestamps in seconds (1750881508).
  • Dynamic queries: support for '#DDAY#', '#DWEEK#', #MMONTH# variables, which analog to #DAY#, #WEEK# and #MONTH# but on DD and MM format. See dynamic queries readme for more info.
  • Dynamic queries: support for '#DECADE#', '#PREVDECADE#', '#PREVYEAR#', '#PREVMONTH#', #PREVMMONTH#, '#PREVWEEK#' and '#PREVDWEEK#'. See dynamic queries readme for more info.
  • Dynamic queries: support for '#VOLUME#', '#VOLUMEDB#, '#VERSION#', '#SELTYPE#', '#ISPLAYING#', '#ISPAUSED#','#PLAYSTATE#', '#DEVICE#', '#DEVICEID#', '#SAC#', '#RGMODE#', '#PLAYMODE#', '#PLSCOUNT#' variables. See dynamic queries readme for more info.
  • Dynamic queries: support for '#SELTRACKS#', '#SELDURATION#, '#SELSIZE#', '#SELPLAYING#', '#SELINLIBRARY#' variables for selections. See dynamic queries readme for more info.
  • Dynamic queries: support for '#PLSIDX#', '#PLSNAME#', '#PLSTRACKS#, '#PLSISAUTOPLS#, '#PLSISLOCKED#', '#PLSDURATION#', '#PLSSIZE#', '#PLSLOCKS#', '#PLSLOCKNAME#' variables for playlists. See dynamic queries readme for more info.
  • Dynamic queries: support for '#PLSPLAYIDX#', '#PLSPLAYNAME#', '#PLSPLAYTRACKS#, '#PLSPLAYDURATION#, '#PLSPLAYSIZE#' variables for playing playlist. See dynamic queries readme for more info.
  • Themes: preliminary support for themes with multiple references (i.e. multiple tag arrays). Output will join the results of a lookup per reference into a single playlist. Check the theme named 'multi-test.json' for reference. For now the only way to create them is via text editors.
  • Installation: new panel menu, accessed through 'Ctrl + Win + R. Click' (which works globally on any script and panel, at any position), used to export/import panel settings and any other associated data. These entries may be used to fully backup the panel data, help when moving between different JS components (JSplitter <-> SMP) or even foobar2000 installations,, without needing to manually backup the panel properties or other external files (like .json, etc.).
  • Configuration: external files like world map database references are now exposed as a panel property.
  • Debug: additional checks at startup.

Changed

  • Recipes: improvements to the recipes menu for customizable button, which now allows to directly edit recipes as submenu entries. Added multiple entries to hide/show recipes, clone, remove or even reset default ones.
  • Recipes: customizable button now shows by default a recipe list on L. Click instead of directly searching. This is done to make it easier to run recipes without changing settings first. Previous behavior may be restored at the 'Button settings' submenu.
  • Info: changed 'Graph info' button name to 'Genre explorer'.
  • Cultural Regions: 'Other tools\Calculate same zone artists' creates now a randomly sorted playlists with all artists from the same cultural zone than the selected one. The list of artists is also output to console (previous behavior).
  • Installation: script has been renamed 'Music Map' and all documentation and files adjusted to the new name.
  • Installation: added popup warnings when scripts are installed outside foobar2000 profile folder. These checks can be tweaked at globSettings.json.
  • Installation: script may now be installed at any path within the foobar profile folder, no longer limited to '[FOOBAR PROFILE FOLDER]\scripts\SMP\xxx-scripts' folder. Obviously it may still be installed at such place, which may be preferred if updating an older version.
  • Installation: multiple improvements to path handling for portable and non-portable installations. By default scripts will always try to use only relative paths to the profile folder, so scripts will work without any change when exporting the profile to any other installation. This change obviously doesn't apply to already existing installations unless restoring defaults.
  • Presets: recipes folder has been moved to '.\profile\js_data\presets\recipes'. All new recipes will be created there. All existing recipes will be copied here upon installation (and overwritten on future updates following previous behavior); user-created recipes will also be copied to the new path as result. Note you will have to manually delete your user-created recipes from the old path (.\profile\scripts\SMP\xxx-scripts\presets\Search by\recipes) to avoid future overwrites.
  • Presets: themes folder has been moved to '.\profile\js_data\presets\themes'. See notes above for recipes (it also applies to themes).
  • Presets: query filter file moved from '.\profile\scripts\SMP\xxx-scripts\presets\Search by\filters\custom_button_filters.json' to '.\profile\js_data\presets\filters\custom_button_filters.json'.If you want to use the old settings, move it manually to the new path. If the file doesn't exist, then you are just using the default filters (and may forget about this change).
  • Presets: dynamic query filter file moved from '.\profile\scripts\SMP\xxx-scripts\presets\Search by\filters\custom_button_dynamic_filters.json' to '.\profile\js_data\presets\filters\custom_button_dynamic_filters.json'. See notes above for query filters.
  • Presets: unified presets along different query filtering tools.
  • Descriptors: merged Tishoumaren and Desert Blues styles, used the first and added Desert Blues and Assouf as substitutions.
  • Descriptors: tweaked Sad Emo XL and Gothic XL clusters.
  • Descriptors: multiple improvements to All Music descriptors.
  • Dynamic queries: the submenu on the customizable button showing the filters now shows the current filter count, if any.
  • Dynamic queries: non recognized filters are now shown as individual entries which open a popup with the query if clicked.
  • Dynamic queries: improved entries file formatting on windows text editors which parse new lines only with CR+LF instead of LF.
  • Dynamic queries: support for '' wildcard (also for multi-value tags). i.e. 'ARTIST IS #ARTIST%' -> 'ARTIST IS A*'
  • Dynamic queries: support for 'ALBUM ARTIST' fallback expansion for multi-value tags. Note in foobar2000 '%ALBUM ARTIST%' works as a virtual tag pointing to ALBUM ARTIST|ARTIST|COMPOSER (but values are joined with commas) and 'ALBUM ARTIST' points to a file tag, thus never working with multiple values as intended. i.e. 'ALBUM ARTIST IS ACDC' only works if the track has a real tag with such value, but '%ALBUM ARTIST% IS ACDC' would not work properly with a track with 2 artists. Dynamic queries will automatically replace queries like 'ALBUM ARTIST IS #ALBUM ARTIST#' -> '(ALBUM ARTIST PRESENT AND ALBUM ARTIST IS #ALBUM ARTIST#) OR (ALBUM ARTIST MISSING AND ARTIST IS #ARTIST#)', thus working as intended in most cases.
  • Smart shuffle: now handles multi-value tags without joining them. i.e. it will try to scatter the most frequent tag value for every track on the entire output. For ex. for a track with 2 artists, the one which appears more in the entire output will be preferred.
  • Post-scoring filters: 'Filter pool of similar tracks by tag' option now also uses RegExp for title (if used) and has multi-value tag support (any single match will do, not only when all values of a multi-value tag match).
  • Tags: small performance improvements when using the setting 'Asciify string values internally'.
  • Tags: 'Genre/style region' tag weight is set to zero -internally- on any search method different than 'GRAPH' before processing; now available only when using that search method.
  • Configuration: playlist size may now be set to -1, asking via input popups the desired playlist size on every call. (the new recipes use this feature, see above)
  • Configuration: anti-influences filters enabled by default on new installations.
  • Configuration: genre variation (aka graph distance) can now be set as the distance key string (for ex. 'intra_supergenre') without the need of using 'music_graph_descriptors.' prefix too. In any case both notations are supported ('music_graph_descriptors.intra_supergenre' or 'intra_supergenre').
  • Recursive Playlist: every iterative search will reuse the sorting/picking settings, so final playlist will be sorted in multiple groups with same pattern instead of randomly.
  • Debug: checked tags are now shown at 'Find genre/styles not on Graph' tool.
  • Debug: expanded profiling logs and tools.
  • Debug: 'Debug graph' and 'Distance tests' menu entries now show a popup instead of logging to console.
  • Console: changed cache link console logs to startup logging setting usage.
  • UI: unified script updates settings across all my scripts, look for 'Updates' submenu.
  • UI: settings display improvements on tooltip.
  • UI: improvements of menu entries related to settings.
  • UI: show shortcuts on tooltip setting moved to global setting for the toolbar.
  • Readmes: improved readmes and added missing features.
  • Helpers: updated helpers.
  • Helpers: general code cleanup on menus internal code. Please report any bug on extra separators or menu entries not working as expected.
  • Performance improvements using GRAPH (approx. 17%) and WEIGHT (approx. 13%) modes.
  • Hardcoded button with 4 different presets has been reworked into a single one showing the 4 built-in presets plus a list of available recipes. Button has also been renamed to 'buttons_search_by_distance_basic.js'.

Removed

  • Descriptors: removed Spanish Folk style.
  • Console: removed warnings about 'related' and 'unrelated' tags not being found when weight was non zero on basic logging (since that should be the most common use-case).

Fixed

  • Themes: fix support for special tags like folksonomy or artist/genre/style region in some cases.
  • Themes: crash when using a recipe (as path) and a theme (as object). Only triggered during internal testing.
  • Themes: fix crash on theme creation with incomplete input or when World-Map-SMP was not used.
  • Recipes: menu crash when there were no recipes at folder.
  • Sorting: fixed long time bug where 'Sort final playlist by score' was not working properly in some cases, despite the console showing the right order.
  • UI: '&' being displayed as '_' on tooltips.
  • Tags: fixed wrong application of LOGARITHMIC distribution for ranges greater than 100%, resulting in NaN values for the total score. It did not affect the final results in any case, but resulted in some errors when refactoring the code. The fix should also add some small performance improvement.
  • Dynamic Queries: improved support for tags with '#' values (for ex. KEY tags).
  • Console: minimum tag similarity score shown was wrong in some cases.
  • Console: wrong warning about Smart Shuffle Tag not being set if it was empty even when the feature was not used.
  • Console: wrong warning about Recursive playlist creation and no tags for duplicates removal even when the former feature was not used.
  • UI: multiple workarounds for rounded rectangles not being painted properly or producing crashes (SMP limitation).
  • UI: workaround for DPI checking under multiple OSes, specially for Wine (Unix).
  • Influences: in some cases (anti)influences weight was not considered properly to calculate the total graph distance between nodes which had multiple links.
  • Fixed some inconsistencies with foo_playcount_2003 support.
  • Ensure that one track compared to itself reports a 100% score similarity. Previously it could be off by a few decimals due to rounding errors.
  • Fixed some misspelled terms on UI and variables (which also lead to some minor bugs).