WACUP Changelog

What's new in WACUP 1.99.12.18980 Preview

Apr 25, 2024
  • Changed the send-to library playlist handling to make things quicker when using the new playlist option (aka less clicks)
  • Changed the import folder & legacy database local library related actions to reduce the chance of the browse folder dialog being slow causing issues
  • Changed how the expat based xml handling is implemented to avoid on going issues with anti-virus software blocking the now removed w5s component dll
  • Changed how the delay loading for some of the w5s component dlls occur for a small load time reduction by removing the wbm checking for known cases
  • Fixed a deadlock when trying to process some youtube playlists whilst trying to get metadata for the playlist atf string
  • Fixed the native scrobbling support not correctly disabling itself & some related ui problems if the external plug-in was enabled
  • Fixed the scrobbling preference option to only work for files known in the local library database not working as expected
  • Fixed a logic issue with the time needed to wait for scrobbles to actually be attempted which could prevent some happening
  • Fixed the local library plug-in sometimes returning the metadata for items which have been soft-deleted which wasn't intended
  • Fixed a change with how metadata updates are notified which caused the Yule Log plug-in to incorrectly see duplicate play events
  • Fixed a long running intermittent skin selection issue which could prevent the skin from being used until restarting WACUP
  • Fixed the procdump running mode incorrectly terminating if a visualisation plug-in is attempted to be run due to thread naming
  • Fixed a compatibility issue with the input plug-in api handling for the basic fallback information if a length parameter is missing due to some of the older input plug-ins not double-checking null parameters
  • Fixed another crash from trying to send an unsupported file type to some of the input plug-ins as part of the default fallback handling being used
  • Fixed a local library view updating issue when running under WINE which can make it look like items are missing if the view was scrolled & what's then needing to be shown doesn't require any scrolling
  • Fixed the glitchy playback of MP3 files when using the basic fallback mode to play them via in_wave (e.g. due to incomplete installs where the 5.666 installer & it's in_mp3 plug-in cannot be obtained)
  • Fixed the probable cause of an ATF handling issue which could in some instances trigger a crash whilst the string is generated
  • Fixed some issues with the wrapper plug-ins which could for non-local storage incur higher overheads to determine if they need to handle the playlist item being queried or not
  • Fixed a concurrency issue with the in_ape, in_mod & in_wv input plug-ins which could cause crashes to occur when receiving multiple metadata requests from different threads (e.g. dual playlist title refreshes)
  • Fixed an inconsistent handling of trying to scrobble the playing item if playback is paused & eventually resumed which could in some instances not handle the pause event correctly & still report the scrobble
  • Fixed the probable cause of a delay loading related failure with the Not So Direct output plug-in with a specific config loading order
  • Fixed a lock mismatch with the db file saving which might be involved in the crashes that have been happening for some (mostly during closing) when the playback history &/or local library changes are saved
  • Fixed a COM vs OLE initialisation issue introduced in an attempt to resolve some prior loading & closing problems which ended up being unrelated but inadvertently broke some drag & drop support including installing skins by dragging them onto WACUP's windows (which then appeared as weird problems in trying to play them as media files)
  • Fixed some issues with trying to locate the needed input plug-in to handle some of the metadata which could cause an unresponsive crash due to getting stuck trying to use the input plug-ins already rejected
  • Fixed a small performance issue when trying to do batch metadata edits of a file due to some internal states being repeatedly cleared
  • Fixed metadata for items only stored in the local library not being read in via the batch edit metadata dialog from the main playlist
  • Fixed an issue with the initialisation for some of the local library asynchronous actions which could cause things to be accessed too early causing a crash to occur (e.g. some prior local library imports)
  • Fixed some quirks with the classic skin main song-ticker where it might reset it's position awkwardly on some title events or was trying to auto-scroll the title when it was able to show without needing to
  • Fixed another possible deadlock when the modern skin engine plug-in (gen_ff) & the local library plug-in (ml_ll) are interacting with albumart related actions (so much pain from gen_ff not being thread safe)
  • Fixed inconsistent handling of soundcloud urls due to changes on their side & what yt-dlp was returning which no longer matched to the streaming formats that are currently supported (this'll be improved)
  • Fixed a live patching on the modern skin engine plug-in (gen_ff) not working correctly for some setups with extra checks now added
  • Fixed an install conflict causing crashes due to a mis-matched freetype.wac not from the required 5.666 installer trying to be used
  • Removed the placeholders for dynamic library playlists on the new library playlist dialog since I've no eta on getting it implemented
  • Updated libopus (libopus.dll) to 1.5.2 (10 Apr 2024)
  • Updated Monkey's Audio (in_ape.dll) to 10.71 (19 Apr 2024)
  • Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 19 Apr 2024

New in WACUP 1.99.11.18916 Preview (Apr 19, 2024)

  • Everything done as part of beta preview build v1.9.20.17040
  • Added an initial native equaliser implementation along with the changes needed to remove the legacy mode handling (i.e. WACUP no longer uses winamp.original from 5.666 to be able to run for all setups)
  • Added options on the equaliser on/off button right-click menu for classic skins & the modern skin equaliser sub-menu to change the frequency bands & limiter options without neeing to go to the Playback preferences page
  • Added an initial native last.fm scrobbler feature to the Yule Log plug-in targeting their 2.0 API which allows for it to show 'scrobbling now' before the actual scrobble occurs (those using the existing official scrobbler plug-in can continue to do so as this implementation will self-disable itself if it's found to already be present & enabled so there should be no conflict)
  • Added an initial WACUPified version of in_qsf (Highly Quixotic QSF Player) for playing Capcom Q-Sound Format (QSF) files
  • Added actions to the local library view / library button to refresh the metadata for the view / local library as a whole only for files determined to have changed since the last read of data by the library
  • Added a warning confirmation prompt before the ASIO output plug-in is attempted to be set as the active output plug-in due to the issues that using the plug-in may have (especially resetting volume on track changes depending on driver / device handling)
  • Added better help messages for some of the actions that may require admin access to complete (e.g. skin installation & enabling the agent mode) incase they fail or the user cancels things &/or doesn't get the then expected result
  • Added options to the Local Library sub-menu on the Library button menu to go to the Folder Monitor preference page along with triggering a rescan of any actively enabled folders set to be monitored
  • Added WACUPified versions of the old 3rd party Thinger & Yar-matey! Playlist Copier plug-ins for better integration (these are installed but not enabled by default on new / updated installs if not already present & removes the need for the extra_plugins archives that the beta testers had needed to get access to these)
  • Added a tooltip on the library podcast navigation node when feeds are being updated to give a better indication if some appear to be taking longer than expected to be processed to help track them down
  • Added /SEEK= to the command-line options as a more obvious action compared to /WA_IPC 106
  • Added an option to the General preference page to allow for disabling the physically delete item handling in the core & native WACUP plug-ins (this will disable menus, shortcut handling & for some of the ui related aspects hide the icons that might appear when this is set to disabled)
  • Added to the advanced prefs page a set of options to control the playlist formats (real & virtual) that WACUP will attempt to handle (this is more for debugging purposes but might help in some scenarios)
  • Added an option to the Playlist preference page to allow for the item lengths to not be shown (this complements the existing option to hide the playlist item positions) & some related library playlist view handling to get this working with it
  • Added a workaround for WINE installs to try to use the 'DejaVu Sans' font for the library clear search / edit view buttons instead of relying on the main ui font since it all too often will show as an empty box (which is what'll still happen if the desired font cannot be found & is something afaict about how WINE does it's font mapping for extended characters vs what Windows is able to do)
  • Added an option to the Classic Skin preference page to be able to disable the song timer flashing between showing the current position & not if playback is paused (default behaviour is to flash it)
  • Added a workaround for files going through the re-used DirectShow (in_dshow) plug-in to avoid some file access sharing conflicts
  • Added a workaround for the AjaxAMP plug-in to avoid it causing a hang on closing due to getting into an infinite waiting state
  • Added a workaround for the modern skin engine & related skin scripts used to open the folder a file (typically what's playing from the in-skin albumart panel areas) to try to be more like the rest of WACUP & have it open the folder with the file selected (this should hopefully not break any modern skins but you never know & would need to have this modified later on - if it breaks anything report it!)
  • Added an option to try to provide a copy of the albumart for currently playing item in a manner that allows Discord to show it instead of just being limited to the predefined logo branding image
  • Added forced mono playback support to the FLAC, Musepack, Vorbis & WavPack input plug-ins (for when the option is enabled via the Playback preference page)
  • Added 24-bit output support for Musepack when the option is enabled via the Playback preference page
  • Added an option to the native scrobbling support so it can be made to only scrobble what's known to be in the local library database as a means to control what might be scrobbled (e.g. ignoring temp files)
  • Added processing time to the /*DIAG command-line options to help give an indicator of any perf issues when trying to load the specified database
  • Added an option to the classic skin prefs page so it's possible to disable the ' *** ' part appended to the songticker text if it needs to be scrolled due to being too large to fit within the skin area
  • Added a $rating([filename][, star_mode]) ATF method to make it hopefully simpler to have the current playing or a custom file's rating shown using unicode stars (imho nicer to look at vs asterisk unless setting star_mode to zero)
  • Added all of the created generic embedded windows to be accessible as toggle window global hotkey action instead of relying on the core &/or plug-in creating such windows to set things up which meant some were missed
  • Added support for skins to override the default big clock window colours which follow the main skins colours by either a bigclock.txt or via plugin.bigclock.* colours from modern skins (done in the same manner as the waveform seeker plug-in)
  • Added an option onto the History media library node to try to refresh the current titles it has cached which can be useful if the main ATF has been changed to help keep things looking the same (this new action will not refresh the title for urls as that's often not going to be viable without playing them & I doubt anyone would appreciate them all being pinged)
  • Added matching refresh & remove menu items from the local library node right-click menus to the local library view settings button menu which should make it easier for some to find that don't know about the node right-click menus
  • Added a remove view item(s) menu action to the local library view settings button menu as a complement to the additional menu items noted in the line above
  • Added a workaround for those trying to use dsp_altacast.dll (though it's installer will break WACUP's FLAC support due to replacing it's dll with a much older one) so it can now find WACUP's lame_enc.dll without needing to manually install a copy of that dll in the root of the WACUP program folder
  • Added making backup copies of the bookmark related files when they're being modified incase of there being any issues during the modification process
  • Added basic panning / balance support to the Not So Yasapi output plug-in but only if the source is stereo (mono / more channels is something for later) which should suffice for most when this plug-in didn't do anything (it's somewhat at odds with the intent of WASAPI but its been asked for a few times now so here we go)
  • Added a /PROCDUMP command-line option to aid in debugging issues if it's not possible to get WACUP started to be able to access the Error Reporting preference page to run the equivalent mode this now adds
  • Added a workaround for modern skins being used where the gen_ff plug-in won't correctly clean-up some of the temp files it creates in the OS TEMP folder causing a load of wtf*.tmp files to potentially build up over time (as for whatever bizarre reason it insists on making copies of some of the OS provided fonts before trying to use them instead of oh I dunno just using the actual font the OS is providing...)
  • Changed how the input plug-in metadata cache clearing action is triggered which should better avoid some issues seen by them trying to provide a response for the fake file that's being given to them (e.g. could cause some weird hangs on closing with some of the older input plug-ins)
  • Changed how main playlist title updates are handled when process closing is started to avoid closing taking too long & triggering the OS unresponsive handler
  • Changed how the preference window works to better verify that the dialog attempting to be created is likely to be valid before creating it to avoid a crash
  • Changed how the missing files highlighting is initialised to hopefully avoid causing a hang crash
  • Changed some of the metadata loading handling for the CD input plug-in to avoid a timing conflict when metadata for the loaded CD is trying to be obtained
  • Changed how the supporting dlls defined to be delay loaded by the input plug-ins is handled to attempt to resolve the loading failures (or unexpected dll unloading) seen by some in combination with some of the multi-threaded actions being made of those input plug-ins
  • Changed a number of the library plug-ins to no longer use delay loading which should resolve some of the crashes experienced by some with the recent build along with a small file size reduction across them
  • Changed the initial loading of the podcast & its related downloads view so it now won't attempt to pre-prime the local library database (if being used) as that was causing some ui elements to hang if starting / resuming playback on load (this reverts a change that was made a while back within the beta builds where at the time it had actually improved the ui elements hanging but other changes have since negated the need for this)
  • Changed the visualisation preference page to try to reflect more changes live without having to manually start / stop things (e.g. when selecting a sub-module)
  • Changed how exporting bookmarks are handled to use a quicker internal solution which also makes things nicer when using the pls output mode
  • Changed the streaming url plug-in to try to obtain some of the title information if not playing & the core requests a title (e.g. after adding a youtube url) though this can be slow (normally seeing 3-5 seconds for yt-dlp to resolve the information being asked for)
  • Changed how the local library albumart cache works (again) to avoid a collision which could cause "Artist1Hits" & "Artist2Hits" to show the same albumart due to matching things on "Hits" for the album
  • Changed the local library view handling to use playcount as part of the associative sorting when the rating column is the selected column to sort by (this better aligns with how the removed ml_local worked)
  • Changed some of the internal listview related calls when dealing with item selections to try to minimise reprocessing done in some instances which could in rare cases trigger the unresponsive handling
  • Changed some of the internal main playlist title update handling to hopefully resolve the slow to respond / deadlock that a number of crash reports implied
  • Changed a number of the plug-ins to make use of a new internal api call that attempts to get all of the needed metadata in one call from the local library (which is usually faster) with it falling back to getting the metadata on a per value basis whilst hiding all of that to simplify what the plug-ins need to do
  • Changed some of the internal playlist calls for getting & setting information (mostly related to the length) to avoid a deadlock & concurrency related issues
  • Changed the async albumart requests work to avoid a deadlock seen in some crash reports (e.g. due to the lyrics plug-in window & cache priming conflicting)
  • Changed the streaming url plug-in to remove a small delay in the processing of urls (this however doesn't resolve the fundamental slowness with yt-dlp's processing)
  • Changed how the taskbar text string is updated to try to workaround a rare hang crash that can occur to have it abort the action if things are likely to block
  • Changed some of the tooling related handling to consistently use async downloading which should resolve some of the ui related hang crashes that some have had
  • Changed the add / open url dialog to now attempt to process any url based playlists entered into it to use a non-blocking method to process the downloading (still need to apply this to other aspects)
  • Changed some more of the in_2sf initialisation to halve the remaining initial dll loading time & reduced the memory usage until the plug-in is actively used for playback
  • Changed how skins are being parsed to now ignore instances of a single skin archive within a sub-folder within the skins folder as that is not correct (occurs when extracting some "skin packs") so they will not appear in the menus / preferences as it's not worthwhile to re-work a load of the skin handling at this time
  • Changed some of the handling when trying to get the items within a local library view to elsewhere to hopefully resolve the deadlocking issues that have been seen in some crash reports
  • Changed how podcast feeds once downloaded are handled to try to avoid blocking in the libcurl callback handler which from some crash reports might be blocking actions for too long on some feeds causing weirdness to then occur once it's released & able to spin back around to process any remaining feeds
  • Changed the internal list of extensions to be ignored when getting metadata requests to avoid some more based on recent crash reports (e.g. ini)
  • Changed the checks made for an unhandled crash on the next time WACUP is run to verify the files needed have some data in them before trying to submit them
  • Changed the local library plug-in to do some more caching of api call responses to minimise instances of the calls blocking on another call on the same file
  • Changed how the lyrics plug-in handles initial loading of the background albumart to reduce it's initial loading impact to avoid a potentially large image resize action occuring on the main ui thread
  • Changed how the api calls to seek within the playing item are handled to be more reliable especially if it's from a quick stop & restart of playback where some of the input plug-ins can action the call but might be incorrectly reporting that seeking is not possible (this could cause some of the playback resume handling to fail but isn't the only cause for it)
  • Changed the milkdrop DirectX 9.0c not present handling to show the messagebox for longer before it'll then attempt to then auto-install it unless no is selected
  • Changed some of the WINE related handling including for now disabling WACUP's dark-mode detection if running under WINE as visually it's a mess due to afaict incomplete handling on WINE's side for things
  • Changed how the podcast library views handle tooltips for the feed / downloaded items to better condense down multiple linebreaks which can come from the source html so the tooltips use up less space
  • Changed most of the handling around thread creation to resolve some issues if they fail (e.g. due to low process memory) & to reduce code duplication throughout
  • Changed the local library & history database handling to attempt to recover the database if there's determined to be some indexing related issues within the files (e.g. due to dat & idx file mismatching)
  • Changed the podcast plug-in to attempt to determine incomplete downloads more consistently though this is still not 100% due to a lot of feeds not providing the correct file size of what will be downloaded
  • Changed the initial installer text to better reflect the current state of WACUP & it's feature support
  • Changed libcurl to make use of the c-ares library for the asynchronous DNS handling which reduces the time with large podcast updates
  • Changed the lyrics window loading so it'll avoid drawing the not found image when actual albumart is known it'll be drawn for a small time saving during initial process loading
  • Changed saving the current shuffle table to be done on it's own background thread to avoid it triggering a main ui thread hang for some setups where saving out was taking too long
  • Changed the global hotkeys plug-in to not be enabled when running under WINE since support between it & WINE & the user's desktop environment doesn't seem to be working per feedback (if WINE improves then this can be re-enabled at a later time & there's the command-line actions which can be used as needed via shortcuts which seems to get close to what's needed as a workaround)
  • Changed how closing works so WACUP will now attempt to minimise itself to avoid any ui related aspects updating whilst any potentially slow running actions (e.g. saving out playback changes) could previously cause the ui to stay shown in a somewhat unresponsive state which has in some instances allowed the user to try to still interact with it & that then causes the unresponsive handler to take over
  • Changed (again) the main image resizing implementation to something which does it much quicker (e.g. 220ms to 60ms for one 2900x2900px test image in the albumart window to go in a near 4K albumart window) which should make a number of aspects feel smoother along with allowing the local library cover view to process & populate things quicker overall (especially if set to prepopulate the albumart in the view)
  • Changed how the child library playlist view is handled to do item title load / refreshes on a background thread (e.g. for playlist items missing a pre-generated title on loading) to avoid ui related blocking (especially helpful during initial WACUP loading)
  • Changed the preference option to control the visual style of the plug-in preference page lists (icon + description vs simple list) to be on the root Plug-ins preference page instead of being part of the Advanced preference pages along with some other reworking of the advanced preference page layout for other changes made to it with this build
  • Changed the waveform decoder preferences to now be done as an integrated preference page along with adding an option to control the old floating point file normalising behaviour (which could make some files sound louder than expected)
  • Changed the installer to prevent it installing on WINE instances prior to 7.0 to avoid a number of issues that WINE 6.x & earlier have causing aspects of WACUP to break or not run correctly at all for some
  • Changed the minimum size allowed for the classic skin embedded windows to now be 250px (or the scaled equivalent) from the 275px minimum due to how the skin frame elements are defined (may look into adding additional skin elements to allow for small window sizes but that would require skin updates to occur so may not happen)
  • Changed how the crash reports are generated to make it easier for the Error Reporting preference page to now be able to show the crash summary for the last crash that occurred (depending on the type of crash this may still not be able to show a reason but it's doing the best it can for now)
  • Changed how IPC_STARTPLAY is handled from some of the gen_ff related plug-in calls to try to have it avoid a weird hang crash seen by hooking it & changing it to be proxied on as a PostMessage call
  • Changed the handling around the re-used in_mp3 plug-in to minimise the chance of it causing a hang on close crash (e.g. due to older dsp plug-ins not behaving correctly) during stopping / process closing
  • Changed some of the library plug-in loading to do a better job in avoiding non-WACUP named copies of plug-ins from being used (related to some work done to provide a newer 3rd party ml_sony.dll compile)
  • Changed the handling around the gen_ff metadata calls to try to further reduce the chance of it causing such calls to make a long running query occur on the main ui thread which can cause the OS to treat it like a hung process (until a replacement gen_ff is made this is always going to be an issue as it's scripting doesn't like asynchronous ways of doing things which is needed when it comes to metadata)
  • Changed how the crash reporter handles auto restarting so the dialog now cancels the restart if using the action button or clicking the close window button instead of triggering the restart immediately which is useful for when there's a core bug which might get it stuck in a restart loop
  • Changed the message shown if there's an issue to load any of the needed w5s component dlls to make it more obvious that re-downloading the WACUP install is required if it failed after a self-update attempt
  • Changed some of the native WACUP input plug-ins to attempt to react to the main replaygain preference option being toggled if playback is happening (there's still cases where it will not fully live update)
  • Changed back the global hotkeys plug-in to be loaded under WINE again as it can work for some setups & was unbeknownst to me being actively used so this should resolve that for those users
  • Changed how the WACUP core dll is built to now have the cpu optimised image handling aspects in a supporting dll (pucaw.dll) which is mostly to help save time when compiling the core dll
  • Changed the diagnostic preference page & crash reporter system details for WINE setups to better handle things when some of the information isn't provided despite the API calls giving a successful response
  • Changed some of the plug-ins, supporting libraries & core dll loading to reduce the memory & some aspects of initialisation to be done when they're going to be used instead of always done if never used (this is a small reduction compared to work done a year or so back but every byte saved & fewer calls needed to allocate more memory helps)
  • Changed the crash reporter to skip reporting the current skin in it's summary log file where it's know that a heap / process memory corruption has occurred which is likely to cause ini reading issues
  • Changed some of the plug-ins & core dll to remove some duplicate processing done on internally generated strings to reduce some of the cpu overhead for small per-call savings (aka micro optimisations)
  • Changed how WACUP is shown in Task Manager for its running process name depending on which loader exe is used
  • Changed IPC_GET_GENSKINBITMAP to expose the core's viscolor.txt related information for those skins supporting it
  • Changed some of the nde memory handling for a small reduction in database loading times (typically a few ms per db)
  • Changed the missing files highlighting of the main playlist to now do the periodic checking on a background thread to avoid it causing ui redraws & potentially blocking the main ui thread when the view of the playlist hasn't changed nor has the missing status of the items shown which avoids some main ui thread contention & triggering playlist redraws & the associated cpu load for no useful benefit
  • Changed the Taskbar Text sub-page to allow for the option to control appending ' *** ' to the end of the taskbar string if scrolling is enabled to be available under the default taskbar text string (previously it was only available if a custom atf string was selected to be used for the taskbar text though disabling this may break some external tools that scrape now playing from the process text)
  • Changed how the tooltips for the generic skinned windows are created to minimise their impact during initial loading (they tend to take 5-10ms to be created on my dev setup which adds up with multiple windows)
  • Changed the streaming source plug-in to avoid lame_enc.dll being immediately loaded if there's no streams configured to automatically be run on load
  • Changed how resuming playback on loading works to avoid a potentially noticeable delay in playback starting if replaygain handling is also enabled
  • Changed how the podcast plug-in saves out feed changes to avoid it causing as many ui related blocks along with getting it begun sooner during closing if there's a need for it
  • Changed how the native window tooltips are handled to skip creating them if a modern skin is being created
  • Changed how current playing information from the input plug-ins is handled to avoid too many calls causing higher than expected cpu loads especially for some modern skins which run unrestricted on their System.onInfoChange(..) handlers (e.g. when responding to bitrate changes)
  • Changed the modern skin timer frequency option to now offer a lower 15 fps target (this can help to reduce cpu load but will more noticeably affect some modern skin related animations & responsiveness) as well as hooking the timer responsible for the main visualisation so the option now applies to it (for some skins this will cause them to now see it running at 60fps instead of at around 40fps as seems to be gen_ff's default based on the timer interval specified)
  • Changed the WAV handling input plug-in's "formatinformation" response to try to report the sub-format of the file (e.g. "Signed 24 bit PCM")
  • Changed some more of the aspects related to modern skin plug-in handling to better ensure it's only created when a modern skin is being used for a small load & memory saving when only using classic skins
  • Changed how the vertical padding around the skinned buttons is determined to help avoid the lower part of characters like y being clipped (more of an issue for those on Win7)
  • Changed how the w5s components are loaded so more is done to check the expected callers of them to allow the core loader to avoid registering those that are not going to be needed (e.g. vp6/vp8 for in_nsv)
  • Changed the visualisation plug-in menu to now show a running or stopped text next to it to better indicate the known status of the plug-in by the core instead of it just showing as checked or un-checked
  • Changed how things occur after a known crash to attempt to clean-up any wtf*.tmp files which may have been left by the modern skin engine plug-in not being able to complete it's normal (albeit buggy) clean-up
  • Changed how the local library plug-in db change syncing is handled to minimise running whilst other queries can occur
  • Changed some playlist item length handling to avoid quirks seen when zero was specifically set (treated as no length)
  • Changed the installer to skip the Win7Shell plug-in being installed for those trying to use the Vista Extended Kernel
  • Changed the native media library plug-ins to update the currently playing item on next / previous if it's not playing
  • Changed the installer to auto-disable the Not So Asio plug-in if not actively used to reduce bug reports involving it
  • Changed the podcast view handling to reduce the scope of any internal locks & minimise the chance of that deadlocking
  • Fixed some of the crash issues seen with the Not So Direct output plug-in due to timing &/or input weirdness due to issues experienced prior to the output stage
  • Fixed a crash if the playlist editor window was sized to nothing whilst trying to scroll within it at the same time
  • Fixed a crash hang on closing if the preference page to show WACUP's current version information is slow to respond whilst also trying to close the WACUP instance
  • Fixed the probable cause of a deadlock with in_mp4 due to trying to process a stop request whilst other actions are still in progress (e.g. starting youtube playback)
  • Fixed the probable cause of a crash seen if there's an issue in trying to create a generic skinned window for a visualisation plug-in which is then destroyed as part of the failure clean-up related to this
  • Fixed a timing issue with how some internal aspects of visualisation plug-ins & the classic skin main window vu meter work which could cause it to randomly fail especially after doing fast switching to an item with different output format (e.g. sample rate changing)
  • Fixed a number of issues related to visualisation plug-ins with multiple modules within them when interacting with things via the visualisation preference page
  • Fixed a crash for some setups when trying to export the current bookmarks file to another format
  • Fixed opening to the crystal classic skin prefs page not working correctly & causing painting issues from the prior classic skin preference page that would've been shown before the plug-in forced it's own
  • Fixed a text clipping issue on the streaming source status text which appeared when it's been running on the same connection for many days
  • Fixed the add / edit view dialog getting stuck if having tried to edit the root local library view first & then going to add a new sub-view
  • Fixed a regression causing newly added library playlists to not always appear or react as needed within some ui elements until restarting
  • Fixed some issues with the handling whilst getting titles from yt-dlp which could cause them to show with question marks instead of the intended characters
  • Fixed a number of youtube urls not playing as expected (no playback & causing high cpu, super slow fps & missing audio, odd frame pacing)
  • Fixed a deadlock which could occur whilst trying to do a local library import / refresh & an item doesn't have a known 'album' metadata value whilst trying to determine associated albumart details whilst doing other interactions with the local library plug-in views &/or database
  • Fixed the probable cause of a crash when using the send-to menu in the bookmarks library view
  • Fixed some actions incorrectly trying to process CD related items using the alternative CD path format which could then cause WACUP to become unresponsive due to multiple actions trying to access the disc
  • Fixed some of the audio from the last played 2SF file being heard at the start of playing another 2SF file
  • Fixed a crash with out_neo if there's an issue with the selection of the output plug-in which is used by it
  • Fixed a crash seen when checking if a JPEG file was valid prior to trying to fully decode the image file
  • Fixed some issues due to input plug-in corruption / unexpected member overrides (e.g. due to in_mp3pro)
  • Fixed the probable cause of a crash seen when downloading a podcast in low memory / other process issues
  • Fixed some duplicate processing when internally converting strings to save time & avoid object lifetime issues
  • Fixed the waveform seeker not drawing cue points correctly due to a painting optimisation change from months back
  • Fixed some overpainting & flicker issues with the adding / processing status area at the bottom of the playlist window
  • Fixed a number of small issues related to how local library view sorting is handled across threads to hopefully resolve some of the odd crashes seen especially when doing fast local library view switching
  • Fixed read-only OGG files failing play due to incorrect file permissions being requested when attempting to open the files
  • Fixed a crash issue due to an internal api issue related to the handling of library window node creation & localised strings
  • Fixed a crash due to being able to trigger the skin right-click menu on the skin preference page if no item had been selected along with the menu incorrectly appearing when it shouldn't if clicking on the dead area of the list
  • Fixed a crash on close due to the Win10Shell plug-in where in some instances it's able to cause the process closing message to be received twice which then caused the plug-in to deadlock itself on the first call to close whilst receiving the second self-induced call to close
  • Fixed the probable cause of a hang / crash on closing (especially if doing quick load & closes with autoplay enabled) when using Not So Direct due to mishandling output device releasing which could cause the DirectSound threading to not like what's happening
  • Fixed some threading issues with the Streaming Source DSP which could cause a hang / crash on close to occur due to the title update thread still trying to acquire metadata when it's no longer viable
  • Fixed the waveform seeker plug-in sometimes trying to open a file for processing when the overall process is trying to close
  • Fixed a number of thread handling issues with some being able to keep running after they should've been stopped (e.g. bookmarks loading during a quick load & close)
  • Fixed in_mp4 triggering a crash under procdump instances when stopping playback due to a mis-timing in some of it's clean-up
  • Fixed the probable cause of a crash on closing with the history plug-in due to it's processing thread not exiting correctly
  • Fixed a number of issues with video only MP4 based files which either wouldn't begin playback correctly or metadata wouldn't be returned as expected
  • Fixed the format converting api getting stuck in an endless loop when trying to find an appropriate input plug-in for video only formats which could appear as the waveform seeker plug-in locking up / preventing closing from happening as expected
  • Fixed some items being incorrectly flagged as unsupported due to trailing characters / sub-file designations when checking for files being missing
  • Fixed a number of small memory leaks with the audio & video decoder handling in in_mp4
  • Fixed Alt+ not working if set as a global hotkey due to a conflict with the Alt+Click action on the stop button
  • Fixed a crash due to a timing issue with adding some of the preference pages whilst an unrelated attempt to get a localised string was also happening
  • Fixed a path generation issue with the ML_IPC_PLAYLIST_ADD api when using the import flag preventing the specified playlist from being copied over to be a library managed playlist
  • Fixed the local library not being able to correctly detect PNG albumart for the 'has artwork' & related metadata columns
  • Fixed the local library plug-in sometimes not accepting podcast additions if the item was already in the local library database but a re-download / podcast feed parse is attempted
  • Fixed the probable cause of some of the jtfe related actions on the send-to menu causing a crash due to incorrectly parsing the string list
  • Fixed a few instances where the handle from CreateThread was not being correctly released which could cause the process handle count to grow unexpectedly which for some could cause a process crash to occur
  • Fixed the podcast image handling not correctly trying to re-download the branding image if what's found locally isn't complete when a feed is being updated
  • Fixed some of the input plug-ins crashing if there's a delay between playback being attempted, their playback threads starting & a received stop / restart playback action
  • Fixed a crash seen by some when closing the folder monitor preference page
  • Fixed a memory leak for some instances where a local library internal query is mid-processing & is cancelled for another call (impact of this massively depends on machine speed & size of library database)
  • Fixed a loading quirk with the albumart window which could cause it to show the unpopulated cache image if the local library is taking too long to respond to the request
  • Fixed importing some older local library databases due to incorrectly handling the stringfields which could cause some actions to unexpectedly fail despite things seemingly looking to be correct
  • Fixed some small performance issues with the local library plug-in from the style of internal queries used to avoiding some reprocessing when it's determined it's never going to succeed with it
  • Fixed non-real filepaths incorrectly being reported as missing when the local library is checking for missing files when they are actually there & a check wasn't using the actual filepath for it
  • Fixed some deadlocks related to the visualisation plug-in handling especially when the multiple visualisation plug-in handling is enabled & actively being used
  • Fixed a crash due to how a file path conversion api was being called not handling multi-threaded access correctly
  • Fixed a classic skin loading issue which could prevent bitmaps with palletised colours being displayed correctly
  • Fixed a playback issue for DFF / DSF files via the in_dsd input plug-in if a DSP was currently active
  • Fixed a multi-threaded crash issue when trying to save multiple files from online responses at the same time (e.g. updating associated artwork for podcasts)
  • Fixed the probable cause of a crash when resizing some images especially in low available memory scenarios
  • Fixed a crash seen by some when doing clean-up of string data being passed into NDE based database files
  • Fixed a number of reproducible issues with trying to install skins into WACUP when a manual file association for the wsz & wal file types has been setup along with better handling of user cancellations
  • Fixed some issues with the Streaming Source & Server plug-ins where disconnecting & reconnect might not work correctly along with a possible audio glitching issue due to how title updates were handled
  • Fixed some title update requests from the main playlist incorrectly causing the local library to show a processing state with its navigation tree icon when what was attempted has long since been completed
  • Fixed some more dark-mode related issues with the Milkdrop (& possibly other plug-in) preferences due to mis-alignment of the drawing of some of the control texts
  • Fixed some file extension to input plug-in matching not working as expected when the file extension contains multiple periods (e.g. sc68.gz) causing the file to not play or go to the wrong input plug-in
  • Fixed some test metadata calls not getting the correct response for MP4 based file types (e.g. the type of the file not reporting video when it would normally be based on the assumed file extension)
  • Fixed a playback failure with Youtube urls via in_mp4 which mostly appeared in the dev / interim builds but was potentially able to appear within the prior builds
  • Fixed a deadlock issue if opening the history database fails along with some other related handling changes if there's a loading failing within the other plug-ins
  • Fixed the intended live loading of disabled library plug-ins via the media library preference page not working correctly in all instances along with the list not being sorted to place all active plug-ins at the top
  • Fixed the Ctrl+Alt+E / refresh playlist metadata action not handling all actions correctly depending on the main playlist title metadata reading options which could prevent changes from being observed
  • Fixed a visual issue with the bottom area of the queue manager window & library view when there's queued items
  • Fixed the queue manager library view not being created if the library core is enabled after WACUP has been loaded
  • Fixed the adlib based input plug-in not reporting the family string correctly for some file types (e.g M as A2M)
  • Fixed a handling issue if the artwork cache wasn't able to process the passed in image correctly which could cause the default / fallback image to incorrectly be used despite the source image being valid
  • Fixed the local library taking far too long to resume processing some of the background actions if a ui related call occurs which needs to interupt things (e.g. getting album metadata for artwork loading whilst doing a background refresh of metadata within the local library database)
  • Fixed a performance issue with the local library ingress thread by not properly caching the supported list of file extensions which caused it to be re-generated on all files attempting to be processed (e.g. going from around 60 seconds to do a quick check of metadata changes against 30K items down to 2 & a bit seconds)
  • Fixed some MP4 based files not playing / rendering all elements due to not correctly parsing the sample size information
  • Fixed a conflict between the Autoplay & History handling during initial loading which could prevent the resumed playback from being tracked though the playback offset (if that's enabled) would be tracked
  • Fixed a regression which broke the fallback handling of misnamed opus files with the ogg extension & vice-versa not being passed onto the appropriate input plug-in if the first match cannot play the file
  • Fixed a number of inconsistencies with the physically delete items handling between the core & plug-ins (e.g. main playlist right-click menu shortcut style & incorrectly being hidden when disabling plug-ins)
  • Fixed some quirks found with the albumart window due to the sped up image resizing sometimes allowing things to get out of sync visually during some quick playback & selection related changes
  • Fixed the child library playlist view incorrectly trying to re-generate titles for items that are missing one & had already been attempted to have a title generated for them which could cause some ui lag
  • Fixed the podcast download view list loading text not spinning
  • Fixed an mpg123 dll compilation issue causing it to be larger than needed
  • Fixed the in_mod input plug-in configuration incorrectly mentioning the option to treat files with sub-songs as a single file would only play the first sub-song when it should be playing all of them (that was only a thing during an interim build & was long since resolved between the config option being added & the prior preview build having been released over a 2.5 year time range)
  • Fixed a seeking issue with the in_mod input plug-in if configured to treat files with sub-songs as a single file due to a library bug
  • Fixed floating point encoded WAV file formats having their output incorrectly normalised which could cause some files to play much louder than expected (there's a preference option to be able to re-enable the old behaviour for those that might not like this default behaviour change)
  • Fixed some debugging code incorrectly being triggered by some setups which could cause a crash on initial loading
  • Fixed the link on the Error Reporting preference page to open the crash reports folder incorrectly selecting all of the crash report archives found in the folder instead of only selecting the most recent
  • Fixed a crash hang due to trying to determine albumart for cue files (this isn't a currently supported mode & the re-used in_mp3 just doesn't behave well for this)
  • Fixed an issue with in_midi sometimes causing a hang on closing due to the call to clear metadata cache as part of the main playlist title refresher sending an api message to the main window from within the main window processing
  • Fixed an api compatibility issue between the replacement local library plug-in & the re-used portables plug-in from 5.666
  • Fixed the version information on the snesamp wrapper about messagebox not being loaded correctly due to an api call issue
  • Fixed some issues reported with the installer whilst trying to obtain the Winamp 5.666 installer which should improve the reliability of the action (small refinement over the big overhaul done earlier on)
  • Fixed a weird crash with the gen_ff plug-in patching due to a timing issue in setup vs getting the plug-in hooked on load
  • Fixed the AVS window preset submenus not appearing requiring hard disabling of the skinned menu handling (might be something to do with cross-threaded handling but for now its simpler to disable it here)
  • Fixed the probable cause of a crash on closing due to the modern skin engine plug-in unloading or skin switching from modern to classic whilst some actions might have still been trying to determine the type of the skin as part of skin changing related notifications
  • Fixed the geiss visualisation plug-in incorrectly being compiled to always show the running frame rate as that ironically will reduce the frame rate (also re-worked a few things to minimise it's impact if enabled which gets it close to running at 30fps for some of the modes with 4K resolutions)
  • Fixed another handling issue which could cause a crash when switching from a modern style skin to a classic skin if an albumart request was in-progress from the modern skin engine
  • Fixed the replacement local library plug-in not implementing some non-unicode apis which some plug-ins not previously tested require to fully work (e.g. ml_sony)
  • Fixed the in the /WA_IPC command-line calls incorrectly being limited to 0-65536 when it should be 0-4294967295 due to the validation being re-used on
  • Fixed a thread handle resource leak caused by the in_mp3 input plug-in if it attempts to play something it cannot handle which over time can cause the process to fail due to too many open handles (aka the fun you can hooking dlls to workaround bugs without source code)
  • Fixed the spawned menus in the main playlist editor window when using a modern skin not triggering some of the intended core to plug-in callbacks which prevented some of the per plug-in submenus appearing
  • Fixed some of the font lists showing duplicate fonts (seen when running under WINE where it doesn't appear to de-duplicate instances of the same font which could cause some setups to lag enumerating them)
  • Fixed the probable cause of some modern skins showing random colour blocks when the skin is set to be scaled below the default size
  • Fixed the extraction of file extension changes from the prior build not working as expected which caused some files with multiple dots/periods in their full file paths from being played due to the wrong extension having been extracted which could not then be matched to any of the appropriate input plug-ins (this reverts some of the change as aspects are still needed for virtualised vgm related file paths)
  • Fixed the refresh metadata action in the local library filter panes not working due to a bug preventing the contextual data being passed to the processing thread
  • Fixed the local library view albumart cache not generating a consistent hash for the file when the media file was located within the first level folder (e.g. d:music) which could cause some actions including refresh the albumart to not always work as expected
  • Fixed some albumart in the local library views not being displayed correctly (e.g. part of it being wrapped to the other side of the image) if the original size of the image vs the requested scaled down image didn't align in an expected manner against the desired output size for the image vs any centering that might be needed
  • Fixed using the built-in null output plug-in under some modern skins causing a crash when trying to interact with the skin crossfading controls (this isn't supported by the null output & neither is crashing)
  • Fixed the IPC_UPDTITLE api & similarly related internal actions not always appearing to work due to the background metadata request processor not always being created in an expected manner which also manifested in streaming url title updates not being shown
  • Fixed the equaliser window button right-click menus getting corrupted due to the wrong menu being worked on with the newly added actions on the on/off button from the prior build
  • Fixed a playback failure with in_mp4 in relation to the crash fixes introduced from the prior build due to some iTunes related metadata for gapless playback being incorrectly re-applied on all audio samples
  • Fixed the possible cause of some installs experiencing crashes when there is a playback event triggering the Windows 10+ SMTC feature due to some aspects of the cppwinrt instance having not been initialised
  • Fixed a crash with the recently added native scrobbling feature if playback is happening & the scrobbling setup has not been completed at the time of a new playback event
  • Fixed an in_mp4 related crash more likely to be seen if still playing whilst closing has been triggered due to an incorrect status check
  • Fixed in_mp4 not applying ReplayGain to AAC audio because someone didn't remember to do it when libfaad2 was introduced for AAC playback
  • Fixed another crash in the notsodirect output due to a mishandled device sharing update
  • Fixed how ReplayGain information is obtained so it should no longer cause a potential long blocking action on the main ui thread (e.g. due to the local library already being busy at the same time) which has been causing some setups to crash due to the OS treating it as a hung process or for refreshing the newly playing item title updates to fail or for ReplayGain to not be applied as expected for any MP3 files
  • Fixed a playlist item title formatting crash issue (possibly a weird side-effect of the issue above this)
  • Fixed a libpng build configuration issue which could cause valid png files created under much older libpng versions to fail to be decoded as expected which could cause full process crashes to occur or aspects of some modern skins / albumart to fail to render as expected (this explains some of the weird skin loading related failures over the years as libpng 1.6.x changed some handling on chunk load)
  • Fixed NSF/NSFE playback not working due to an internal api change no longer passing the internal object to the playback thread (along with some related changes to avoid the thread handle from leaking)
  • Fixed the crash report summary incorrectly handling crash reports from WINE configurations due to them having an extra line in the message body which wasn't being clipped along with not being able to access the zip comment if it's already open in another process as long as it doesn't have an exclusive lock & allows for shared read-only access
  • Fixed a hang / crash that could occur in some instances when trying to use the preference option to completely reset the local library database if there's some actions already running against it which are taking longer to abort than expected
  • Fixed a small closing performance issue with the NSF/NSFE (in_notyansf) input plug-in which caused it to appear in the profiling output when most of the time it shouldn't have been
  • Fixed the JTF window initial search on load incorrectly following the search delay input time which depending on the configured delay would make the window loading feel really slow
  • Fixed some parts of the skinned JTF window incorrectly changing the text font seen when moving the window between monitors (more of an issue if the dpi of the monitors is different)
  • Fixed the unskinned JTF window not showing the search results in the listbox using appropriate colours if dark mode is enabled & WACUP is following that OS styling
  • Fixed some of the local library queries incorrectly allocating more memory for the item records than is needed when the number of results is known instead of allocating with the default padding
  • Fixed some deadlocks related to getting metadata from the local library plug-in which was more likely to occur when using a modern skin which displays metadata for the currently playing item within it
  • Fixed the play/enqueue/enqueue & play handling from the local library plug-in incorrectly allowing the thread used to avoid a main ui blocking action (e.g. if made to play all local library items) to be created as many times as possible when an action was already in process (aka don't hold down enter on a selected library node)
  • Fixed a crash when trying to update the internal shuffle table due to too many actions from different threads trying to start playback
  • Fixed the albumart plug-in window sometimes not showing the metadata that's expected for the playing / selected file if it's not present in the local library database (this wasn't a consistent failure)
  • Fixed some issues with a number of the input plug-ins not liking being called too fast as part of some of the fix testing in the lines above this
  • Fixed a thread safety issue with an internal api used to generate unique values which could in rare situations cause a processing related crash
  • Fixed the local library plug-in incorrectly enumerating over all of the extended metadata values when being used to generate item titles & a "stream" prefixed tag is requested (e.g. streamtype) which will never succeed as only non-stream values are supported by the local library
  • Fixed a performance issue with obtaining AAC audio data from MP4 based files which often affected the waveform seeker plug-in preview for such files (e.g. taking 15 seconds vs under 2 seconds for a 3 minute test file)
  • Fixed the JTF window flickering (still not 100% on the groupbox) on resizing or when moving it around (much more of a problem for the unskinned version) due to the native listbox control not doing double-buffered painting & some of the JTF window drawing code being slower than it should have been (it's now much faster) along with the skinned version incorrectly pre-filling all of the window background when only the area not showing items needed to be filled in
  • Fixed the JTF window not correctly handling DPI related monitor changes which could cause the window to appear in an odd manner making it unusable for some setups
  • Fixed the new library playlist action not always creating the initial empty playlist file which would cause the playlist view to show the no source playlist error
  • Fixed an recurring failure when trying to send files to be processed for replaygain due to a timing & feature validation conflict when checking writing replaygain metadata is supported
  • Fixed a crash for some replaygain processing attempts due to a conflict with trying to update the local library metadata for the file in a way that was needed when WACUP was using ml_local but is no longer needed for it's native plug-in
  • Fixed some FLAC files incorrectly playing which could appear as too much gain being applied
  • Fixed MP4 based files with AAC not showing the appropriate progess when processed for replaygain (due to decoder handling changes it often meant they'd jump from 49% to 100%)
  • Fixed the folder monitor status column being auto-resized incorrectly if there's no folders set to be monitored
  • Fixed the wrong reason being shown in the replaygain processing list when the file(s) trying to be processed are handled by any input plug-in(s) which are unable to save the metadata into the file(s)
  • Fixed the library navigation tree handling incorrectly handling the bookmarks & local library plug-ins when moving them in the tree by not putting them into the new position due to them also acting as drag & drop source points (aka not getting the api right & returning the wrong value for the intent of the action needed)
  • Fixed the library navigation tree incorrectly indicating that sub-node items can be moved when it's not currently implemented in WACUP's library core (will be considered as a feature to add later on)
  • Fixed some inconsistency with the way controls on the history preference page were being handled causing some to be incorrectly disabled from unrelated options
  • Fixed the 'is podcast' option on the batch metadata edit dialog being always checked due to not verifying that the value from the local library had been obtained
  • Fixed an internal api change exposing a title handling issue in the Streaming Source DSP when it's set to use the v2 protocol causing the current playlist string being used for the title parameter causing it to display incorrectly (e.g. as 'artist - artist - title' instead of 'artist - title' when using the default ATF formatting)
  • Fixed some typos related to the word library (libary & libray)
  • Fixed the podcast downloads view running its processing timer when there's no active downloads running for a small cpu reduction
  • Fixed a small performance issue with the classic skin song ticker due to not caching the length of the generated string for later drawing
  • Fixed the classic skin song ticker not reflecting the changed song in some instances (more of an issue since the above fix altered the timing of things happening to expose this occuring on going backwards)
  • Fixed some main window timer actions incorrectly being double processed which could cause for slightly more idle cpu load than intended
  • Fixed some more unwanted initialisations in some of the plug-ins for aspects not needed immediately along with a small performance issue on applying colouring to some of the image elements
  • Fixed the handling after a crash not always clearing out the last crash message which could cause it to keep embedding the first crash message into any other crash reports instead of the actual crash reason which would cause the error reporting preference page to show the wrong reason (all due to trying to avoid calling some actions during the crash collection stage that would fail if using the native OS ini handling)
  • Fixed a missing reason being shown for plug-ins intentionally not loaded by the core under WINE due to it not offering the support needed to use them
  • Fixed a random crash when attempting some podcast downloads due to a timing issue preventing the needed internal service from having yet been created
  • Fixed some of the menu items on the import sub-menu of the library button menu showing the folder monitor sub-menu instead of doing the intended mode
  • Fixed the library view buttons being double processed for some of the plug-in views on loading for a small reduction in view loading times
  • Fixed a possible crash issue when closing the internet radio or podcast views due to incorrectly handling the clean-up of the imagelists used by them
  • Fixed a resource leak when modifying the albuamrt on the Alt+3 / File Info dialog due to some debug code incorrectly still being enabled for the build
  • Fixed a resource leak when the library navigation tree needed to set the icons within it & they didn't already match to the existing native icon sizes
  • Fixed a loading performance regression with the Playlist Separator plug-in (in_text.dll) along with using a less than ideal way to register itself in time to have it's separator items shown in the correct visual state as soon as WACUP's playlist editor window is visible
  • Fixed a crash when trying to add some google podcast feed urls
  • Fixed memory leaks related to the hotkey registration mis-handling the display string being used for them due to a regression from a prior bug fix a year or so back
  • Fixed a timing issue with the about preference page where the build version information could stay showing as checking for updated information when the connection had already failed but was not indicated
  • Fixed the local library view filter pane columns not reflecting things correctly when they're being re-ordered (if supported within the view handling)
  • Fixed some issues with the custom mp3 encoder setting handling which could cause it to be ignored & use the default encoder settings vs what's expected
  • Fixed an ini parsing issue when priming the settings cache which could cause the processing to get stuck in an endless loop due to unexpected differences in the linebreaks found in some ini files
  • Fixed the core incorrectly trying to update some of the notification area icon tooltips when those icons aren't configured to be shown
  • Fixed a loading performance issue with the Not So Direct output plug-in causing it to equate to a third of the initial time to load the default output plug-ins
  • Fixed a regression which broke double-clicking in the waveform seeker window to start playback around the position of the double-click
  • Fixed how podcast downloads are verified to better handle the feed file reporting a completely different size to what is downloaded which could cause some feeds to keep re-downloading already downloaded episodes
  • Fixed unicode stars not shown in the classic skin songticker when set to use the skinned font (now it's handled like a normal asterisk character instead of showing as blank spaces)
  • Fixed the internet radio plug-in running a timer to update it's navigation node which hasn't been applicable for a few years
  • Fixed opening the about dialog before any other dialogs (e.g. preferences) not applying dark mode as expected
  • Fixed the titlebar text of the generic classic skin windows sometimes flickering during painting (aka double-buffering to the rescue)
  • Fixed playback resuming on start-up & showing what's playing in Discord is enabled could sometimes show as paused despite playback happening due a timing issue with how some of the plug-ins resume playback
  • Fixed a drawing issue with the big clock ocsilloscope visualisation mode where there could be seen a partial line from the centre line to the first plotted value (e.g. more obvious with sine waveforms)
  • Fixed the big clock spectrum analyser visualisation mode still moving / flickering when playback is paused instead of sticking with the last processed state per all other spectrum analyser instances seen
  • Fixed the visualisation preference page not showing the currently selected plug-in as selected if it's not actively running when the page is loaded (the plug-in would still be run via other actions but the page would effectively act like no visualisation had been selected)
  • Fixed some inconsistencies with the visualisation preference page & the main window menus which could make it seem like the selected visualisation setting had been lost when it was tied to the running state instead of the prior preference / menu selection
  • Fixed an issue with the multiple visualisation support which due to changes related to dropping the re-use of the Winamp core meant some of the WACUP visualisation plug-in handling now wouldn't trigger the quit method to be called on closing the whole process (closing a single visualisation plug-in would do as expected) which could prevent some window positions, etc from being saved out as expected
  • Fixed the streaming url plug-in incorrectly trying to react to some metadata requests which can at times cause slow responses
  • Fixed a copy of gen.bmp being incorrectly loaded when using modern skins which due to some un-understood weirdness is causing some modern skins to crash on loading (if not it saves a resource handle & around 70KB of memory)
  • Fixed a full copy of the default classic skin images incorrectly being cached when using a modern skin for resource, memory & time to load the skin reductions (this related to the above fix but was applied in a generic manner for any skin & not ones that seemed to have issues due to a coding logic that didn't avoid the main classic skin loader from being triggered)
  • Fixed a parameter check within the albumart handling preventing some of the modern skins with embedded albumart panels from changing to the not found / default image & stayed showing the last valid image
  • Fixed a small performance issue with some of the replacement drawing code the WACUP core provides to allow the modern skin engine plug-in to run under it (how noticeable this'll be I'm not sure as it's a bit of a percent reduction according to the profiler & there's a lot more work that needs to be done or better still just getting on with a native WACUP replacement plug-in to handle modern style skins)
  • Fixed the classic skin song ticker & some related handling being incorrectly triggered when using a modern skin (e.g. changing the playback volume) which is a waste of cpu when it's not going to be seen
  • Fixed switching between some modern style skins was causing an unhandled crash (i.e. WACUP's crash reporter would not be triggered) due to service callbacks registered by the modern skin engine not having yet been removed by the plug-in causing them to be called when they're no longer valid which is not going to work out too well (aka another reason I do not like the gen_ff plug-in)
  • Fixed the lack of a video config group for the modern skins to be able to query the "autoopen" & "autoclose" values
  • Fixed a crash when the re-used in_mp3 plug-in is sent some file path strings which cause it to get an response that the runtime it uses doesn't like instead of the plug-in doing some extra checking first
  • Fixed the modern skin script timer handler incorrectly running some aspects when starting WACUP under a classic skin & never changing to use use a modern skin
  • Fixed the reproducible instances of the modern skin related windows briefly flashing white whilst WACUP is still loading (this is quirk of the OS vs timing to create the windows & is jarring on a dark mode / low light setup)
  • Fixed the mode switching button of the Vortex modern skin not displaying which prevented the action from being able to work (is unclear if the cause of this issue affected other modern skins or not)
  • Fixed the region map image related handling in a number of modern skins not working which would typically appear as missing seeker position bar / elements due to the elements being treated as a null region
  • Fixed a crash when trying to resize some of the moderns skins when the scaling setting has been set to less than 100%
  • Fixed an image handling issue which for some skins could cause an obvious black block to appear during resizing of the main window (this was affected cpro skins more obviously but was also present with the bento based skins & likely most other modern skins)
  • Fixed the modern skin window entries not appearing in the expected block of the menu if video support has been dis

New in WACUP 1.9.19.16956 Preview (Sep 25, 2023)

  • Added support under Windows 10 / 11 for most configuration dialogs / messageboxes / windows shown to follow the OS dark mode setting (note: this is mostly relying on the OS to do the drawing so some controls &/or dialogs may not be supported depending on the OS version &/or specific revision being used) - if there's anything obviously missed &/or from 3rd party plug-ins then do let me know so I can try to handle them!
  • Added support under Windows 10 / 11 for the installer & uninstaller (once updated to this version or newer) to follow the OS dark mode setting
  • Added the ability to run the modern skin engine plug-in (gen_ff.dll) in WACUP's non-legacy mode (aka a big step closer to finally dropping the need for legacy mode & using the original Winamp exe to run)
  • Added a triple-size mode for classic skins (Ctrl+Shift+D menu shortcut) for those finding double-size is still too small (this depends on plug-in support much like some of the earlier WACUP changes to allow the generic skinned windows to support double-size)
  • Added an initial input plug-in for playing local Opus audio files (streaming support will follow later once the base plug-in including it's handling of metadata editing has been confirmed as working ok)
  • Added an input plug-in based on the recent in_vgm/libvgm solution (v0.51) by Valley Bell (named in_vermas so as not to conflict with existing in_vgm copies for those still preferring that) with the expected WACUP integration changes (transcoding, unified fileinfo / alt+3 dialog, removing legacy client support, etc)
  • Added 4 input plug-ins to the installer which add support for DS Sound Format (in_2sf.dll), Game Boy Advance Sound Format (in_gsf.dll), DS Nitro Composer Sound Format (in_ncsf.dll) & SNES Sound Format (in_snsf.dll) which increases the out of the box support for video game related format (these are modified from https://github.com/CyberBotX/in_xsf/ to improve WACUP the integration & resolve some issues)
  • Added reporting of the overall initial loading time (more might be happening after this time) & the time for the main aspects of the core to load into the load profiling output (some might find it useful if your WACUP install seems to take an unreasonable amount of time as a means of confirming if that is the case)
  • Added options onto the equaliser window 'auto' button right-click menu & the appropriate equaliser under modern skins to control additional equaliser preset handling to auto-select based on the reported genre of the playing item (this is the merging of the old 'Auto EQ' plug-in into the WACUP core to make things a bit quicker & more seemless with this feature that many had wanted over the years)
  • Added the helper IPC_TOGGLE_MUTE & IPC_IS_MUTED api for plug-ins to use to be able to toggle the current playback volume between muted & the previous level (if the user hasn't changed it since the api was called) & to check if the muted state is currently set (please note that this does not relate to the self managed mute option that modern skins offer)
  • Added a .beat time (Swatch Internet Time) mode to the Big Clock plug-in base on a request from the Discord server (niche player gets a niche feature so it somewhat makes sense)
  • Added compatibility changes to allow the old (circa 2003) Bouncing Cube visualisation plug-in to work under WACUP (this helps resolve it needing to be run as an administrator for the configuration options to be applied as well as resolving issues with the window size & position due to a conflict with OS DPI scaling vs a non-DPI based API that the plug-in uses with it's window position handling)
  • Added /REMOVEPLAYLIST which accepts a playlist guid (such as from /ENUMPLAYLISTS) to complement the existing playlist command-line actions
  • Added an 'Appearance' preferences page under the 'General' preferences node where the playlist editor font controls now reside (this has applied to everything instead of just the playlist editor which is why it's been moved from the 'Playlist' preferences page) along with using skinned preferences & skinned menus as well as some other non-skin specific options (more will be moved / added to this preference page in later builds)
  • Added options on the 'Appearance' preferences page to make it possible to adjust the font used for the skinned menus (new addition which Winamp didn't offer which should make them less jarring to use)
  • Added a new IPC_WACUP_HAS_LOADED notification to know that loading should have completed enough
  • Added an OS compatibility check for the 'FaultTolerantHeap' being enabled which can occur due to the OS being helpful if there are too many crashes (e.g. during development) but it can cause more problems such as modern skin loading issues & more crashes on closing (hence the need to make it more obvious if this has been enabled as it's caught me out a few times)
  • Added support to the appropriate WACUP provided media library plug-ins to allow for type to find to work (e.g. with the list focused it'll jump to the item that matches based on what's entered which Explorer & other instances of listview controls do & something I'd missed compared to the Winamp versions of the plug-ins)
  • Added the ability to specify a custom songticker ATF string (which works for all skin types) on the Appearance preferences page for those wanting more customisation over the look of their WACUP install
  • Added a configuration option to the Milkdrop plug-in to have it not recursively load presets found in the sub-folder of the currently specified root preset folder (this is not enabled by default as the abaility for the plug-in to find & render any of the available presets is less monotonous for most users out of the box vs this option which enables the 'classic' Milkdrop preset loading behaviour)
  • Added an option to the Lyrics plug-in to not show the albumart for the current item being shown (taken from a Discord request)
  • Added the option to the add / edit view dialog for local library views when using ml_ll to have the filtered results list aligned to the right of the view instead of to the bottom (still the default style)
  • Added remove item actions to the ml_ll local library views (including to the upper pane filters unlike Winamp's plug-in) & the navigation tree view right-click menus doing either removing the selected through to the ability to remove missing &/or unsupported items (where there is no input plug-in claiming ownership) which should make ml_ll better at purging items no longer needed
  • Added batch edit metadata (the ctrl+e in-view shortcut) to the ml_ll local library vies selection right-click menu which enables a mode that hasn't been working in the ml_local plug-in this replaces
  • Added support for the ml_ll local library database to be handled via the export -> local library option if it's the currently used local library plug-in (more to do with the old vs new handling but this'll do for now :) )
  • Added a save as csv file option to the ml_ll save as action as a more obvious version of the export smart view option (via the library button menu) which will save the current view results
  • Added tooltips on the classic skin equaliser window for the 'hidden' areas for setting the bands to maximum/default/minimum
  • Added an input & encoder plug-in for the True Audio (TTA) lossless audio format (this is lesser known but might be useful to some users with older audio collections that still need its support)
  • Added play/enqueue/enqueue & play options to the library podcast root node menu that allows for sending either all or only the newest podcast episodes into the main playlist editor
  • Added the ability to now also edit the title for a playlist entry (main & library playlists) in addition to being able to edit the entry that the playlist item relates to (dunno how this was never requested before nor why Winamp didn't have the functionality for me to replicate as part of WACUP but this is why WACUP is like a WinAmp++ :) )
  • Added support for the podcast & downloads views to show the last time the podcast episode was played (either as the url or the locally downloaded file) to make it easier to determine what ones have been played or not as well as making use of information that is present from other parts of the media library without having to go to another library view (e.g. history)
  • Added support for modern skin tooltips (unless the skin does it's own tooltip handling) to follow the scaling of the skin instead of staying super small (thanks to eris & mirzi for getting this working)
  • Added a non-linear peak fall off option (used only with the falling peak mode) to the classic spectrum analyzer visualisation which may look better depending on your taste
  • Added initial support for the Milkdrop visualisation plug-in to use Spout (https://spout.zeal.co/) & for it to act as a sender (dunno how useful this'll be as nestdrop seems to have it already handled but this native inclusion saves those needing something basic vs having to use an older modified version of the Milkdrop plug-in which is less than ideal vs what WACUP offers)
  • Added a check for update action to the agent mode right-click menu (the main WACUP program will still do it's own things but this is useful for testing & might help others)
  • Added in a placeholder preference page for appropriate installs to make it easier to change WACUP between running in legacy (uses the Winamp program file) & non-legacy modes
  • Added support for trying to skin the context menu (if the skinned menu support is enabled) which is shown when right-clicking within a skinned edit control (e.g. search field of a local library view) for better consistency with the rest of the skinned look
  • Added an option to the replacement local library plug-in so it's possible to control whether the newly added associative sorting is used or not (if enabled this will do additional sub-sorting of the view results for cases that make sense e.g. sorting by album will then sub-sort by the disc & track values to better group the album results) which some may not like or prefer the faster speed of the simple sort
  • Added a playback remapping so that opus files which don't play with the primary opus input plug-in will be attempted to be played using the vgmstream plug-in if present (e.g. incase they're lopus files that haven't been correctly named)
  • Added some more options to the big clock plug-in for the time of day mode so it can now be in either 12hr/24hr mode along with not showing the seconds & how the PM indicator is displayed in the 12hr mode
  • Added Windows on ARM detection to the crash reporter (as running WACUP on Windows 10 for ARM on a Raspberry Pi 4 is now a known to work configuration which runs surprisingly well though a native ARM64 verison of WACUP would likely make for a nicer experience on such hardware...)
  • Added checks on loading for OS version compatibility being enabled which in one case was set to Windows 98 & was causing a slew of crashes so it's better to warn where possible as OS compatibility really isn't needed
  • Added the ability to now configure & use up to 10 active stream sources when using WACUP's streaming source DSP plug-in which can be configured via Preferences -> Streaming (this is compared to a fixed 3 streams from prior builds)
  • Added support for holding shift + arrow key up / down or shift + mousewheel scroll up/down to offer finer resolution of volume change compared to the normal level that matches Winamp's behaviour
  • Added a $year alias to use within the NDE queries which can make it easier to have a local library smart view which automatically updates to only show files from the current year (if there's more aliases that make sense to add then let me know & I'll consider them if they make sense :) to add)
  • Added support for @WINE@ in modern skin script parameters so it's possible for the skin (sparingly) to know if it's being used under WINE or a normal Windows setup (incase of needing to work around WINE bugs for the hopefully short term)
  • Added an option to control whether the text shown in the classic skin windowshaded playlist editor is capitalised or not (am going non-capitalised by default going forward so this allows for getting the Winamp style back for those that want it)
  • Added official command-line handling support for interacting with the player when using non-legacy mode or native only mode with the 64-bit builds with limited support provided for legacy mode instances (this is not something that has been formally supported in all prior WACUP builds & is why the functionality has been broken for at least 9 months with the beta builds prior to this build being released)
  • Added the ability when using non-legacy mode or native only mode with the 64-bit builds to specify multiple items via the command-line handling options related to play / enqueue / enqueue & play (this is also a new addition over what Winamp was able to offer which is why it's not available when using the legacy loading mode)
  • Added the current running time for the current WACUP instance to a 'Statistics' block on the 'About | Updates' preferences page as sometimes it's useful to know this without forcing WACUP to crash :)
  • Added a 'duplicate at bottom' action on the playlist editor's send-to menu which is equivalent of the 'enqueue' action that Winamp's send-to menu would show but better reflects the action without the imho confusion of having an 'enqueue' action on there (added based on feedback from discord)
  • Added %samplerate_khz% to complement the previously added %samplerate% ATF metadata variable which preformats the output (if available) in a kHz style (e.g. 44100 -> 44.1 or 22050 -> 22.05) without having to do weird ATF string processing :)
  • Added the ability for the crash reporter to now check when a crash happens for any post-install updates for the build that's failed to be applied in-between full builds (this has been done due to too many of the beta testers just not bothering to check the forum as per beta testing instructions when there are repeated crashes especially after a new build has been released so this should make my life easier!)
  • Adding a ML_MSG_TREE_ONDESTROYVIEW notification for the media library plug-ins which'll send the current hwnd about to be destroyed so the plug-in knows & can trigger any clean-up as needed in a more timely manner vs a last minute reaction to the views getting the WM_DESTROY message (dunnoy why this was never something Winamp did as it'd have made a few things simpler plus it helps move things a bit more away from relying on Windows messages for things :) )
  • Added /UPDATE=noui to offer a pure command-line mode for triggering an update which assumes that by running the command you do want to do an update check
  • Added an option to the dedicated album art window (via gen_classicart.dll) so it's possible to now have the artwork slightly blended with the window background if enabled (some may like this so here's another option to add to the mix!)
  • Added support for module files (e.g. MOD, XM, UMX & any of the other 56 extensions) to be treated like a playlist if there are any reported sub-songs within them (there's an option to go back to the older style of treating them as one big file if that's preferred but automatic expansion is the default behaviour going forward)
  • Added a 'Volume' tab to the main Playback preferences page so it's possible to check the internal WACUP volume level & the reported external process volume level from the OS mixer so that the effective playback volume level can be determined (e.g. if the OS mixer volume level is 25% & the internal WACUP volume level is 100% the effective volume level is 25% which would make it sound a lot quieter vs other programs)
  • Added support for the modify option to be enabled via the add/remove OS preferences (subject to Windows supporting allowing it) which may be helpful in some situations if there's an issue or the user is unclear about what might have been changed (this will not be available for portable installs)
  • Added an on closing notification message for the plug-ins to hook so it's easier to know what the type of close is (currently normal or self-restart) so the likes of the autoplay plug-in can update their stored states before the full closing process is commenced
  • Added the ability to revert back to the last library playlist (if one exists) via the right-click menu on the playlist child nodes or from within the root of the library playlists node (this is not currently done within the specific library playlist views for now as a proper undo mode makes more sense to be implemented into them but this will at least help with making use of the backup playlist files)
  • Added ability to either manually or from the current skin to override the taskbar preview & overlay icons with the files needing to go into a 'Taskbar' sub-folder in the WACUP settings folder or root of the skin folder/archive being used
  • Added using Shift + Spacebar in the main playlist editor to force scroll the currently playing item back into view depending irrespective of the default Spacebar setting (this makes it easier to get close to the old Winamp behaviour whilst embracing some of the WACUP adjustments to the handling based on feedback to try to make things more consistent in their handling vs different Winamp skins & other players)
  • Added initial WACUP versions of a NSFPlay/NSFPlug v2.5 based input plug-in (in_notyansf) for NSF/NSFE support, an MSXplug based input plug-in (in_msx), an AdPlug (AdLib) based input plug-in (named in_addanotherplug so as not to conflict with existing in_adlib), an ASAP (8-bit Atari) based input plug-in (named in_later so as not to conflict with existing in_asap) & an sc68 (Atari ST & Amiga) based input plug-in (named in_sc68k so as not to conflict with existing in_sc68) to further expand the native playback support for video game based formats as per user requests (more needs to be done to some of these plug-ins mostly related to format conversion support)
  • Added support to the listview header skinning to show the column sorting direction in a more legible way as it's using the filled up/down unicode arrow character from the font instead of a fixed small image as Winamp's media library implementation was doing which wasn't scaled to fit unlike this new implementation :)
  • Added support for classic skin loading to look for cursors in a 'Cursors' sub-folder within the skin (folder or archive format) so it's a bit cleaner for skinners who want to use it instead of dumping everything in the root of the skin folder / archive
  • Added resetting of the 3rd party lyricsplugin window settings to the /RESETCLASSICSKINPOS & /REPAIR command-line actions
  • Added an option on the playlist preferences page so it's possible to enable a behavioural change to prevent the currently playing item being always scrolled into view when there's an item selected
  • Added Ctrl+Shift+A as a playlist window shortcut to quickly remove the selection from any of the playlist items (this is applied in both the main playlist editor window as well as library playlist views)
  • Added Ctrl + double-click on the classic skin playlist editor's 'selection' button to trigger the invert selection action
  • Added support to the button skinning to now handle the split style in a more legible as it's using the filled down unicode arrow character from the font instead of a fixed small image as Winamp's media library implementation was doing which wasn't scaled to fit unlike this new implementation :)
  • Added support to the /enableplugin & /disableplugin command-line options so that specifying gen_ml or gen_ml.dll or library will allow for WACUP's media library core to be controlled with this option in a comparable manner to what the earlier builds which used the separate Winamp plug-in required for it to be controlled
  • Added better plug-in support for those shipped with WACUP that can be forced to output mono audio if the playback option to force mono playback is enabled (this is still incomplete & a post-processing step will most likely be implemented so there's not a reliance on plug-ins to be updated to support this playback mode)
  • Added compatibility improvements for the iZotope Ozone Free DSP plug-in so it's settings will be saved without needing to run everthing as an administrator, fixing it causing WACUP to massively lag when it's window is visible & avoided an issue during it's unloading which could cause the WACUP process to hang on closing if it was active at the time (nothing WACUP is doing wrong, just an old plug-in being weird)
  • Added Alt+B & Alt+R for toggling the Big Clock & Wavefork Seeker plug-in windows respectively as global keyboard actions when WACUP is focused (taken from a user request & hopefully doesn't break anything)
  • Added a command-line helper mode that can be used to attempt to collect a running process dump & submit it like a crash report if a WACUP instance is hanging (though the chance of needing this should be much lower since recent beta build changes to resolve what was determined to be the cause of that issue especially when using Windows 7)
  • Added a workaround to deal with some older visualisation plug-ins that can at times throw un-helpful error messages whilst still being able to run
  • Added a workaround to deal with the AVS visualisation plug-ins sometimes locking up the process when they're being loaded (it still doesn't help AVS crashing especially in the convolution.ape)
  • Added playback support for BeatSaber song files along with trying to correctly determine the artwork file that is associated with them (as long as the expected json file is found)
  • Added a 'delete current song' to the notification area icon support (icon packs would need to be updated using ico9=delete.ico to support customising this in the icp files) to offer a different way for deleting the current playlist item with appropriate handling to deal with it also playing (this has been done to remove the need to patch around non-WACUP issues with the old 3rd party gen_delete plug-in)
  • Added an 'extension' filter to the offered local library plug-in filters so it's a bit easier to distinguish the different potential file types within the local library database without having to remember to do things like ?(filename ends "opus")|(filename ends "mp3") to manually filter the search results
  • Added a means to prevent the dedicated album art window for modern skins (if they follow a standard way of defining the window) from being created if the album art plug-in is being used (this helps to avoid the double album art window & menu items which can be confusing at times without having to mess around with editing / recompiling aspects of the modern skins)
  • Added an option on the Media Library preferences page to have the navigation tree located to the right of the current view
  • Added a 'freeze windows' option for the classic skin handling so any native / generically skinned windows handled via the core will have their position effectively locked (using the control key can override this to allow for resizing / repositioning as needed - the classic skin options preferences page details more about this)
  • Added a clarification on the taskbar preferences page for where the custom icon (taskbar.ico) needs to be put to be used
  • Added an option on the classic skin preferences page so it is now possible to use either the classic skin text font or a real text font for the song info area (where the kbps / kHz values are displayed) as this might be useful for some depending on the skin aesthetic & font options available
  • Added better handling of the tooltips in the podcast & downloads views to deal with the descriprion from the feeds being provided in html so they now should appear in a reasonable plain text format
  • Added a tooltip for the kbps / kHz areas of classic skins so it's possible to see the actual value if playing something which causes the clipped version of the value to be shown
  • Added a native replacement of buggy timer.w5s from 5.666 which provides the Timer script object for modern skins (far too many hours taken going over the Winamp3 SDK to figure out the interfaces, etc to get this working!)
  • Added setting the currently playing stream as a button on the Discord Rich Presence (this will however only work for others viewing your profile & won't work if done yourself because that's what Discord does)
  • Added a workaround for invalid mp3 files that may be sent to in_mp3 to prevent that plug-in causing a crash
  • Added smooth scrolling support for the classic skin song ticker (there's an option on the Classic Skin preferences page so the Winamp style of scrolling can be re-enabled for those who prefer that)
  • Added better icon support for the media library navigation tree items so it does a better job of resizing the icons as needed compared to the hackish workaround that was used to attempt to achieve it with the media library core plug-in from 5.666 (aka what's seen with the prior preview builds)
  • Added preference options for the media library tree so the icon support can be enabled or disabled along with whether the buttons on the nodes (as seen for however many months its been) is preferred if not wanting to have the icons shown
  • Added a processing set of images for the local library to make it visually more obvious that something is happening for some of the long running actions along with the number of items remaining (which mirrors what's seen with the remaining podcast downloads to complete)
  • Added new images for the WACUP provided library navigation tree items so they have a higher native resolution instead of 16x16px as per 5.x
  • Added changing the main ui font to now be done via any supporting windows instead of just via the main playlist editor window (e.g. using Ctrl + NumPad Plus, Ctrl + NumPad Minus or Ctrl + Enter) along with classic skins being shown an indication of what the change was via the song ticker status
  • Added to the library window button menu an update all podcast feeds item (this mirrors the item on the right-click menu of the podcast & download view items)
  • Added to the library window button menu refresh all metadata & remove all missing / unsupported items (this mirrors the item on the right-click menu of the local library root view item)
  • Added reporting of some additional information on the 'misc' diagnostics preference tab which mirrors some of the information found in the crash report logs & can be useful for seeing if there's a possible resource leak for some (am aware of some 3rd party plug-ins that can & will cause such issues)
  • Added specific library window button menu handling for a new import submenu as well as internal handling changes to simplify getting the export menu & a slew of other small changes related to this
  • Added the ability to see how many possible file types are reported by the currently active input plug-ins on the File Association tab on the Diagnostic preference page including if there are duplicates with any found having (!) prefixed before the shown file extension in the tree for the item after the first instance of a file extension based on the order of parsing through the input plug-ins as they were loaded
  • Added better reporting of what the issue is when parsing an ATF string & resolved issues with the wrong error string being used
  • Added a maintenance section to the Local Libray preference page so its easier to determine if there might be an issue (e.g. incorrectly added duplicate entries due to bugs in earlier builds) whilst offering some modes to help resolve those issues along with a compaction mode if needed (useful to run if a lot of items have been removed to reduce the memory usage & how long it takes to load the database)
  • Added the initial WACUP implementation of a folder monitor feature for the local library (under Winamp's local library plug-in this was known as Watch Folders) which allows for per-folder configuration on how often scanning is done (unlike Winamp's plug-in which ran all scans at the same time) for added / modified / removed files (unfortunately this doesn't have live monitoring support for when WACUP is already running to remove the need to do full scans as I'm just not happy with how it needs to be done for now)
  • Added a tataki.dll compatible replacement to be able to drop needing to re-use that supporting dll from 5.666 (it's been an on/off effort to do this over the past 3 or 4 years due to time & needing to be in the mood & from having to massage aspects of the Winamp3 / Wasabi sdk into a manner that works for what the modern skin engine plug-in gen_ff.dll & a few of the other plug-ins require so there will likely be some issues related to this change vs the crashes that the original dll were causing particularly on closing)
  • Added an option on the Modern Skin General preference tab to control the loading of the Color Editor (default loading is off as most will not need this so it saves some resources & time on loading & avoids some potential conflicts that can occur from trying to load this old component)
  • Added an initial implementation for handling local MP4 files containing dash / fragmented data frames along with resolving a number of other problems with some invalid / missing frames (e.g. for bitrate)
  • Added a number of compatibility improvements for the 3rd party lyricsplugin from window styling (follows the classic skin scaling options now) to menu items not working correctly & so on
  • Added a WACUPified build of the classic full-screen Geiss visualisation plug-in (it won't use settings for existing older copies of the plug-in due to this build of it not using the OS registry to allow it to be usable with portable installs)
  • Added an option to the skin preferences page to limit the option for selecting a random skin on playback to only select classic style skins
  • Added a native implementation of the Jump To Track (gen_jtt) plug-in (originally from 2003) which completes the trio of the Jump To dialogs now being implemented within the WACUP core :)
  • Added double-clicking on the vertical divider in the library window between the navigation tree & the currently selected view to act as a way to resize the navigation tree to only take up the width needed to see the currently visible items within it (something that I've been wanting for a long time to make the alignment of things a lot simpler vs trying to eyeball it)
  • Added double-clicking on the vertical divider in the internet radio & podcast views to resize to the radio station genre tree & the podcast channel list respectively
  • Added double-clicking on the vertical dividers in the local library views to align the divider to the right edge of the filter to it's left to make it easier to align things based on the intended sizings
  • Added an option to the Playlist preferences page to control whether existing title information in playlists if present is used or if it'll be ignored when added from outside of WACUP (e.g. via drag & drop or from Explorer) causing the titles to be regenerated based on the current ATF string
  • Added drag & drop support for some of the media library navigation child nodes onto the main & playlist editor windows instead of only being able to use the right-click options &/or doing it from within the selected library view (e.g. podcast downloads or a bookmark category)
  • Added support as well as an option to the Video preferences page to allow supporting plug-ins (aka in_mp4) if the option is enabled to attempt to fallback to using OpenH264 for decoding that data format (this will attempt to get the required dll & is aimed more at WINE setups where Media Foundation support is lacking but is off by default as most setups do not require the additional processing this adds)
  • Added a libfaad2 based AAC decoder instead of trying to re-use the Fraunhofer based aacdec.w5s from 5.666 for M4A (MP4 using AAC) files (may also look at a Media Foundation based solution later but this is more portable e.g. for WINE)
  • Added an option on the File Association diagnostics preference page so it's possible to save the currently reported file associations to a text file
  • Added a patch for out_sqr v1.7.9.1243 to correct issues with it's preference dialog along with some related in-core handling to resolve tab placement issue
  • Added support to allow manual title refreshes in the main playlist editor (e.g. via Ctrl+Alt+E) to now by default trigger the local library plug-in (if enabled & the item(s) are known in it's database) to refresh the metadata it has cached for those playlist items before the new title is generated (there is an option on the playlist preferences page to disable this)
  • Added the ability to change the view mode of the local library root instead of mimicking the plug-in from 5.666 where it'd only over show the results in a simple list
  • Added a preference option on the Notification Area preference page to control the click behaviour of the notification area between click to show/hide or to always show it (with ctrl+shift+click doing the opposite to the currently selected mode)
  • Added a preference option to control the 'show all by/from artist/album' action in the local library results right-click menu (done as part of the replacement of the local library plug-in)
  • Added an option when running modern skins to have the script timers run at a lower frequency compared to the default that WACUP now applies (60fps vs 30fps) which is closer to what 5.666 & earlier would run them at & may be of use for WINE / slower setups where the 60fps target can cause a higher CPU load than would be expected (the 60fps target was to provide consistency with the classic skin main window vis)
  • Added a ProcDump based mode to try to use for cases where WACUP is crashing & it's crash reporter is not being triggered (still not 100% certain how well this mode will work & may itself need some tweaking)
  • Added a basic debugging mode when running WACUP under a debugger to report the last file that the local library plug-in has attempted to process (via an add or update action) to try to determine some reported failures (this is primarily aimed at being used in addition to the ProcDump based 'debugging')
  • Added more proxy mode options related to the updated libcurl & updated the proxy help documentation
  • Added an option to the local library plug-in to control whether it'll do case insensitive sorting (default) or not for the view filter handling (not doing this might be useful for finding mis-cased typos)
  • Added a small information dialog that'll appear during loading if the main playlist is taking much longer than would be expected (e.g. could be due to slow network resolution or from trying to load all files from a drive due to folders being allowed as playlist entries) & should not appear for the majority of setups (famous last words)
  • Added support for the spacebar to trigger the process wide play/pause/show active main playlist item handling if the library navigation tree is focused (this should help to improve the likelihood it works depending on how the WACUP instance was made to be the active program)
  • Added support for using a mlnotfound.png/bmp from within the root of the skin being used or the WACUP settings folder to allow using a different image for when there's no albumart able to be shown within the album cover view modes
  • Added an option on the format converter preference page so it can be made to convert any spaces in the final generated filepath to underscores
  • Added support for Ctrl+F8 to trigger a full reload of the current library view unlike F8 which (if supported by the view) will try to refresh things based on the current search parameters (this is mostly just a quicker way to help when testing without having to change to another library navigation node & back again to the one wanted)
  • Added support for an ATF based custom matching rule with the album art reading preferences (General -> Album Art)
  • Added %fullfolder% to the ATF support to return the complete folder path for an item (if applicable) instead of just the current folder as %folder% does (this can be used with the above additional albumart reading mode)
  • Added an 'Audio from this Year' local library view preset so it's easier to see if $year query variable in use
  • Added an option on the Notification Area preference page so it's now possible to have the right-click menu show a minimal playback menu instead of the full main right-click menu
  • Added an option to the classic spectrum analyzer visualisation to vertically flip the image (bug found during some clean-up & made into an option as some liked it)
  • Added an option to the local library preferences to control whether albumart (if set to be shown) will be preloaded or not in the background for album items not yet viewed (this is off by default for now as it can cause excessive CPU levels whilst all of the items are being processed which isn't ideal for laptops or older devices)
  • Added the ability to customise the name of podcast feeds shown within the podcasts library view (not the local library sub-view that shows podcasts from the local library database) to aid in better organising the list
  • Added export support of WACUP's current podcast subscriptions to an OPML file (this is done via the export sub-menu shown from the button menu in the library window)
  • Added import support of OPML files containing podcast feeds into WACUP's current podcast subscriptions (this is done via the import sub-menu shown from the button menu in the library window & the podcast navigation node right-click menu)
  • Added a workaround to hook the modern skin guru meditation error window to be able to auto-close it after a few seconds to avoid it causing problems if left unattended as seen in some crash reports
  • Added a /FIXWAMODSHADE command-line option to fix an issue with the Winamp Modern skins where the modern skin engine can incorrectly save a height for the windowshaded main window causing an unexpected band appearing below the normally seen part of the window (this is to save those users who experience the issue from otherwise having to wipe their modern skin related config file if it happens to them)
  • Added the ability to check & report in the plug-in preference pages if a plug-in dll failing to load is likely due to it not having been built to support DEP/NX-bit (aka very likely to be an old plug-in)
  • Added a WACUPified version of the MatrixMixer plug-in (out_neo.dll) to aid in up/down-mixing the audio channels along with some other audio processing whilst using the other available output plug-ins & is configured via Preferences -> Plug-ins -> Output -> Channel Mixer (for beta testers this will remove the interim build of the dll so those of you not paying attention to things will no longer get an error message on loading along with disabling the original out_mixer from being loaded as it doesn't support the other WACUPified output plug-ins)
  • Added export actions to the appropriate library navigation tree right-click menus where an export option is implemented to mirror those also provided via the library button's export sub-menu
  • Added an option to the Playback preferences page's audio modes section to control (subject to input plug-in support) if files with video will have that rendered as well or if only the audio will be used
  • Added some handling to try to determine why in_mp3 is giving a generic error message if it's not able to save metadata edits to files to try to determine if it's a locking issue or a different issue
  • Added initial opt-in support to the Streaming Source plug-in for when configured to use the SHOUTcast 2 connection mode to send the albumart for the currently playing item (this will if needed resize the albuamrt down to avoid the server limitations with albumart support & depending on how well this addition works, stream branding support might be added for those also requiring full parity with dsp_sc)
  • Changed the classic skin main & equaliser windows to now be drawn & handled just by the WACUP core instead of letting the Winamp core do it - this is a MASSIVE change & there's likely to be some minor issues with things maybe not reacting like Winamp did though it's also allowed for refining some actions (e.g. easier access to the known equaliser presets via the menus instead of going into a dialog)
  • Changed the installer to no longer try to re-use a Winamp compatible uninstall entry in the Windows registry & instead use a WACUP specific one due to winget / other application management software incorrectly trying to update & then breaking WACUP installs using unrelated "winamp" installers (this unfortunately breaks the ability to have plug-in / preset pack installers see the WACUP install & will require either having to manually enter the WACUP program folder to use &/or extract their contents & manually copy things over - am sorry about this but I can't fix those installers & "winamp" updates effectively wiping out valid WACUP installs is not acceptable)
  • Changed the skinned menu handling implementation to not be provided via Winamp which is a bit visual different but should improve consistency to the OS menu handling & when WACUP is on high-dpi displays
  • Changed how the WACUP loader is managed so it will now only remain running to do the update check (if applicable) before closing instead of just sitting there waiting for the spawned Winamp process to close (this is in response to an issue with Stereo Tool DSP v9.70 where it causes WACUP to hang on loading until the waiting loader process exits - not sure what that DSP changed from v9.63 but this change was going to happen eventually as part of the work to remove the use of winamp.original so why not do it now :) )
  • Changed some of the metadata handling to avoid some more non-metadata specific values being queried from the taglib based handling (seen in a waveform seeker crash when the 'type' was being queried)
  • Changed how some of the internal main playlist title sanitisation is done in response to a crash report seen within that handling
  • Changed how the reading in of the configuration is done to hopefully work around an odd runtime handling issue seen in some crash reports which prevents WACUP from being able to complete its loading
  • Changed libvorbis.dll to export some more methods that are needed by the recent updates below (the downside of trying to size optimise dlls at times)
  • Changed the handling of plug-in unloading to try to deal with some odd crashes seen when trying to determine the validity of the plug-in information (e.g. related to stacked plug-ins)
  • Changed the media library plug-ins to be able to directly indicate they want their preferences to be placed under the 'media library' node so the media library core doesn't need to figure it out (that behaviour is still maintained for compatibility with older media library plug-ins)
  • Changed ml_wire.dll to now be named as ml_podcast.dll since this makes more sense when browsing the plug-ins & because I no longer need to maintain compatibility with the legacy media library core plug-in
  • Changed the Waveform Seeker plug-in to not process any files supported by the newly added in_xsf plug-ins (see top) due to it triggering thread-safety issues within the plug-ins (not ideal but it's better than it crashing until something can hopefully be done to the upstream copies of the plug-ins to fully resolve this issue)
  • Changed the media library plug-ins provided with WACUP to use a newer revision of the media library plug-in interface (this won't prevent older media library plug-ins from being used & like has been done with other plug-ins under WACUP offers better integration for the native WACUP plug-ins)
  • Changed the media library plug-ins to use more shared code for a small saving whilst changing them to use some direct library api calls instead of the slower SendMessage(..) based calls
  • Changed how the export menu on the library button & window menu (if using a modern skin) are handled to better ensure they update if there's changes with the library views available (this also removes the plug-in trying to pre-populate on loading for a small performance improvement on loading)
  • Changed how the album art plug-in works to use a simple cache to help minimise its overall impact on WACUP's load time as well as reducing how often it re-queries metadata
  • Changed the references to use of the spacebar in the milkdrop window to better reflect that shift+spacebar is the preferred soft-cut to next preset action from trying to better ensure that spacebar works uniformly for toggling the playback state)
  • Changed how the Win7shell plug-in & related DWM (desktop window manager) methods are handled when attempting to use WACUP on some esoteric setups where the DWM methods needed aren't available
  • Changed how the main playlist editor drawing is handled to minimise the chances with some modern skins on loading / change from another skin (e.g. Big Bento) for it to show the items using the classic base skin colour with a fallback system font (this also offers a small reduction on loading times but the main thing is to avoid the jarring mixed look whilst the skin engine is still doing it's initial loading)
  • Changed how playlist entries are handled when read to minimise associated drive activity (especially when using HDDs over SSDs) & to avoid offline UNC based paths triggering validity checks to help resolve reported issues with excessively long initial loading times (e.g. a 1200 entry test playlist went from 33ms to 6ms be loaded on my development machine - 6ms is how long a 300 entry playlist before the changes would take for comparison - the change also meant a 4.6s wait with a playlist containing an UNC path went away)
  • Changed how the library bookmark & podcast download views work to reduce their impact on initial loading time if they were the last view prior to closing (is more work that needs to be done for the other library plug-ins)
  • Changed how the classic skin oscilloscope is handled to have it better fill the available area it's drawn into whilst making it less likely to appear as top heavy when using the solid drawing mode
  • Changed some of the handling around the Alt+3 File Info dialog to better deal with edits failing to be saved (e.g. if it cannot be applied on the currently playing file)
  • Changed some of the handling around trying to update the metadata of the currently playing file (still more to do but this should help with some of the reported issues)
  • Changed the plug-in profiling support to release its log file where possible once loading has finished
  • Changed the skinned preferences handling to prevent trying to override the winamp.ini setting to manually enable it when running WACUP on WINE
  • Changed the write ratings option to be disabled if the replacement local library plug-in is being used (still need to sort out a better shared handling for this so it's not reliant on a local library plug-in though it will still remain as a default option when re-implemented - we can all thank a certain singer user for that)
  • Changed how the splash screen on start-up action is handled so it will now be cancelled just after it's loaded instead of waiting for a generic time (also from testing, the splash screen seems to add around 10% to the initial loading time so keep that in mind if you want WACUP to load as fast as possible)
  • Changed how the oscilloscope data is rendered in the main window visualisation & related plug-in api calls so it should now be oriented in the correct way compared to other software
  • Changed how Milkdrop deals with running on a monitor in portrait mode to now by default attempt to fill the monitor instead of only filling half of it (this can be manually done via the 'dualhead' options)
  • Changed how the library playlists root & child playlist views (if enabled) are managed to reduce the delay / impact of them upon the initial load time of WACUP if they're the last view being restored
  • Changed how the classic skin equaliser window is handled compared to Winamp to better ensure that it's not going to appear as can sometimes happen (this change replaces a prior WACUP patch for this issue)
  • Changed the /RESETCLASSICSKINPOS to also reset the double-size mode to off & better ensure that the classic skin main window will be in a visible non-windowshaded state when using this command-line option
  • Changed the /STARTMIN & /STARTMAX command-line actions to now be handled by the WACUP loader which makes loading cleaner & also prevents it being applied to an existing running instance (which Winamp is incorrectly doing e.g. starting with /STARTMIN & then calling it again will trigger the already started instance to come into view when that's not the right behaviour for a loading only related option)
  • Changed some of the paramater validation of the volume & panning apis to make them more robust to bad input (to prevent values wrapping around oddly) along with having the new value returned in the api calls (this might be helpful for some to check what was actually set, etc)
  • Changed the library playlist view handling to now save any metadata information obtained when viewing playlist items that didn't already have that information stored (this reduces duplicate processing when viewing the playlist & also can improve loading times due to not needing to trigger an immediate loading of the local library database)
  • Changed to have WACUP provide the base services manager & callbacks implementations instead of Winamp (this isn't the final implementation as there's patching & hooking required to get it working but it's enough to help test that it works as this took a few days to get it to a seemingly stable solution)
  • Changed how the child process determines the path of the WACUP loader (e.g. wacup.exe or winamp.exe) to resolve some issues now that the loader program isn't kept around after starting
  • Changed to have WACUP now provide the 'PE_Info' & 'VID_Info' implementation (the video support has been broken for a while) once I finally figured out the 3 files from the Winamp3/Wasabi SDK that were needing to be used directly or slightly modified or provided enough information to be able to create the definition for the dispatchable class that needed to be interacted with (aka it took months of on/off work to figure this out)
  • Changed how the Win7shell plug-in handles its rendering to now be done in it's own thread which should help resolve some of the hang related crashes seen with some setups (e.g. due to the OS fonts folder containing lots of fonts which can be slow to enumerate &/or triggering a font parsing crash)
  • Changed some of the core & plug-in menu handling (e.g. the exporter plug-in menu insertion) to resolve some issues found as part of replacing the skinned menu handling
  • Changed some of the preference pages to now have an obvious ATF help link if ATF is used on it (e.g. the Discord preferences now make it more obvious what is used to be able to refine what's shown to others)
  • Changed the podcast view's edit action to now support changing the feed url without having to manually add a new feed & remove the existing feed (there might be some more work required to refine this)
  • Changed the installer to no longer rely on the helper findwinamp.dll by using the equivalent handling from the WACUP core dll instead (this also saves ~50KB from the installer size)
  • Changed the album artwork & lyrics plug-ins to respond to a new IPC_PLAYLIST_ITEM_REMOVED api to better ensure they update as expected if the item they are showing has been deleted from the main playlist
  • Changed the autoplay handling so it now waits until WACUP is known to be in a loaded position which should help to avoid some issues experienced with modern skins not receiving some notification messages (this removes the need for the delay load option)
  • Changed how the vgmstream input plug-in handles file conversion to make it more compatible with the common formats (e.g. to MP3 which only supports mono or stereo input) - there's more to do for this but it'll do as a workaround for the time being
  • Changed how the WACUP files are compiled to better leverage the build machine's capabilities to save around 1min 30sec
  • Changed the main implementation of the Three Mode Repeat plug-in (gen_3mode.dll) to now be done directly within the WACUP core as part of taking over the classic skin's main window handling
  • Changed the Windows 10 references in the gen_win10shell plug-in to now also reference Windows 11 since the main SMTC feature relates to it (the preview so far seems to make the SMTC integration actually useful instead of just being related to the volume change flyout that appears with Windows 10)
  • Changed the skinned menus to not be enabled when running under WINE as it really doesn't like them (will need to be figured out later on)
  • Changed how some of the crash report handling is done in an attempt to resolve some of the odder crashes
  • Changed the SID Player plug-in to support the HVSC songlengths.md5 format as well as the older songlengths.txt (for those still using it)
  • Changed how going into double (or the new triple) size mode works for classic skins to better ensure that the skinned windows will not be placed outside of the available screen(s) - this may cause some layouts to get messed up but it's the better choice compared to not being able to find the windows as some have been complaining about for years)
  • Changed how the sizing of the classic skin playlist editor is handled to no longer use a Winamp core compatible mode which made things like window docking less ideal with the addition of the 3x mode scaling
  • Changed how the WACUP provided non-library plug-ins deal with skinning to leverage the new shared skinning core so that disabling the media library core will not force them to be unskinned (unlike the ~18 years it's been with Winamp & it's media library / skinning implementation)
  • Changed the installer to ensure I can't generate a build where the reported version number & the compiled version don't match (e.g. it being 1.1.1.8256 but appearing as 1.1.0.8256)
  • Changed how the Waveform Seeker plug-in works to make it more thread-safe which should help with some processing oddities along with a processing conflict that can cause it to fail
  • Changed the option on the Taskbar Text preferences tab to be disabled if the override option is enabled for using the playback state to control how the taskbar text reacts (this avoids some confusion about the top option seemingly not working when the override has been enabled)
  • Changed the classic skin main window windowshaded visualisation handling to make better use of the space available when running in a non-scaled skin mode (may need some more tweaking though 38x5 isn't much to work with to start with)
  • Changed how the replacement local library plug-in (will just refer to it as ml_ll from now on) deals with its initial view loading to minimise the overall impact it has on WACUP's load time (this means it typically won't block things whilst loading the database which can be noticeable depending on its size)
  • Changed the ml_ll upper view panes (if applicable) to show a scanning state instead of nothing when things are being processed (this makes things a bit more consistent between the upper & lower panes during searching / initial loading of the view)
  • Changed ml_ll to not temporarily remove the sub-view nodes when the local library database was cleared as the feedback this was more confusing & didn't work reliably vs having the add new media / db load error dialog when accessing any of the local library views
  • Changed the lyrics & albumart plug-ins to minimise how much they save into the settings file so only config values changed from default will be saved (need to apply this to everything where possible so it'll be an on-going change as time allows)
  • Changed the lyrics & albumart plug-ins to better handle there not being anything in the main playlist from updating when the playlist is cleared & nothing is currently playing to not showing the 'no lyrics' message & the albumart plug-in making the missing artwork image less jarring so it's slightly faded into the window background (this should just make things a bit cleaner & nicer if there's no active playlist)
  • Changed the installer to have it avoid extracting some aspects that aren't going to be used if updating an existing install in a known good condition
  • Changed the AVS visualisation plug-ins to be part of the WACUP installer instead of a via a helper installer (isn't worth the hassle with repeated false positives on the helper dll that aren't being cleared vs a 0.26MB overhead on the installer)
  • Changed some of the add bookmark handling (playlist editor menu / keyboard shortcut / base api) to minimise the chances of adding an existing file / url that has already been added as a bookmark (aka one for benno)
  • Changed how the history plug-in works to try & avoid a timing quirk when cross-fading is enabled & things take longer than expected to update internally causing the title & duration of the prior playing item being used for the newly played item (still not 100% this change will resolve the issue occassionally being seen but it might make duneflower happier with me)
  • Changed the default playlist type to save to be m3u8 instead of m3u which may annoy some but it's better for ensuring what is output will be 'good' for many more users
  • Changed how the various plug-ins are loaded to avoid anything that's not got a plain 'dll' extension (e.g. dll-off) being incorrectly matched & loaded as a plug-in (a bit of how the OS file search works vs me not doing more to avoid loading invalid matches aka duneflower broke things in a weird way when trying to determine a different issue)
  • Changed how the installer deals with closing an existing WACUP install vs the process taking too long to close whilst causing other checks to believe there is no longer a running process (this manifests as a file being reported as not able to be updated with a user facing prompt but work when using the retry action - if it does still happen then I'd need to know what the file(s) unable to updated so I can adjust things)
  • Changed how the WACUP provided library plug-ins trigger undo actions on the main playlist to be registered which should resolve some of the weirdness seen (e.g. needing to do a double undo action to get back or it not always catching the changes in an expected manner)
  • Changed the installer to do a check incase it may have crashed previously & attempt to remove any of the locally cached file (this is based on 2 weird setup failures that have been experienced related to other aspects of the WACUP install process crashing in earlier beta builds)
  • Changed how the installer & the crash reporter deal with an update being seen whilst having just had a crash & the option to restart WACUP after a crash (not the default behaviour) work to try to better ensure that there are no processes keeping things locked (it still might be possible but this is a non-default scenario
  • Changed the crash reporter to now attempt to recover & send the collected information (if that succeeded) if the crash reporter could not complete or ironically it crashed (this also should do a better job at ensuring any temp file created during the crash report phase are now cleared once a succesful launch of WACUP has been achieved)
  • Changed the skin selection description for the Big Bento Modern (BBM) skin to make it more obvious that the skin is general 2x the default size of other comparable skins based on feedback via Twitter
  • Changed a few things with the crash reporter's collection stage to try & resolve some of the odd hang failures that have been noted (still not 100% sure about this but self-handling crashes is messy)
  • Changed how the send-to menus on the classic skin main window song ticker & also the one in the playlist editor right-click menu works to now work irrespective of the media library core being enabled (if nothing is using it then the menu will be disabled) as well as hopefully resolving a weird positioning issue when the menu is set to be skinned (seems to be relate to how the send-to sub-menu was generated)
  • Changed how single / double-clicks work with the agent icon handling to minimise it being able to trigger multiple instances if those that have been started are taking to long to respond (e.g. due to a hard drive waiting to spin-up) which is then making the existing instance checks timeout & so cause multiple instances to appear
  • Changed how the self restarting action works to do it a bit earlier on in the closing process to see if it'll resolve some of the reported failures along with adding in means to hopefully detect if it was attempted but the self restart didn't run
  • Changed the crash reporter to also attempt to collect the winamp.original.pid.dmp file that relates to the crashed WACUP instance (there's no guarantee the OS will have also generated this file but it might be there so it's better to try & get as much information as possible when it comes to crashes to be in a better position to try to resolve the crash issue)
  • Changed how the bookmark submenus are handled with their dynamic creation to resolve a Windows 11 beta visual issue when skinned menus are enabled (one of the bookmark sub-menus appears with rounded edges instead of the expected square corners for the WACUP skinned menus)
  • Changed how the Win7Shell plug-in works with regards to it's checking for the need to render it's preview in reponse to changes with the Windows 11 beta preview (this is a temporary change to prevent the preview constantly running once it's been triggered until things are much closer to a non-beta Windows 11 release when it should be more feasible to improve the checks that are otherwise having to be done)
  • Changed how the WACUP provided library plug-ins deal with maintaining view selections to prevent them processing their view items when there isn't a known selection already present (this has the benefit of reducing some of the pressure that can be placed on keeping a view updated including triggering some of the odder crashes seen due to slowness to process 100,000s of view items before the OS thinks its hung)
  • Changed how generic window titlebars under a classic skin are drawn for skins which haven't been updated to support numbers & some extended characters to instead condense the text drawn instead of leaping potentially large empty blocks (e.g. when skinned prefs is enabled & looking at the preferences window titlebar which normally tries to show the current WACUP build number)
  • Changed the skinned scrollbar handling to reduce some of the overhead needed to get to the actual drawing which may help resolve some of the weirder crashes due to them
  • Changed a callback method that the WACUP media library plug-ins were using for getting skinned listview column size changes to now be done via the new shared skinning support (this has the bonus of removing a window subclass done on the listviews which is a good thing as less subclassing means less overall overhead)
  • Changed the library history plug-in & anything else WACUP provided using it's database to now use a differently formatted history database which resolves some issues the Winamp layout was having (this will migrate the old format over to the new one automatically so there shouldn't be any loss of valid history)
  • Changed the library history plug-in

New in WACUP 1.0.21.7236 Preview (Mar 12, 2021)

  • Added the ability to determine if WACUP only shows in the System Media Transport Control (SMTC) integration on appropriate Windows 10 installs when it's not the active program (this is also now the default behaviour due to feedback related to the OS provided action overlapping too much of the WACUP instance when working with it at the time)
  • Added a 'Windows 10' preferences page so it's easier to disable the options related to the Windows 10 Integration plug-in if appropriate (this also adds an option to disable the SMTC feature in the plug-in though completely disabling the plug-in is the preferred option via the General Purpose plug-in preferences page)
  • Adding the currently stored skin into the crash report log file so it's easier for me to see if it's using an obviously known 'bad' skin (e.g. a modern skin that keeps throwing divide by zero errors)
  • Added an option on the 'General' preferences page to control how the main right-click bookmark menus are handled when clicked with respect to playing, enqueuing or enqueue & playing as you may need
  • Added support for the 'browser next / previous' actions (e.g. those found on a mouse with additional buttons) to be handled by the hotkeys plug-ins which can be useful for moving forward / backwards in the main playlist or controlling the volume or any other available hotkey actions (note: this may not work consistently as a global hotkey depending on what other programs are possibly handling these actions)
  • Added an option on the new 'Shuffle' preferences page for controlling restoring the shuffle table between sessions for those not happy with this deviation from what Winamp did (it is enabled by default as minimising repeating plays of playlist items until the playlist has completed naturally is better & resolves a long standing complaint that Winamp would repeat files since there was no cross-session info)
  • Added initial support for natural sorting of string values (which relates to numbers within a string being interpreted as a sequence rather than their character value) such as within playlist titles or local library results to better match user expectations & the supported versions of Windows (if none of that makes sense, it should make values with both text + numbers in them sort in an expected manner)
  • Added additional hooking of the last.fm AudioScrobbler plug-in to minimise the potential for it sending messages to the main WACUP window for information to cause a deadlock / crash as seems to occur for some
  • Added a $StrBetween(,,) ATF method so it's a bit simpler to extract parts from a string if there's known start & end characters (e.g. $StrBetween('title [other info]','[',']') would provide 'other info' otherwise it'll return that there's no string)
  • Added compatibility improvements for the Volume Logic output plug-in so it should now be usable with WACUP (this involved making sure it's own loading of the other output plug-ins allowed them to be initialised correctly, by re-mapping the read / write of its settings out of the program folder & into the settings folder making it portable compatible, overriding the preferences handling so that the output plug-ins offering unicode descriptions now show as expected instead of just the first letter & a filename)
  • Added initial support for the Streaming Source plug-in to connect 'natively' as a Icecast source (this will need some testing & is only aimed at Icecast v2.4+ servers)
  • Added initial support for the Streaming Source plug-in to connect 'natively' as a SHOUTcast 2/Ultravox 2.1 source (this will need some testing & doesn't currently support sending in-stream artwork)
  • Changed some of the plug-in initialisation handling to better contend with (mostly older) plug-ins having issues & failing on loading which then causes WACUP to crash on loading
  • Changed the crash reporter to better report .NET runtime crashes (e.g. win10shell)
  • Changed some of the error handling in the Not So Asio output plug-in to try to minimise the crashes which keep occuring with it (am not expecting this to help but it's an attempt)
  • Changed how the older IPC_FORMAT_TITLE API is handled in relation to older plug-ins trying to use it to try to reduce the crashes seen related due to them passing incomplete data
  • Changed to not send 'ispodcast' to the input plug-ins as this is causing issues for some of the input plug-ins in relation to how it first accesses the file & cause a crash (this value is only meant to be sent to the local library plug-in & this change should resolve some of the odd crashes being experienced)
  • Changed how the shared metadata service treats 'streammetadata' in relation to how the input plug-ins are then directly queried
  • Changed how the internal ATF processing is done to reduce duplicate metadata queries being made to the shared metadata service &/or the input plug-ins depending on what is supported (this is primarily to reduce the amount of additional processing done as well as reducing the calls to the input plug-ins on fallback which for some can be slow to respond &/or cause stability issues based on some crash reports)
  • Changed the Audio CD, Archive Playback & Playlist Seperator input plug-ins to no longer rely upon subclassing the main WACUP window to do some of their integration (e.g. live menu updating)
  • Changed the Global Hotkeys & Taskbar Integration (Win7shell) plug-in to now no longer rely upon subclassing the main WACUP window due to the WACUP core calling it as needed for some of the required messages
  • Changed the Repeater & Undo plug-ins to lower the number of specific messages it's attempting to handle when subclassing the main WACUP window (still a bit more to do to be able to remove the subclass)
  • Changed the Format Converter plug-in to now no longer rely upon subclassing the main WACUP window for the handling of the API messages it implements
  • Changed the Bookmarks, Exporter & History, replacement Local Library & Playlists library plug-ins to no longer rely upon subclassing the main WACUP window to do some of their integration (e.g. detecting file changes)
  • Changed the default classic skin window positions with a new install to better show off some of the WACUP additions whilst reducing initial positioning overlaps based on recent feedback
  • Changed the /RESETCLASSICSKINPOS command-line option to also reset the double-size option to off
  • Changed the /RESETCLASSICSKINPOS & /REPAIR command-line options to then restart WACUP once the action has been completed (based on feedback received restarting is expected)
  • Changed the installer to better handle scenarios when the WACUP core dll cannot be updated (still not determine why this is happening for some) so it will fail gracefully sooner in the update process
  • Changed the IPC_GET_HMENU api to now also provide the menus for the main player button context menus (i.e. right-click menu on the play button)
  • Changed the majority of the WM_WA_IPC API messages that the Modern Skin engine (gen_ff.dll) sends to now be processed directly without going to the main window handler to see if it'll help resolve some of the weirder ui interaction issues (e.g. accessing menus triggering stack overflow crashes & possibly the embedding of the generically skinned windows causing random crashes for some setups more than others)
  • Changed the installer to check for ReactOS to prevent those inquisitive enough to try to do it from hitting the issues that are present (mostly due to it supporting a Windows XP level of API but WACUP relies upon a number of required Vista & newer APIs)
  • Changed more of the WACUP specific plug-ins & also parts of the core to move away from SendMessage(..) based API calls for direct usage where possible whilst still offering support for the SendMessage APIs
  • Changed the installer checks to better handle updating from an old 2019 era WACUP preview build to the current late 2020 / early 2021 builds so it's not re-extracting the Winamp installer when not required
  • Changed how the main right-click & windows (modern skin specific) menus are handled with the 'media library' entry to hopefully avoid some reported instances of the menu item appearing at the top of the menu (this should also gracefully get out of the way if the legacy media library plug-in is being used to avoid duplicate menu items)
  • Changed how the artwork cache is handled between sessions to now attempt to maintain it which depending on the usage can improve the initial loading experience to reduce some artwork related aspects being slow to initially render
  • Changed the podcast plug-in to automatically hide the info are with in the podcast library view & the the view layout options on it's related preferences page when running under WINE (this is to help avoid some stability issues seen with this feature on WINE related to the embedded browser mode used for the info pane)
  • Changed the handling of crash reports from WINE installs to make them easier to detect from those from Windows installs
  • Changed the shuffle related options on the 'Playlist' preferences page to now be on their own preferences page as a child of the 'Playlist' node
  • Changed the installer to help complete the transition away from using the Nullsoft DirectSound & WaveOut output plug-ins over to the WACUP equivalents of Not So Direct & Not So Wavey (the prior 68x0 builds only removed the Nullsoft plug-ins if they were not found to be the currently used output plug-in whereas this change will remove them & set the active output plug-in to the appropriate equivalent)
  • Changed the initialisation order of the Taskbar Integration (Win7shell) plug-in to minimise a tangible delay experienced when the plug-in is enabled (nothing revolutionary on the time saved but the delay was enough to be noticeable when looking for it at around 20-30ms on my development install)
  • Changed how visualisation plug-ins are handled to better ensure that high resolution timers (needed to ensure a more consistent frame rate) are used when one (or more) is running
  • Changed the library history plug-in to better cache some of the values it displays to avoid repeat processing for a small performance improvement with the responsiveness of the view
  • Changed the 'vorbis comment tag' tab (for FLAC & Vorbis files) on the alt+3 dialog to now sort the metadata to better match with the 'raw metadata' tab
  • Changed video playback handling to possibly improve the reported performance issues with it lagging (video in general is a pain & I need to re-do my initial attempt as it sucks)
  • Changed the 'update all' menu action on the 'downloads' library node causing the ui to be blocked when triggered & the podcast feeds haven't yet been loaded / viewed
  • Changed a number of UI blocking messageboxes to used timed ones if there's an issue when using Milkdrop & the plug-in attempts to report the issue (if not responded to in a timely manner it can trigger a crash)
  • Changed the error reporter to query the OS to determine if there's likely to be an active internet connection before continuing to attempt to auto-submit / email the crash report
  • Changed how the File Info (Alt+3) dialog attempts to deal with read-only files so its more obvious that editing of the metadata on the file is not going to be possible
  • Changed some aspects with how video in MP4 containers are handled to minimise some of the delays in actions reacting which might be contributing to some odd deadlocks (this may also improve seeking but there's more to do on this as it's still far from ideal)
  • Changed the $SubStr(,,) ATF method to support a negative offset so it can be used to work from the end of the string instead of working from the start with a positive / zero value
  • Changed how the ReplayGain processing deals with read-only files to now skip attempting to process them which is the better way to know that the calculated values won't be saved before wasting processing the file first
  • Changed the handling of the core ATF formatting string to allow for line breaks in the user edited version & effectively removed the size limit on the length of the string for a dynamically handled string
  • Changed how WACUP reacts to being run after a crash if there is a known newer version available to download by now waiting for user interaction with the update dialog instead of doing it normally & often allowing more crash reports to occur in quick succession as is the case for some (this might be annoying but so is trying to deal with large batches of crash reports from the same user despite an update existing which fixes the issue happening)
  • Changed the Shuffle diagnostics preference tab to now update when changes are detected instead of having to manually toggle away from the view & back to it
  • Changed how the the first item to be played from the current shuffle table is selected after it has been initially created to act more like Winamp (the prior preview build had temporarily been defaulting to the first playlist item in all situations which this change now attempts to pick a random item - so it could entirely keep picking the same item as is the joys of randomness)
  • Changed the Not So Direct output plug-in to attempt to live update its volume control settings when changed instead of waiting for starting playback of a playlist item
  • Changed the crash report collection dialog to stay around for a few seconds after the collection succeeds to help prompt about contacting to provide more information as well as making the email address into a clickable link
  • Fixed the probable cause of a deadlock seen in a crash report related to the Not So Direct output plug-in
  • Fixed the probable cause of a deadlock seen in a crash report related to the Not So Wavey output plug-in
  • Fixed the crash reporter not recognising running on Windows 8 with the OS compatiblity mode being enabled
  • Fixed the probable cause of a crash on opening the output plug-in preferences page (if this still happens then it's most likely an issue related to the atsurround output plug-in)
  • Fixed the probable cause of a crash within the NDE handling seen in a number of crash reports over the past two builds due to possible corruption / incomplete loading of the file
  • Fixed the replacement local library plug-in sometimes incorrectly handling updating the current view cache when removing items from the view
  • Fixed the initial processing of urls by the Streaming Url Processor (e.g. YouTube playlist links) causing WACUP to be unresponsive & sometimes triggering the crash reporter (it now should keep the program in a more responsive manner along with altering the playlist entry to indicate that something is happening compared to before)
  • Fixed the installer not removing the existing Win7Shell & Win10Shell plug-ins when updating which could cause post-update related failures due to internal api mis-matches
  • Fixed the probable cause of a crash within the settings cache when trying to read in some of the settings
  • Fixed the internet radio plug-in not always waiting for the first run download to complete before its quit() has completed which could cause a crash if the download was still in progress for some setups
  • Fixed a conflict with how the generically skin windows are handled vs the overall window positions & always on top mode under a classic skin that has been causing a hang with some setups
  • Fixed a number of issues which meant the MP4 Demuxer plug-in wasn't as thread safe as it should have been (this is behind a lot of the crashes seen with the 68x0 preview builds)
  • Fixed the probable causes of some hangs experienced related to their playback threads not relenquishing correctly
  • Fixed a massive regression in the performance when accessing MP4 based files especially those with artwork to show
  • Fixed a crash when trying to read in all items from an ini file section (this was seen with the Audio Capture plug-in)
  • Fixed placement of the built-in window positioning on loading to minimise the chance of them going off-screen if something went wrong during the prior instance so they should re-appear on the primary monitor
  • Fixed shift + left/right when playback is paused (along with shift + click on the previous & next buttons) not changing the current playback position as expected (under classic skins the seekbar won't update but this is something that'll be resolved when I take over the drawing of the classic main window & is currently due to a disconnect between the Winamp core & what WACUP is doing for playback handling)
  • Fixed an issue introduced before the 68xx installers which was sometimes preventing a sensible install path being set when checking to use the portable install type
  • Fixed a timing issue that could cause the Streaming Url Processor plug-in to crash on exit if it was processing an url request at the time
  • Fixed a timing issue that could prevent the History plug-in from being able to save the current playback position for the resume option when a file is intentionally stopped including it being paused
  • Fixed a regression preventing VGM files going to the VGM input plug-in instead of the vgmstream input plug-in (the fun of inconsistent / unofficial namings of files to do with video game based formats)
  • Fixed the tooltip in the Waveform Seeker window causing the window to be brought to the top & overlapping other windows
  • Fixed a crash on playback if the played history database (or any of the NDE based database files) has become corrupted thought it won't help to recover any data which may have been in the database file(s)
  • Fixed a performance regression with Milkdrop that's existed for over a year which has been preventing it from running at the desired frame rate (if the hardware can do it) or just running 10-20% below the specified frame rate irrespective of hardware capabilities
  • Fixed a number of small incompatibilities with some of the older plug-ins that are trying to be used to either gracefully fail (since they expect Winamp specific code layouts for things) or just because they send an invalid response (which also applies to when being used under a plain Winamp install)
  • Fixed the current main playlist edit item not being correctly scrolled into view during loading
  • Fixed the media library window when using the replacement media library core getting closed if WACUP is closed in a minimised state when using a classic skin (modern skins might still be funky but the modern skin engine also doesn't support starting minimised correctly)
  • Fixed a crash & a parameter validation issue during live editing of the ATF $decode(..) method which should now ensure the final parameter is provided
  • Fixed the current working directory not being correctly restored between sessions (& also reduced the memory overhead for the value when WACUP is running)
  • Fixed a visual regression with Milkdrop introduced when reducing some of the processing done which was not needed
  • Fixed the video window right-click menu not showing the correct one when using the simple window mode
  • Fixed some quirks with the selection tracking mode in the classic artwork & lyrics windows where it'd either show the wrong information briefly or completely (as per the lyrics plug-in) or trigger an update that would make the artwork aspect flicker due to it being removed & then re-drawn at a later time (more noticeable at times during loading where it could appear & disappear a few times)
  • Fixed the installer not always installing the supporting library for the MP4 Demuxer input plug-in when creating a minimal WACUP install
  • Fixed the reproducible issues with the video support being disabled & causing the classic skin main window not react after a first install / clearing out of the relevant settings
  • Fixed the reproducible causes of the Not So Wavey output plug-in sometimes deadlocking either on track change or if WACUP is set to resumes playback on start-up
  • Fixed disabling the info area in the podcast library view not immediately being hidden without manually resizing the library view
  • Fixed the lyrics window not setting the 'no lyrics found' message correctly when selection tracking & no lyrics could be found
  • Fixed some crashes seen in relation to the Get/Put ATF methods due to incorrect parameter validation
  • Fixed stopping an already paused SID (Commodore 64 Music File) taking a few seconds to respond to the request
  • Fixed the cause of the WASAPI output plug-in not allowing the main window vis to run due to an incorrect value provided when the output is being opened & that success of that is reported to the WACUP core
  • Fixed the possible cause of a crash seen in some setups when adding items related to local files into the main playlist
  • Fixed the about window getting hidden behind the main window of modern skins
  • Fixed the Waveform Decoder (in_wave.dll) plug-in not loading due to a missing dependency (mpg123.dll) against libsndfile.dll due to the installer not correctly handling that specific install type (if the OpenMPT Module Decoder or vgmstream input plug-ins were also being installed then this wasn't an issue - installers can be a pain to get done correctly at times if you forget about the dll dependencies)
  • Fixed the Ctrl+Alt+End global hotkey not working as expected (the default actions is to stop but it was toggling next on stop) due to the side effects of a workaround related to classic skin windowshading
  • Fixed the edit playlist entry dialog to focus & pre-select the text in the new entry field on opening instead of focusing the browse button
  • Fixed editing the 'comment' field in FLAC & Vorbis files when there's already a 'description' field not seeming to update the field on save
  • Fixed the 'comment' handling from ID3v2 tags to only provide the basic COMM field instead of returning any COMM field if there's not the basic one (this better aligns with user expectations & in_mp3's handling)
  • Fixed the shift+e batch metadata editing dialog in the main playlist editor crashing when trying to apply changes due to a number of issues in some of input plug-ins as well as how the local library plug-ins were accepting the strings to be applied (at least I hope this is fixed as my tests no longer crash but I'm not 100% certain for those that have been experiencing this issue for a number of the recent builds)
  • Fixed the probable causes of some quirks related to the shuffle table being incorrectly maintained between sessions when it's not meant to be (there is still some more refinement to follow including changing it to not default to the first item when a new playlist is created)
  • Fixed a possible deadlock in the NotSoDirect output plug-in
  • Fixed the wrong dll name being used when registering for elevation
  • Fixed a number of issues when manually adding metadata on files (e.g. FLAC or Ogg Vorbis) via the 'Vorbis Comment Tag' tab on the File Info (Alt+3) dialog (this could manifest as a crash, not saving the changes or removing existing metadata for the newly added key pair)
  • Fixed some visual issues with the ReplayGain processing dialog when using the replacement Media Library Core
  • Fixed the 'streamtype' metadata query to work correctly on forced https -> http stream urls so that the info pane of the Bento skins will show the current url information as http-only streams
  • Fixed the error reporter dialog not showing the desired version if auto-posting but emailing is enabled doesn't work (assuming the emailing error code is actually correct & not faking success)
  • Fixed a crash when using the IfStr* ATF methods due to incomplete parameter validation (side-effect from the VS2017 changes a while back)
  • Fixed a crash with the FLAC input plug-in & a legacy metadata query where the data provided was not being correctly validated
  • Fixed the $SubStr(,,) ATF method not working as expected due to an issue with the parameter validation (would either output the whole string or no string)
  • Fixed directory paths in playlists not being expanded out as expected to be the files within that directory (this is a regression related to dropping more of the hooks into the Winamp core for all WACUP handling)
  • Fixed viewing the agent's tooltip when WACUP is running either showing clipped / corrupted text or triggering a crash (this has been an issue for a lot longer than it should ever have been :'( )
  • Fixed the taskbar text & a few other things when using the 'Advance to next on stop' action not being updated to reflect the file that has now been set as the current file (which was showing ok elsewhere)
  • Fixed drag+drop from the Bookmarks library view with multiple items selected causing a crash &/or weirdnes after attempting to complete the drop action
  • Fixed a handle leak when the Streaming Source plug-in is trying to make a reconnection & is not able to complete / resolve the action (this is an interim fix with a non-Jnetlib based solution to follow)
  • Fixed the hybrid volume mode setting with the Not So Direct output plug-in sometimes using the logarithmic volume mode (this is the likely cause of a bug report that the hybrid volume was too low vs Winamp)
  • Fixed a divide by zero issue crash affecting some modern skins when playing a stream due to a length api compatibility issue (the fun of positive & negative numbers)
  • Fixed ATF error messages not showing the correct skin (issue from merging things some time back)
  • Fixed the custom taskbar preview not reacting when using the 'Advance to next on stop' action not being updated to reflect the file that has now been set as the current playlist item
  • Fixed some of the submenus on the main right-click menu (e.g. skins) not being populated &/or updated as expected when the menu is first opened from a generic skinned window frame
  • Fixed some more crashes related to ATF input handling issues with some of the lesser used methods
  • Fixed the start / double-click action on the Visualisation preferences page not always working when using the single visualisation plug-in mode
  • Fixed unchecking the "Recycle permanently deleted files" option not always working as expected if the General preferences page hasn't been viewed first
  • Fixed a number of issues across multiple components related to the handling of RSN files (RAR SNES audio archives) causing failure to parse them or to break playback via an endless loop
  • Removed the now no longer required crash fix patches related to the Nullsoft DirectSound & WaveOut output plug-ins
  • Removed a number of dll exports from the WACUP core dll which are no longer applicable / needed to export giving a 2KB size reduction
  • Updated cacert.pem to latest (19 Jan 2021)
  • Updated libcurl (libcurl.dll) to 7.75.0 (3 Feb 2021)
  • Updated libebur128 (ml_rg.dll) to 1.2.5 (2 Feb 2021)
  • Updated libjpeg-turbo (image.w5s) to 2.1 Beta 1 (25 Nov 2020) + latest Git commit up to 21 Jan 2021
  • Updated libopenmpt (in_mod.dll) to 0.5.5.14111 (31 Jan 2021)
  • Updated libnghttp2 (libcurl.dll) to 1.43.0 (2 Feb 2021)
  • Updated libsidplayfp (in_sidious.dll) to 2.0.5 (24 Oct 2020)
  • Updated libsndfile (libsndfile.dll) to 1.0.31 (24 Jan 2021)
  • Updated minizip-ng formerly called minizip (zlib.dll) to 3.0.0 (24 Jan 2021)
  • Updated Monkey's Audio (in_ape.dll) to 6.12 (15 Feb 2021)
  • Updated mpg123 (mpg123.dll) to 1.26.4 (24 Dec 2020)
  • Updated OpenSSL (libcurl.dll) to 1.1.1j (16 Feb 2021)
  • Updated Patreon list (8 Feb 2021)
  • Updated rapidjson to the latest Git commit from 6 Jan 2021
  • Updated taglib (tag.dll) to 1.12.0 beta 2 (23 Jan 2021)
  • Updated unrar (unrar.dll) to 6.0.3 (1 Dec 2020)
  • Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 17 Feb 2021
  • Updated WavPack (in_wv.dll) to 5.4.0 (10 Jan 2021)
  • Updated zlib-ng (zlib.dll) to latest re-based update (29 Jan 2021)

New in WACUP 1.0.20.7170 Preview (Feb 23, 2021)

  • Added initial support for the Streaming Source plug-in to connect 'natively' as a Icecast source (this will need some testing & is only aimed at Icecast v2.4+ servers)
  • Added initial support for the Streaming Source plug-in to connect 'natively' as a SHOUTcast 2/Ultravox 2.1 source (this will need some testing & doesn't currently support sending in-stream artwork)
  • Changed the crash report collection dialog to stay around for a few seconds after the collection succeeds to help prompt about contacting to provide more information as well as making the email address into a clickable link
  • Fixed a divide by zero issue crash related to the shuffle initialisation changes after build 7120
  • Fixed a divide by zero issue crash affecting some modern skins when playing a stream due to a length api compatibility issue (the fun of positive & negative numbers)
  • Fixed the new $StrBetween ATF method not being accessible (bit of a whoops on my side with this)
  • Fixed ATF error messages not showing the correct skin (issue from merging things some time back)
  • Fixed the custom taskbar preview not reacting when using the 'Advance to next on stop' action not being updated to reflect the file that has now been set as the current playlist item
  • Fixed some of the submenus on the main right-click menu (e.g. skins) not being populated &/or updated as expected when the menu is first opened from a generic skinned window frame
  • Fixed some more crashes related to ATF input handling issues with some of the lesser used methods
  • Fixed the start / double-click action on the Visualisation preferences page not always working when using the single visualisation plug-in mode
  • Fixed unchecking the "Recycle permanently deleted files" option not always working as expected if the General preferences page hasn't been viewed first
  • Fixed the default 'bookmarks menu action' on the General preferences page not following the media library handling options (a fat fingered typo issue)
  • Fixed a number of issues across multiple components related to the handling of RSN files (RAR SNES audio archives) causing failure to parse them or to break playback via an endless loop
  • Updated Monkey's Audio (in_ape.dll) to 6.12 (15 Feb 2021)
  • Updated OpenSSL (libcurl.dll) to 1.1.1j (16 Feb 2021)
  • Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 17 Feb 2021

New in WACUP 1.0.1.3276 Preview (Jun 6, 2019)

  • Build #3276 Changes:
  • Added an initial Streaming Source plug-in (aka replacement Source DSP) to help validate it's usage for personal streaming in combination with the WACUP provided Streaming Server (if also installed)
  • Added some additional internal handling & hooks for the Streaming Source plug-in (aka replacement Source DSP) to simplify how it can get now playing information from the Winamp core without hooks & subclassing as DSP often require (not what we want to be doing to keep things cleaner)
  • Added initial support to allow the shuffle table to persist between sessions to help resolve one of the big complaints related to shuffle (this means it won't try to play files that have already been played as often - this is experimental so it may need some edge cases to be fixed)
  • Added a 'shuffle' diagnostics preference page (under the 'advanced' preferences group) to help visually inspect the in-memory shuffle table
  • Added initial support to deal with enter & double-click actions in the main playlist editor not updating the shuffle table to prevent playing the played file again (reported by a beta tester & confirmed with the shuffle table inspector above :) )
  • Added initial 'Raw Metadata' tab implemenatation to the File Info (Alt + 3) dialog to aid in testing the taglib integration (this is the start of potentially moving away from the input plug-ins handling most of the common tag formats to instead be done more consistently as a core service)
  • Added an ASIO output plug-in based on the source code by Otachan which makes it portable install compatible & adds an experimental volume control option (this works on the global master volume if enabled) & some other minor clean-up to work better within the needs of a WACUP install
  • Added the ability to single-click in the video window to pause/un-pause the currently playing item (this matches expected control methods for video playback though there is a bit of a lag due to having to determine if its a single or double-click from how Windows provides such events)
  • Added initial support to specify proxy connection modes (e.g. SOCKS4, SOCKS5) on the General preferences page (not all plug-ins & features use this which will be improved over time as more of the original Winamp plug-ins & features are replaced with WACUP versions)
  • Added logging now playing only to a specified file via the Yule Log plug-in (see the Play Tracking -> Now Playing preferences tab) which might be useful for streamers using the likes of OBS / SLOBS as it doesn't keep all of the playing history in the log file as the original handling does
  • Added new Mikdrop presets by En D from the 'MD Episode 1 - New Millenium' & 'MD Episode 2 - Out of Da Club into Da Head' packs (more visual goodness for you to enjoy)
  • Added new Milkdrop presets by Fumbling_Foo (more visual goodness for you to enjoy)
  • Changed the WACUP provided library plug-ins to hide the clear search button if there is no search & to use an 'X' instead of 'clear search' to give more space & a slightly less cluttered library view (more to come when other things related to skinning are finally replaced)
  • Changed mpg123 to now be a shared dll (mpg123.dll) instead of just used by the OpenMPT (in_mod.dll) based input plug-in (this relates to the vgmstream change where supporting dlls were not being installed)
  • Changed vgmstream (in_vgmstream.dll) to be built with VS2017 instead of VS2008 to resolve some playback handling issues with the older compiler
  • Changed the installer to default to a more appropriate folder when selecting the portable install mode (setting a custom path via the command-line should still be honoured for those doing such things)
  • Changed how the new default mode to use the spacebar to play/pause the currently playing item in the main playlist editor incorrectly blocking a number of actions that would otherwise scroll the currently playing item into view (a bit of a compromise but it should be less jarring in usage)
  • Changed the skin preferences page when using the Skin Manager plug-in to make the skin information area more prominent & show more at once
  • Changed the naming of the Yule Log preference tabs to better fit with the additional logging mode added into this build
  • Changed the installer to wait a bit longer if it needs to close an already running WACUP instance to better avoid an installer error
  • Changed the default setting for WM_APPCOMMAND hotkey handling (aka default multimedia key handling) for new / un-modified installs to now be enabled
  • Changed the Internet Radio plug-in & the new Streaming Source plug-in to make use of a shared genre list to reduce duplication
  • Changed some of the internals & build system for how beta vs preview/final builds are built to make the overall process quicker
  • Changed the installer to preserve AVS (vis_avs.dll) if present (e.g. when updating over an existing install - which still is not recommended)
  • Fixed most of the supporting dlls vgmstream requires not being correctly installed (this is now handled via a download during install if required)
  • Fixed loading of the FFmpeg supporting dlls from the vgmstream_dlls folder due to a quirk of delay loading and sub-dependency resolution
  • Fixed the installer incorrectly removing the Pluginsvgmstream_dlls folder when it didn't need to (found with the changes above causing downloads to occur when they should not have been happening)
  • Fixed the modern skin engine not correctly showing the time remaining for hh:mm:ss formatted time display strings (the minus sign would only show for times under an hour for some odd reason which broke the expected longer time remaining display so that check was thankfully able to be patched out)
  • Fixed the clear button not always working in the Internet Radio library view
  • Fixed opening the notification area preferences tab breaking using the keyboard to move up/down in the preferences tree
  • Fixed clipping of the skin name from modern skins on the skin preferences page information area
  • Fixed the send-to menus not working in the original local library plug-in (ml_local.dll) due to enforced enqueue & play menu items which do not work (prior changes removed the hackish work arounds to try to get that support working - this is why we have a replacement plug-in to do it cleanly!)
  • Fixed the splash screen window not being cancelled when clicking on it (as the native version would do)
  • Fixed the play & enqueue+play actions not working correctly in the podcast items list
  • Fixed the currently playing item not being correctly updated in the podcast download views when new podcasts are added with the list open
  • Fixed the failure to load of some WACUP & 3rd party plug-ins related to a change in how dll dependencies are loaded to fix other loading failures
  • Fixed slow column sorting issues with the filename related values in the replacement Local Library plug-in views (more so with decreasing sorts)
  • Fixed some multi-line comment tags not being correctly displayed on the File Info (Alt + 3) dialog
  • Fixed the preferences window being on top of all windows even when WACUP was not the active program
  • Fixed the preferences window now being re-sized to the skinned frame (if that mode is enabled) to deal with OS text scaling quirks
  • Fixed a crash when trying to use the 'Remove Duplicates' main playlist editor action (a JTFE bug)
  • Fixed restoring the shuffle table sometimes causing a crash on load
  • Fixed the shuffle table being incorrectly re-read on closing which could lead to potential corruption of the file (found whilst fixing above)
  • Fixed slow loading of the shuffle diagnostics preferences page
  • Fixed some possible causes of the crashes seen in the NDE database (this seems to affect more the Internet Radio view)
  • Fixed trying to drag & drop items on the naviagtion causing a crash if the replacement library bookmarks plug-in was enabled
  • Fixed dropping an item on a library bookmarks category node not having the newly added item assigned to that category
  • Fixed some stability issues found working on the replacement Media Library Core plug-in (gen_ml) with the existing library plug-ins if features are not present &/or working as expected (this shouldn't be needed when things are feature complete but it's better to prevent against crashes, etc)
  • Fixed some occassional text corruption issues on the 'basic info' tab of the File Info dialog
  • Updated cacert.pem to latest (23 Jan 2019)
  • Updated libnghttp2 (libcurl.dll) to 1.36.0 (18 Jan 2019)
  • Updated libopenmpt (in_mod.dll) to 0.4.2.11243 (22 Jan 2019)
  • Updated minizip to 2.8.3 (27 Jan 2019)
  • Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 28 Jan 2019 (first re-