Week 100 Progress Update (farewell 2017 and hello 2018)

I hope everyone had a good holiday season however you do it and I’d like to wish you all a happy new year for 2018. As we’re moving into a new year (and I didn’t get any coding done - sometimes a break is needed) I’d like to have a bit of a look back at the year past and a few thoughts about where I hope WACUP will go in the coming year.

After how 2017 started, things with WACUP overall I think went well with the creation of the Patreon, a lot of work done but with more work still to go before a non-beta build is released.

Over the year, 13 beta builds were released going from build #1400 to #1988 with overall improved the stability of WACUP but also brought more replaced native plug-ins, additional features and general goodness based on feedback received. The changelogs for the beta builds (which all can see even if not a beta tester) show how things evolve, get fixed and whether you like detailed changelogs or not, show what’s going on.

There were some bumps along the road and some builds weren’t as good as intended (requiring quick updates or fundamental re-thinks of how things are done), the final build of the year is in a much better state than the first build of the year which is the overall direction wanted :)

I’ve been humbled by the support that people have provided over the year from the financial side of things through to comments (good and bad) and all of the beta testing feedback received. At times the feedback / comments have been a bit overwhelming but it’s what keeps me inspired to work on WACUP and I’m appreciative of if (even if I’m a bit slow to reply to things at times).

With the future of WACUP, hopefully a non-beta build will be released at some point during the second quarter of the year. This is my aim but plans may slightly change depending upon how quickly I can finish coding the things still to be done vs having a build that is stable for a wider range of people to start experiencing it.

This is a scary thing as depending on where you look, there’s already a fairly poor view point of anything to do with Winamp and still using it (not helped by certain social media users) or it’s just about the nostalgia aspect of Winamp from those who no longer want or care to use it.

However thankfully for me there are people still looking for something new when it comes to Winamp and I’m hoping that the first non-beta WACUP build will be a solid basis to work from in the coming year and whatever may follow the year after that and whatever support I get, 2018 will see a non-beta WACUP build publically released.

Finally, as I’ve not gotten any coding done for this week, I’ll post the interim changelog of what’s been done since the current #1988 beta build though it’s expected there will be more in what is released to the beta testers later in the month. So here’s the changelog:

  • Added a replacement ReplayGain analyser plug-in which works within a single winamp skinned window (instead of multiple like the native plug-in it replaces) and should provide a better indication of what is going on as well as more control later on
  • Added basic format converter / transcoding api support to the Archive Support (subject to the files within the archives being supported - tag support handling is still being worked on so may not copy across correctly at this time)
  • Added options on the Diagnostics -> Misc preferences page for periodically removing inactive working set memory
  • Added the Winamp Modern Holiday skin from http://koopa.meggamusic.co.uk/holidayskin/ as a bit of festive fun (the included version shares the resources from the existing Winamp Modern skin folder which has been tweaked to allow for this to make it much smaller at ~79KB vs 1MB installed with everything duplicated)
  • Changed the crash reporter to also include some of the common config files to aid debugging
  • Changed the ‘Send Feedback’ and ‘Help’ menu option (not found in all skins) to go to the WACUP community forum (proper urls will need to be setup later on but this is ok for beta testing)
  • Changed the Skinned Preferences plug-in to ignore the open / save file dialogs due to breaking right-click menus within them and due to only being able to be partially skinned due to how they work subject to the version of Windows used
  • Changed Waveform Seeker to only process audio-only files by default as video files can cause problems (there is a config option to re-enable video processing if required)
  • Changed Waveform Seeker to attempt to process zip:// entries in-combination with the updated Archive Support plug-in
  • Changed Archive Support to use the unified file info (alt+3) dialog for non-playing archive entries for better UI consistency
  • Changed Archive Support when using the unified file info (alt+3) dialog to try and show the metadata for the in-archive file (this can make it slow to open the file info dialog but makes it massively more usable - there might be some quirks still this this)
  • Changed the view file info / Alt+3 handling to call an input plug-in’s winampUseUnifiedFileInfoDlg exported method on previous / next file button click to allow certain plug-ins (e.g. Archive Support) to do pre-loading processing
  • Changed the crash reporter crash.log to be UTF-8 encoded instead of unicode due to some users not being able to view the file correctly
  • Changed the HTML playlist generation (library playlists and also now the main playlist editor) to be more standards compliant and a bit easier to change the styling off if required
  • Changed the main playlist editor HTML playlist generation to use a WACUP provided implementation (related to the above change)
  • Changed some of the installer workings to try to better minimise issues related to anti-virus software blocking installation
  • Changed the installer to refer to MTP instead of PlaysForSure to make it clearer what the portable plug-in is for (e.g. smartphones)
  • Changed the installer order of the portable device plug-ins to have more relevant ones near the top of the installer section and some working tweaks
  • Changed the MTP / PlaysForSure device plug-in to be named as pmp_mtp.dll on disk instead of pmp_p4s.dll to make it clearer it is MTP related (no changes have been made directly to the plug-in other than renaming the plug-in dll)
  • Changed the portable devices preferences page to report the MTP / PlaysForSure device plug-in just as an MTP device plug-in (as PlaysForSure is a long since dead branding and MTP is often shown on Android devices)
  • Changed the ‘Error Feedback’ preferences page to hide the ‘crash reports’ link if there are no crash reports within the folder
  • Changed Skin Manager plug-in to place the Big Bento skin above Bento skin on skin selection menus (this matches the setup order)
  • Changed most of the live patching of the original winamp program file and some of the plug-ins to now be done as a one-off during installation to remove issues with the patches being applied (especially when ASLR is enforced upon the WACUP process)
  • Changed the input, output, dsp, general purpose, library and portable plug-in preference pages to be handled directly by WACUP in preparation for the UI options for controlling the profile.ini support as well as removing duplicate processing Winamp and WACUP were doing to get certain aspects of these preference pages (i.e. it makes them a bit faster to load)
  • Changed the visualisation preference page to be partially handled by WACUP (start / stop / config / uninstall are still natively handled but the rest of the page ui is handled directly by WACUP with full WACUP handling to follow later on)
  • Changed the input and output preference pages to open the plug-in about dialog if doing shift + double-click
  • Changed the visualisation preference page to open the plug-in configuration dialog if doing shift + double-click
  • Changed the visualisation preference page to only look for vis_*.dll files instead of all dll files within the visualisation plug-in folder (normally the main plug-ins folder) which massively reduces the time to load the preferences page
  • Fixed library playlists not working correctly with the portable device support (could appear as a crash on load or on the portables preferences or just a lack of library playlists available to be synced)
  • Fixed Archive Support crashing when trying to use view file info / Alt+3 due to a string formatting issue
  • Fixed the format converter preventing cda:// and zip:// playlist entries from being processed
  • Fixed going to the Jump To File -> UI Options tab in preferences crashing (this fix resets the menu organisation options, sorry)
  • Fixed a build issue which prevented some of the debug files from being correctly collected as part of the beta release process
  • Fixed some of the included dlls not having appropriate version info (libopus.dll, ClassicPro.w5s & winamp_res.dll)
  • Fixed the MP3 encoder not working in some setups due to not being able to correctly find lame_enc.dll
  • Fixed random slowdowns / unresponsiveness with the open / save file dialogs when Skinned Preferences is enabled
  • Fixed Waveform Wrapper having issues when processing invalid / corrupted files during inspection
  • Fixed Waveform Seeker creating blank cache files when no cache file should have been created
  • Fixed incorrect settings paths shown on the Play Tracking -> Diagnostics preferences page
  • Fixed the font type used by the rich text files to better match the installer and preference pages
  • Fixed the plug-in configs using menus being skinned when skinned preferences is not installed or has been disabled
  • Fixed Streaming Url Processor not having a config / about message
  • Fixed updating of the Winamp Info Tool not working correctly in some situations so additional version checks are now done
  • Fixed the crash reporter crash.log sometimes outputting the wrong data in the stack output section
  • Fixed the library database crashing in some situations as triggered by the local library plug-in and editing the currently playing file (this may also resolve some other crash issues related to the local library and database interactions)
  • Fixed some of the portable plug-in preference pages not making use of the additional height of the preferences window
  • Fixed the ‘Portables’ library node not matching the font size of the rest of the library window (finally fixing what I missed when doing the 5.66x releases)
  • Fixed trying to close the WACUP loader via external tools (e.g. taskkill.exe /im winamp.exe) not working which should allow closing Windows whilst WACUP is running to close without hindering shutdown and being force closed
  • Fixed some issues found with the installer from specific configurations
  • Fixed some of the live patching not accounting for dll relocations correctly (mainly showed the as ‘window settings’ sub-menu disappearing when using a modern skin)
  • Fixed the output preferences page not having the management buttons enabled when loading the preferences page (native bug exacerbated by some of WACUP’s handling)
  • Fixed visualisation plug-ins not being shown as disabled if set to be that via the profile.ini (resolved via the re-implementation of the preference pages)
  • Fixed ML Exporter sometimes incorrectly showing the local library export action cannot be done due the library not being loaded
  • Fixed ML Exporter crashing when exporting to a CSV in some scenarios due to incorrect buffer size and string validation on output
  • Removed the ‘Clear Library’ option on the ‘Local Library’ preferences page to avoid a crash issue in the local library plug-in (this is a temporary solution until it can be patched or a replacement library plug-in is provided)
  • Removed some unwanted files from being installed as part of the ClassicPro engine installation
  • Removed the Nullsoft Android Device Plug-in from the installer as the MTP / P4S device plug-in does what is needed for current devices (it can be easily obtained from the 5.666 installer if needed and the USB device support plug-in does not detect it)
  • Removed the ‘get plug-ins’ links from the plug-in management preference pages as they are no longer useful
  • Removed the Gracenote related fields in ML Exporter CSV reports
  • Updated the patreons list (thank you all)
  • Updated appropriate copyright dates to 2018
  • Updated brotli (libcurl.dll) to 1.0.2 (29 Nov 2017)
  • Updated libcurl (libcurl.dll) to 7.57.0 (29 Nov 2017)
  • Updated libjpeg-turbo (image.w5s) to 1.5.3 (14 Dec 2017)
  • Updated libnghttp2 (libcurl.dll) to 1.29.0 (19 Nov 2017)
  • Updated minizip (zlib.dll) to 1.2 (17 Oct 2017)
  • Updated openssl (libcurl.dll) to 1.0.2n (7 Dec 2017)

That’s it for this week’s update post which is a lot longer than recent posts so hopefully it’s not too hard going :)

Until next week, happy Winamping and thanks once again for the support during 2017 and for what’s to come during 2018!



  1. “Monday, January 1, 2018” and there is already a new blog post.. This is what I call an orderly beginning XD. It’s gonna be a good year, specially for OCD people hah.

  2. It helps with the new year starting on a monday :)