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 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 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 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") 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 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 disabled Fixed the mouse cursor when moving over some of the windows under a modern skin sticking on the resizing cursor instead of showing the expected arrow cursor (this was a problem for windows using custom classes) Removed the "Use Artist for Album Artist if not available when reading metadata" option from the local library preference page as WACUP's local library plug-in hasn't used it since July 2023 as it doesn't store the re-mapped value in the database unlike the 5.666 ml_local plug-in did & instead does the handling as part of the view filter queries which are handled via their own preference option on that page Updated ASAP (in_later.dll) to 6.0.2 (22 Jan 2024) Updated c-ares (libcurl.dll) to 1.2.7 (23 Feb 2024) Updated libcurl (libcurl.dll) to 8.6.0 (31 Jan 2024) Updated libexpat (xml.w5s) to 2.6.1 (29 Feb 2024) Updated libfaad2 (libfaad2.dll) to 2.11.1 (14 Nov 2023) Updated libjpeg-turbo (image.w5s) to 3.0.2 (24 Jan 2024) Updated libnghttp2 (libcurl.dll) to 1.59.0 (21 Jan 2024) Updated libpng (image.w5s) to 1.6.43 (23 Feb 2024) Updated Monkey's Audio (in_ape.dll) to 10.52 (28 Feb 2024) Updated mpg123 (mpg123.dll) to 1.32.5 (17 Feb 2024) Updated OpenSSL (libcurl.dll) to 3.2.1 (30 Jan 2024) Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 29 Feb 2024