DELETE ALL OLD FILES, AT 'xxx-scripts' before installing new ones.
Update all my other scripts too with latest releases.
Install on a blank panel. Clean the old panel first.
Note Playlist Tools does not include Search by distance buttons anymore. Both must be installed now separately!
Too many things have changed and it must be ensured a clean installation is done.
There may be a SMP's bug on installation. See wiki.
REQUIRES SMP 1.6.1
Highlights:
- A lot of small UI improvements.
- Playlists locks.
- Smart shuffle (better than Spotify's one).
- Main menu macro button. Allows to run multiple native foobar2000 actions with a single button (like merging multiple buttons on one).
- Quick-search tools. With partial matching, full matching, beginning with, etc.
- Remove duplicates with RegExp.
[3.0.0-beta.16] - 2023-02-15
Added
- Configuration: added user configurable files at '[FOOBAR PROFILE FOLDER]\js_data\presets\global' to edit default queries and tags for multiple tools. Usually used internally or on properties panel. Don't forget to reload the panels/restart foobar and restore defaults on all relevant buttons and menus to use the new values. It's recommended to do it upon installation of this update.
- Playlist locks: new menu entries at Playlist manipulation to switch playlists locked status. It's meant to be used via Dynamic menus in a button, allowing to lock/unlock specific playlists with the same button.
- Selection manipulation\Shuffle: shuffles tracks according to tags (for ex. artist) in a semi-random pattern, ensuring no 2 consecutive tracks have the same tag. Follows Spotify design. Differs from 'Scatter by tags' (intercalate) in the way tracks are ordered (without strict alternation), i.e. it doesn't follow a pattern ABCABAA when it's possible to ensure no A tracks are together (ABACABA). Note contrary to Spotify's preferences to recently played/loved tracks, this algorithm is truly "random" in the sense that there is no preference for any track, it just ensures artists are distributed evenly with some randomness.
- Pools: new 'Top recently played tracks' and 'Top recently added tracks' pools entries.
- Pools: pools now also allow harmonic mixing. Key tag used follows tag remapping of the button. Check '50_random_artists_harmonic.json' for a preset example and 'Top tracks mix (harmonic)' within pools menu.
- Presets: new presets 'Classic Pools (20 random albums)' and 'Classic Pools (20 random tracks)' for pools. Meant to solve situations like this or this.
- Presets: new preset 'Similar artists (G)' to make use of Similar Artists analysis. Similar artists calculation is -obviously- required first.
- Buttons: added 'main_menu_shortcut' button which allows to call [multiple] native main menus (dynamically generated ones too). Some kind of automation is allowed by configuring states and unloading actions. For ex. to easily switch playback statistics monitoring on demand for multiple components (database, ListenBrainz, Last.Fm, ...) with a single click, and also ensure they are enabled back when closing Foobar200. Before every menu action a custom timeout can be added (for asynchronous actions).
- Buttons: added 'search_by_tags_queries' button which is a generic version of the old 'search_same_style' button, but applicable to any tag. An arbitrary num of tags may be used to create queries.
- Buttons: added 'quicksearch' button which is a shortcut to the "dynamic queries" functionality, more in line with foo_quicksearch. Allows searching for tracks with same tag values, beginning with them or by partial matching (i.e. adds a lot of more functionality than the original one). Results may be sent to a playlist, Autoplaylist or search window.
- Advanced sort: decremental sort by DynGenre entry added.
- Advanced sort: harmonic mix entry added (in place, not new playlist).
- Tags: menu entries to -only- reset tag remapping.
- Readmes: new 'allowedKeys.txt' file explaining pools presets, variables used, sources, etc.
- Last Action: added new entry at main menu to execute the last action used. Cleared out at startup.
- Other Tools\Write tags: added 'Folksonomy' tag calculation from multiple sources: genre, styles, locale, etc. Meant to be used along the Picard scripts found at presets.
- UI: added icons-only mode for toolbar buttons at the toolbar configuration menu ('Other UI configuration'). Tooltip is adjusted to show the button's name there instead. Handy when creating a compact toolbar and icons are good enough to recognize the tools.
Changed
- Playlist locks: menu entry to lock playlists also blocks playlist removal now (not only its items).
- Playlist locks: lock types applied are now shown on the header of the submenu.
- Selection manipulation\Scatter by tags: split the tool into intercalate (associated to matching any value) and scatter (for specif values) submenus.
- Selection manipulation\Scatter by tags: now allow to customize and edit the menu entries.
- Top Rated Tracks from...: now use the greater value between play count and Last.Fm play count for sorting to account for scrobbles. i.e. '$max(%PLAY_COUNT%,%LASTFM_PLAY_COUNT%)'.
- Most played Tracks...: now use the greater value between play count and Last.Fm play count for sorting to account for scrobbles. i.e. '$max(%PLAY_COUNT%,%LASTFM_PLAY_COUNT%)'.
- Most Played Tracks from...: now also includes scrobbles from Last.Fm. So in case tracks have been played at Spotify or other players, as long as scrobbles as synced by 'Enhanced playback statistics' plugin, those tracks are considered eligible the same than any track played within Foobar2000.
- Other tools\Playlist revive: 'ACOUSTID_ID' and 'MUSICBRAINZ_TRACKID' are now checked to find exact matches, if MD5 and all other exact match rules fail.
- Other tools\Check Tags: added 'TITLE' to the list of default tags to be checked. Added special conditions to title tags.
- Script Integration\SMP Dynamic menu: now replaces all functionality previously found at Script Integration\SMP Main menu. Custom menus and functions may still be added, and device/DSP selector is no longer required (since it requires CMD and therefore can also be changed directly with it).
- Script Integration\SMP Dynamic menu: the panel warns about other panels having the same name if the feature is enabled at startup or when enabling it. Panel flashes for some seconds while the popup is shown.
- Script Integration\Add SKIP tag at current playback: pressing Shift while calling the menu now adds a skip tag to the existing ones, instead of replacing them.
- Script Integration\Add SKIP tag at current playback: will now change playback to next track after tagging, instead of waiting for the component foo_skip to do it, resulting in smoother tagging process.
- Online controllers integration: reworked and updated all code for full integration with foo_httpcontrol has been added when using the preset ajquery-xxx now using dynamic menus.
- Pools: duplicates are now removed, per group, in Classic Pools mode (when using GROUP# as source). That should bring the best of both worlds, mimicking foo_random_pools behavior while not duplicating tracks when there are multiple versions of them (for ex. original and remastered album, etc.).
- Pools: improved and expanded console logging.
- Pools: minor change to default pool entries to ensure final playlist length matches the global playlist length set at button. There were some rounding errors before with even track numbers.
- Remove duplicates: Ctrl + L. Click on button will show duplicates instead of removing them (i.e. the inverse function). This allows to use both functionalities without having to use multiple buttons.
- Remove duplicates: all uses of function changed to make use of '$year(%DATE%)' and '$ascii($lower($trim(%TITLE%))' instead of 'DATE' and 'TITLE'. This is a changed ported from Search by Distance, to ensure the most matches possible.
- Remove duplicates: advanced RegEx title matching option. For example, tracks like these would be considered to be duplicates: 'My track (live)', 'My track (acoustic)', 'My track (2022 remix)', ' My track [take 3]', ... but not those with keywrods like 'part', 'pt.', 'act' or Roman numerals.
- Remove duplicates: advanced RegEx title matching option. Words with "-in'" and a list of verbs ending in "-in" are matched against "-ing" verbs to further refine the search. For ex. "walkin", "walkin'" and "walking" are all considered equivalent.
- Show duplicates: Ctrl + L. Click on button will remove duplicates instead of showing them (i.e. the inverse function). This allows to use both functionalities without having to use multiple buttons.
- Show duplicates: advanced RegEx title matching option. See above.
- Playlist filter: advanced RegEx title matching option. See above.
- Search by tags (combinations): duplicates advanced RegEx title matching option. See above.
- Search by tags (queries): duplicates advanced RegEx title matching option. See above.
- Playlist Manipulation\Query filtering: pressing Ctrl while clicking on a menu entry will invert the query and append 'NOT' at the beginning. i.e. if a filter is used to display tracks with rating > 3, pressing control will do the opposite and show tracks with rating < 3. Note global forced queries are added after the inversion.
- Selection manipulation\Scatter by tags: now conserves selection and focus.
- Top rated tracks from: is now automatically built by decades from 1950 onwards, up to 20 entries.
- Top rated tracks from: a new entry is added to include all tracks before the lowest date.
- Top rated tracks from: a new entry is added to include all tracks between the current date and last 2 decades.
- Other tools\Import track list: improved popup descriptions for filters.
- Other tools\Import track list: custom path can now be directly configured using the appropriate menu entry (instead of using the properties panel). Path will be checked for validity.
- Other tools\Import track list: importing will now throw a popup when file is not found (instead of logging the error to console).
- Other tools\Import track list: custom path may also point to a web page.
- Other tools\Playlist Revive: cleaned up a bit the console logging when tags are missing for dead items (it doesn't give any useful info for the user).
- Buttons: default method of installation requires now to load the toolbar (no more single buttons support), from there, any button can be loaded as desired.
- Buttons: the buttons bar now shows a message when no buttons have been added, left clicking shows a popup with available buttons presets. Right clicking opens the menu to configure the toolbar or add buttons manually.
- Buttons: added new categories at the 'Add buttons' sub-menu, for Search by Distance tools, output devices, etc. and reordered items acordingly. Cosmetic change.
- Buttons: 'search_same_by' has been renamed to 'search_by_tags_combinations'. Console will warn about it when loading the toolbar. Replace it as needed.
- Buttons: 'search_same_style' has been replaced with'search_by_tags_queries' (generic version). Console will warn about it when loading the toolbar. Remove the old button on the toolbar and add the new version, then set it to use it only style tag to mimic its behavior.
- Buttons: 'search_same_style_moods' has been replaced with 'search_by_tags_combinations' (generic version). Console will warn about it when loading the toolbar. Remove the old button on the toolbar and add the new version, then set it to use {"STYLE":2,"MOOD":6} to mimic its behavior.
- Buttons: 'search_by_tags_queries' and 'search_by_tags_combinations' can now be renamed.
- Buttons: internal changes to also allow images as icons on buttons. Previously only chars were allowed.
- Buttons: reworked buttons configuration menu to show when a 'true/falsse' option is checked. Some options now output a popup giving a description or tip. Also, a popup is thrown when an input value is non valid.
- Buttons: improved 'no background mode' on buttons toolbar with colors and shades adapted to the toolbar background color and following the design of native Foobar2000 buttons for a seamless integration.
- Buttons: improved 'no background mode' on buttons toolbar with proper animations (no longer a bad looking rectangle gradient).
- UI: unified tooltip structure and available info on all buttons (short description + relevant settings + keyboard modifiers).
- UI: custom playlist Tools menu renaming does not require a panel reload anymore to adjust the width.
- UI: exposed the TF/tag expression to match duplicates along the advanced RegEx title matching option. See above. Used on all tools within Playlist Tools menu.
- UI: menu entries for most tools may now be edited and moved too, instead of only added/removed. Making easier its customization. The edit entries submenu has been changed to include all options within the same submenu.
- UI: all menus involving playlists name now also have a radio check at the left for the current playlist.
- UI: reworked 'Remove duplicates' and 'Show duplicates' buttons tooltip.
- UI: playlist revive tools now set back the focus to the latest selected track (instead of the start of the playlist).
- UI: buttons now show info about background processing if any is being done (usually also animated).
- UI: unified buttons size normalization settings and behavior for all axis modes.
- UI: unified button icon alignment on reflow modes.
- Macros: buttons is now animated while recording a macro. The 'start recording entry' also shows a warning about it.
- Tags: Key and Stylegenre tags now also allow TF functions instead of just tag names.
- Presets: updated all Picard scripts with comments, setting examples, new scripts (for folksonomy tags, performers, ...), code improvements, etc.
- Other Tools\Write tags: changed default tools on first init.
- Readmes: updated pools readme.
- Readmes: readme is now available in config menus for individual buttons too (and not only the toolbar).
- Helpers: updated helpers.
- Helpers: rewritten Camelot-Wheel-Notation helper.
- Properties: additional checks to properties. In case a previous property is not valid, reset to default using menus where applicable.
- Properties: remapped tags properties have been rewritten, previous config will be lost. Tags now follow a JSON format, which will be more compatible with TF functions in any field.
- Minor performance improvement (usually on subsequent calls) caching all TitleFormat expressions.
Removed
- Search by Distance: removed the 3 submenus on Playlist Tools button, to minimize redundancy. Only left the 'Special playlist 'entries, for any other Search by Distance usage, use directly their dedicated buttons. The 'Special playlist' entries are only available in case 'Search by distance' scripts are installed.
- Buttons: removed all 'Search by Distance' buttons. Install scripts from its repository to make them available (no longer releasing all mixed here).
- Buttons: 'search_same_by' button. See warning above for replacement.
- Buttons: 'search_same_style' button. See warning above for replacement.
- Buttons: 'search_same_style_moods' button. See warning above for replacement.
- Script Integration\SMP Main menu: all functionality removed. Replace it as needed with custom Dynamic menus.
Fixed
- Other Tools\Write tags: audio formats without a MD5 info tag are now skipped when using the MD5 tag (not the AUDIOMD5 tag). Not requiring anymore to manually force next step.
- Other Tools\Write tags: fixed bug introduced on [3.0.0-beta.9]. Tags not being deleted before writing the new ones in some cases due to a typo.
- Other Tools\Write tags: LRA tagging now uses Sed tool to extract the tag, which seems to give less problems with some tracks. This is due to a buggy behavior of ffmpeg which outputs a full tag report whenever the tool is used... binaries are already included on download. In case one desires to use the old FINDSTR command instead, just change useSed=TRUE to FALSE on the bat files at '.\helpers-external\ffmpeg'.
- Macros: no longer allows to save a macro without any action. A popup is shown in such case.
- Macros: 'start recording' entry is now disabled while it is already recording a macro.
- Macros: 'stop recording' entry is now disabled in case it is not recording.
- Fingerprinting: when comparing a list of tracks against itself (for ex. 'compare selection' tool), the analysis no longer checks every track against itself but only against the other tracks. Previously it always reported a 100% similarity against the original track, which is obvious. Note this doesn't apply when checking a list of tracks against the library, if a track is compared against itself, the result is considered valid (a match was found).
- Playlist locks: SMP locked playlists were not properly identified (and thus not shown on the locked menu list).
- Selection manipulation\Advanced sort: sort by key now properly differentiates between major (A) an minor keys (B), putting firt the major key and then the minor one when sorting (instead of mixing them when having the same number).
- Selection manipulation\Advanced sort: sort by DynGenre now properly creates an undo backup point on the modified playlist before being applied, allowing to restore the previous state with Ctrl + Z. It should have worked that way, the same than any other tool, from the beginning.
- Selection manipulation\Scatter by tags: skips reordering items when interval is smaller than 2 (previously due to a rounding error, values over 1.5 tried to reorder the selection, leaving untouched tracks at the end, contrary to the documentation).
- Dynamic queries: duplicated queries are removed before joining them with 'OR'. i.e. selecting 10 tracks by 'Mdou Moctar' for a query 'ARTIST IS #ARTIST#' will not output 10 time the same query, but only once. While functionality and final results don't change at all, it seems processing time greatly speeds up with shorter queries.
- Dynamic queries: parentheses, commas and quotes on tag values not working on some instances.
- Dynamic queries: in case query was non-valid, tracks with 'null' string on standard tags (title, artist, ...) were output. This is a SMP bug.
- Script Integration\SMP Dynamic menu: excluded some entries which were not supposed to be exposed after changes on latest versions.
- Script Integration: fixed some inconsistencies on ajquery-xxx export files.
- UI: custom macro button width is now adjusted to button's custom name (instead of being fixed, which was never intended).
- UI: don't show tooltip during buttons drag n drop.
- UI: background color mismatch when resizing windows and using custom background colors.
- UI: fixed reflow mode in some cases when resizing back to the required width/height to show all buttons on a single row/column.
- UI: fixed reflow mode in some cases when normalization mode was not active and buttons had different size; non needed empty space was added in some rows/columns.
- Advanced sort...\Decremental key (Camelot Wheel): inverse order was not working as intended.
- Pools: some additional checks to ensure non ASCII chars, casing or numbers are correctly identified as equivalent. For ex. 'Classic Pools (3 tracks per artist letter)' would output an artist starting with A and another with a as 2 different letters. Same applies to ASCII equivalences, etc. Now all the values are reduced to an ASCII lowercase string.
- Pools: 'Current genre/style and instrumentals' query had a typo.
- Script Integration\SMP Dynamic menu: crash when 'Script integration' sub-menu was disabled but the option was enabled. The entire feature is now disabled as consequence, as it should be.
- Top rated tracks from: is now invariant to date order. i.e. 2012,2013 will output the same than 2013,2012 (previously empty output).
- Buttons: fixed 'buttons_playlist_tools_submenu_custom' button, which was breaking buttons' properties when moving or deleting buttons. Long time issue which only appeared when this button was on the toolbar.
- Buttons: forbid multiple copies of some buttons (missed on previous releases).
- Buttons: crash when adding buttons files not associated to a category by their filename. Only relevant for developers.
- Buttons: no background on buttons configuration for toolbar was not properly set on script init/reloading.
- Readmes: separators not being properly identified on readme files checking.
- Presets: fixed variable typos on '.\presets\Playlist Tools\pools\intercalate_artists.json' file, now working as intended.
- Rating related scripts not compatible with foobar2000 2.0+.
- Some fixes to queries containing parentheses on the values, which should have been quoted.
- Multiple foobar2000 v2+ compatibility fixes.