Week 125 Progress Update (mid-year catch-up and release plan changes)

Alas it’s been a while since my last past on here & I apologise but the time I’d otherwise put into doing the weekly blog updates (I’ve kept my development notes so may post them if there’s interest) has ended up going towards updating and answering things via the WACUP Discord server. Anyway, I thought it best to provide a quick update on what’s been going on as well as how may plans have slightly changed. So on with the likely rambling blog post that you expect from me…


So firstly, yes WACUP is still being worked on and is still progressing towards a public v1.0 release in 2018. However, I’m going to miss getting a non-beta build out before the end of the second quarter of 2018 (as noted in this start of year post) and in all honesty that’s left me a bit bummed about it.

I really thought that was a realistic timescale to work towards. Now some of the delay has come from looking into other things (e.g. online radio services when Winamp’s existing support was broken or digging into issues with the local media library plug-in & spending a few weeks working on a replacement plug-in) through to research for things to come post v1.0 (*) or just trying to keep myself in the correct mind place (seeing a lot of derision about something that you passionately believe in will get you down).


When it comes to beta testing, I’ve had a good amount of interest but with the delays in getting new beta builds released has meant I’ve not really added anyone new for a while which has probably annoyed some due to the lack of activity. The reasoning is that feedback on an older build isn’t helpful for me after a point but I get that that will be frustrating to those wanting to try out things when there’s no sign of any official development going on.

So I apologise but hope my simple reasoning makes sense. I have however made changes (~2 months back) to how beta testers will be handled going forward which makes it a lot simpler for myself as well as the beta testers to manage things with the forum account that is required now being the way to access beta downloads instead of having a separate login details that I was having to manually manage (these are the things that time & experience teach us so hopefully this will be a positive change).


With the development side of things, it is probably simpler for me to just include the interim changelog of what’s been done since the current #1988 beta build (you may want to have a look at what was posted before to see what’s been added since).

Some quick highlights include an updated Win7Shell (Taskbar Integration plug-in), a replacement ReplayGain analyser plug-in which includes support for the original and newer EBU R128 calculation modes, simple way of enabling/disabling plug-ins via the plug-in preferences, natively skinned streaming radio browser plug-in, a load of bug fixes & general improvements & additions.

So here’s the complete interim changelog:

  • Added an updated Taskbar Integration plug-in (gen_win7shell.dll) which allows for customising what is shown in the Windows taskbar thumbnail preview for the running Winamp install from the action buttons to artwork and other information for the currently playing item (see the ‘Taskbar’ preferences for more)
  • Added a ‘Taskbar’ preferences page which takes some of the taskbar handling options from the ‘General’ preferences page whilst also incorporating customisation features from the integration of the ‘Taskbar Text Mod’ plug-in on the ‘Taskbar Text’ page (this primarily allows for using a different ATF formatting string for the taskbar text)
  • Added a ‘Notification Area’ preferences page which takes some of the notification area handling options from the ‘General’ preferences page whilst also incorporating the integrated and updated version of the now removed Notification Area plug-in (gen_tray.dll) (this makes it simpler to manage Icon Packs including a new preview mode)
  • Added a replacement ReplayGain analyser plug-in which includes support for the original and newer EBU R128 calculation modes whilst working 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)
  • Added option to Yule Log for HTTP POST handling to deal with self-signed certificates by reducing SSL handling checks (only use if you need it and understand the issues that can arise from doing this)
  • Added /DISABLEPLUGIN and /ENABLEPLUGIN command-line options to allow for enabling / disabling plug-ins as required (see winamp.exe /? for details)
  • Add Discord support to Yule Log for updating your profile after selecting Winamp as the ‘game’ to show in your Discord profile
  • Added an option on the ‘Taskbar’ preferences to determine which icon is shown for the running instance (Winamp, WACUP or custom via a taskbar.ico in the root of the settings folder)
  • Added support to the replacement album art service (albumart.w5s) to allow for direct embedding of artwork into the file tag (but only if the associated input plug-in for a format supports doing this)
  • Added a ConverAlbumArt(..) method to the album art service (albumart.w5s) to allow for easier conversion of the raw image data to the desired format
  • Added a ‘delete’ button and an install mode on the ‘Advanced’ preferences page for removing youtube-dl if there’s an issue with it self-updating for example without having to manually go to the settings folder
  • Added support via the plug-in preference pages to make it easy to enable / disable which plug-ins will be loaded (this makes it possible to disable rarely used plug-ins without having to fully uninstall them if they are sometimes needed)
  • Added currently playing item highlighting to the history, podcasts, downloads and bookmark (if the Bookmark Catergoriser plug-in is installed) library views (if the item is present in those views at the time)
  • Added a replacment ‘edit metadata for selection…’ dialog in the main playlist editor all to allow cda:// playlist entries to be handled correctly (I only have myself to blame for not adding support for such playlist entries when I worked on 5.66x)
  • Added an option on the ‘advanced’ preferences node to select which ‘edit metadata for selection…’ dialog will be used in the main playlist editor and api usage of the dialog (this changes where the albumart block is placed between top and towards the bottom as per user preference)
  • Added ‘IS’ and ‘ISNOT’ aliases to the NDE query string handling to complement the HAS, AND, OR, etc options as it’s a bit more intuitive
  • Added ‘ML Radio’ as a native implementation of accessing internet radio streams (Icecast, SHOUTcast and Tunein) without the issues of the now removed ‘official’ webpage based solution (which seems to have been intentionally broken during April 2018)
  • Added the ability to the /REPAIR command-line option to reset the audio device for the output plug-ins included with a default WACUP install
  • Added option to the ‘Advanced’ preferences page to enable (default: on) or disable the settings cache (this helps speed up loading but some plug-ins may not work nicely when this is enabled)
  • Added option to the ‘Advanced’ preferences page to do a weekly check for updates of the supporting tools (currently just for youtube-dl if it is already installed)
  • Added option on the podcast prefs page so the info area can be fully disabled (for those not wanting to load a web browser)
  • Added a cPro filter on the Skin Manager plug-in preferences page so the handling matches the menu handling instead of cPro and normal modern skins being shown under the same ‘modern skin only’ filter
  • Added a ML_MSG_SKIN_CHANGED notification message for media library plug-ins to hook (if updated to support it) which helps reduce duplicate processing of skin change notification messages for faster skin changes (more so an issue with modern skins where this could happen a few times in quick succession)
  • Added a IPC_CB_MISC/IPC_CB_MISC_SEEK notification message for plug-ins to detect playback seek events (as the winamp core does not do this)
  • 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 default ReplayGain calculation mode to use the newly introduced EBU R128 mode (this is configured to use a -18 LUFS reference to give a similar loudness compared to the original ReplayGain specification)
  • Changed the Skinned Preferences plug-in to be a native part of the WACUP core with an option (default: off) on the ‘General’ preferences page to control this mode (this is the starting point of allowing some of the plug-ins to be correctly skinned without having to have the media library core plug-in also present)
  • 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 only process file formats via input plug-ins which support the transcoding api (enable ‘use legacy processing mode’ if the older mode is required) to improve overall reliability when using this plug-in
  • Changed Waveform Seeker to position the current position tooltip to better work when Skinned Preferences is enabled and fast clicking in the window
  • Changed Waveform Seeker to attempt to process zip:// entries in-combination with the updated Archive Support plug-in
  • Changed Waveform Seeker to use a different method to generate its waveform cache files to better deal with duplicate filenames but different audio contents
  • 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 the installer to allow for quicker update installs if an existing install has been detected by skipping some of the pages currently shown (though it’s still possible to get back to the older mode on the install mode selection page)
  • 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, vis, general purpose, library and portable plug-in preference pages to be handled directly by WACUP which removes 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
  • Changed the included icon resources to be size optimised which saves ~125KB from the installed size and ~18KB from the installer (when compared to the same files with un-optimised icons)
  • Changed the ATF help link to point to https://getwacup.com/atf_help.html (the page still needs to be updated to better fit in with the site theme)
  • Changed Playlist File Remover to make use of the resources from the updated Global Hotkeys plug-in
  • Changed the installer to use %localappdata%WACUP for interim install files instead of the system temp folder to reduce install times after the first run (removing this folder is fine as the installer will re-download the required supporting files as needed)
  • Changed the installer to indicate the progress of installation within the taskbar whilst files are being downloaded / copied
  • Changed the handling of disabling native video support to be more consistent with the re-enable handling
  • Changed the IPC_RESTARTWINAMP API to accept a parameter to simplify re-loading the preferences after a restart (see wa_cup.h)
  • Changed the ‘Direct Playlist Modification Blocking’ options of the undo plug-in to be on the main preferences page instead of a as child dialog
  • Changed the installation method of the native modern skins to be done as a patch using the files from the 5.666 installer instead of including the files which saves ~0.5MB from the installer size
  • Changed the included 7zip files (7z.exe + 7z.dll) to be custom versions which just do what’s needed to help reduce the installer size (these are ~80% smaller than the officially provided files previously used)
  • Changed the installer to sub-group some of the plug-ins (e.g. audio playback) in a cleaner way to make it easier to choose if to install or not certain plug-in types (e.g. playlist related plug-ins or video game music related input plug-ins)
  • Changed the ‘Agent’ preference tab to now be on the new ‘Notification Area’ node instead of the ‘File Types’ mode
  • Changed the ‘File Info’ dialog to be implemented directly via WACUP instead of hooking in and modifying parts of the native Winamp implementation (this is to make it easier to resolve bugs and some crashes reported)
  • Changed the ‘Basic Info’ tab on the ‘File Info’ dialog to show the ‘Track Peak’ and ‘Album Peak’ ReplayGain values if available
  • Changed the ‘Artwork’ tab on the ‘File Info’ dialog to support drag + drop of artwork to be used from explorer, etc
  • Changed the ‘Artwork’ tab on the ‘File Info’ dialog to be simpler in design in removing some duplication (especially when only ‘cover’ is supported - when the main format input plug-ins are updated to support additional artwork types then more options will be provided)
  • Changed deleting artwork on the ‘Artwork’ tab on the ‘File Info’ dialog to re-query for artwork based on the artwork reading options (e.g. deleting the embedded artwork would then have the folder.jpg show up which is more consistent in usage)
  • Changed the loading / searching for dlls to be a bit more secure (this hopefully shouldn’t cause any issues and is just a recommended OS precaution)
  • Changed the classic base skin window titles to drop the ‘winamp’ part and for the playlist editor window to now show as ‘playlist editor’ for better consistency with other parts of the interface
  • Changed jnetlib.w5s to be based on an older code base (with some minor fixes applied as required) so it can use the newer openssl (libcurl.dll) which reduces its size by ~0.57MB whilst improving maintainability and security going forward (it was using a 0.9.x implementation of the openssl library which had to go!)
  • Changed the library window to show it’s title as ‘Media Library’ instead of ‘Winamp Library’ to better match all other library related references
  • Changed the installer to install the Milkdrop2 presets only if the presets folder does not already exist when Milkdrop2 is being installed
  • Changed all of the WACUP provided plug-ins to make use of the ML_MSG_SKIN_CHANGED where appropriate as well as improving IPC_SKIN_CHANGED_NEW handling to reduce the number of things happening on skin and colour theme changes
  • Changed the podcast downloads view loading to be less resource intensive which can improve overall program loading times if it’s the active library view
  • Changed the library history plug-in to use some improvements in database handling and searching from the w.i.p. local library plug-in replacement
  • Changed the tunein logo when playing streams from this service to use their 2018 logo (has missed that it had even changed until May 2018)
  • Changaed the WACUPified base classic skin to include a slew of bug fixes, small changes and other improvements from The1_Freeman (thank you!)
  • 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 Streaming Url Processor sometimes failing to play despite getting a valid stream url to use
  • 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 ‘Big Clock’ not updating its visualisation if the main window visualisation has been disabled (this is a Winamp optimisation which has an api to override it as needed which the plug-in is now making use off)
  • 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
  • Fixed clipping of some text in the preferences when using Windows text scaling options to increase the text size of dialogs, etc
  • Fixed Yule Log not reporting HTTP POST events and errors to the diagnostics log
  • Fixed the desktop icon and start menu options in the installer not being correctly restored in some scenarios
  • Fixed an immediate crash (i.e. crash reporter doesn’t run) when trying to save a JPEG file (quirk of the default error handling mode of libjpeg-turbo)
  • Fixed exporting artwork as a JPEG file not working due to not handling some input data formats correctly
  • Fixed the online beta expiration check not using a sensible timeout if the site cannot be contacted
  • Fixed crash when trying to uninstall the ReplayGain library plug-in via the preferences
  • Fixed valid partial classic skins (wherre it only has some files & relies upon the classic base skin for all other parts) not being correct previewed on the Skin Manager preferences page and the skin selection during setup
  • Fixed the Skin Manager plug-in sometimes crashing when changing the skin filter on the preferences page
  • Fixed the skin selection during setup not displaying the classic base skin preview correctly if the Skin Manager plug-in was not installed
  • Fixed some of the classic base skin files not being correctly size optimised which helps to save ~47KB off winamp_res.dll compared to the prior build
  • Fixed the main playlist editor showing the wrong text colours when changing the current classic skin via the Skin Manager preferences page
  • Fixed libflac.dll not correctly selecting the correct CPU optimisations in some cases which could cause FLAC decoding to crash (appears to be a compilation quirk)
  • Fixed the library playlists not live updating the currently playing item in the playlist being shown when the playlists side view is the current library view
  • Fixed the library playlists not always restoring the playlist in the side view when the appropriate preferences option was also enabled (as is by default)
  • Fixed the library playlists view not showing the ‘+’ (add) and ’save’ buttons in the correct position or at all until resizing the library window view
  • Fixed some more memory allocation related issues with it not being pre-initialised which could cause some random crashes in WACUP and Winamp related code
  • Fixed the library exporter plug-in causing some setups to take longer to load (by a few seconds on very old hardware) compared to it not being installed
  • Fixed some soundcloud links not working as expected due to inconsistent HTTPS handling within the winamp input plug-ins being used
  • Fixed region.txt being incorrectly cached when it should not have been which breaks some skin changes for the psuedo-transparency effect of classic skins
  • Fixed the uninstaller not removing all of the files (needed to update the file list from all of the additions & changes)
  • 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
  • Removed the ATF help resource from the original winamp program file (this gets us a sub-1MB file along with the icon optimisations)
  • Removed some more of the dialog resources from the original winamp program file (winamp.original) which have been replaced with WACUP versions
  • Removed the Global Hotkeys Extra plug-in (gen_hotkeys_extra.dll) due to merging it’s functionality with the replacement Global Hotkeys plug-in (gen_hotkeys.dll) to save ~8KB vs their un-combined size
  • Removed the Notification Area plug-in (gen_tray.dll) due to merging it’s functionality with WACUP
  • Updated the patreons list (thank you all for the support)
  • Updated appropriate copyright dates to 2018
  • Updated brotli (libcurl.dll) to 1.0.4 (10 Apr 2018)
  • Updated cacert.pem to latest (20 Jun 2018)
  • Updated in_openmpt to 0.2.10495-beta33 (17 Jun 2018)
  • Updated libcurl (libcurl.dll) to 7.60.0 (16 May 2018)
  • Updated libjpeg-turbo (image.w5s) to 1.5.3 (14 Dec 2017)
  • Updated libnghttp2 (libcurl.dll) to 1.31.1 (8 May 2018)
  • Updated libogg (libvorbis.dll) to 1.3.3 (7 Nov 2017)
  • Updated libvorbis (libvorbis.dll) to 1.3.6 (16 Mar 2018)
  • Updated lzma (lzma.dll) to 18.05 (30 Apr 2018)
  • Updated minizip (zlib.dll) to 1.2 (17 Oct 2017)
  • Updated openssl (libcurl.dll) to 1.1.0h (27 Mar 2018)
  • Updated pigz (nde.dll) to 2.4 (27 Dec 2017)
  • Updated pugixml to 1.9 (4 Apr 2018)
  • Updated unrar (unrar.dll) to 5.60.4 (14 May 2018)
  • Update vgmstream (in_vgmstream.dll) to the latest Git commit from 17 Jun 2018 (first re-sync in well over a year, oops)

So when can we expect something new to play with? I’d love to use the old Winamp mantra of “when it’s ready” but that’s not something I think many would like nor would I.

So I’m now hoping to have a new beta (or possibly a first release candidate) out around the end of July (so ~5-6 weeks from this blog post going live).


Finally, I want to say a big thanks to those who have taken the time to support what I’m trying to do. It is very much appreciated even if I’m not able to directly respond.

With that, I’ve rambled on probably too long but I hope this update has been of some use (especially if you’ve made it this far). Until the next post, happy Winamping!

-dro



(*) The eventual aim has now become to reach a point with WACUP where there is no key reliance upon Winamp 5.666 files to have a working media player (though modern skin support is a tricky area…). This is something that has to be done sooner rather than later in-case of postulated changes to what Windows will allow to run on it (i.e. the unlikely but slim possibility of dropping win32 support) which having a pure WACUP player (whilst keeping it as Winamp compatible as possible) would be able to cope with unlike the current situation with relying upon key Winamp 5.666 files to run.


Comments:

  1. Keep up the amazing work!
    A pure WACUP player would truly be a thing of wonder and amazement, I hope to oneday see that day arrive :-)
    Thanks again.

  2. Thanks Tim!

  3.   Pedram Aphotic  |  Friday, June 29, 2018 - 03:00:12

    haha i read the changelog half (30%) and i am already cumming! this is marvelous! ur doing god’s work!

    nothing but love from Tehran, Iran. <3

  4. Hello


Add comment:

Fill out the form below to add your own comments