Beta Version: 0.9.9.1316 | Released: 6 November 2016 |
Winamp Loader:
This is the program (winamp.exe) used to start Winamp (with the original winamp.exe renamed to winamp.original) and it manages the hooking and adjustments that cannot reliably be done via normal plug-ins (e.g. command-line changes). This also has a supporting dll (winamp.dll) which in combination with the loader program is key to the works of this pack.
- Created a loader program which is run before the original Winamp program file
- This is done to allow for integrating with Winamp at a much earlier stage which is essential for the implementation of new command-line options as well as other changes that WACUP will be trying to provide in the future
- Without the loader program being used, the plug-ins and features which are specifically provided via WACUP may not work and Winamp may crash
- The loader also allows for better sharing of certain code features between the plug-ins (e.g. tabbed preference page handling instead of being per-dll)
- Fixed Winamp waiting for up to 5 seconds to load after an internal restart has been made (e.g. plug-in uninstall)
- This adjusts some of the startup checks so they’re done in smaller steps which makes it possible to detect the original instance closing much sooner so Winamp doesn't appear to hang as was the situation before these changes
- Replaced the library database engine (nde.dll) with a custom version (based on an old source code release of NDE which was updated to be 5.666 compatible)
- Provides some additional syntax options …
- Minor memory and processing optimisations and related file format changes
- Fixed the need to resave the database file(s) if nothing was changed when they are used (i.e. just opening and closing Winamp with the local library open would cause the database to be re-saved)
- This is likely to improve database reliability massively as resaving if nothing changed could lead to data loss in a number of scenarios
- Replaced the native zlib.dll with a version based on zlib-ng
- This is a more optimised version of what was being used which provides a small performance boost when loading anything from a zip file (e.g. skins)
- The level of improvement depends on CPU support and the worst case is it will perform like the unoptimised version based on the original zlib version
- Fixed the 64th Note input plug-in (in_usf.dll) not providing a response for “family” metadata
- The loader hooks the plug-ins winampGetExtendedFileInfo(..) export so it can provide an appropriate response without having to re-compile the existing plug-in (which is a pain as it was built with VC6)
- This fixes USF and MINIUSF file types showing up as ‘Other Formats’ on install as well as providing a better description in Windows Explorer with the icon packs
- Removed the need for the Unicode Taskbar Fix system plug-in (UnicodeTaskbarFix.w5s) as it’s now integrated into the loader program
- This improves the reliability in detecting and fixing taskbar issues with plug-ins that are not v5.34+ unicode compatible as it can check all dlls which are being loaded into Winamp via normal operations
- Fixed opening the preferences early in Winamp loading not grouping all of the child preference pages correctly (e.g. ‘Extras’ under ‘Jump to File’)
- This was a timing issue which moving the code into the loader resolves as it can hook into the preferences dialog loading much earlier than from in plug-ins
- Fixed crash with the Alt+3 dialog due to lack of artwork mime type information
- This showed up during development of in_url where it was at times leading to an invalid mime type check being made that could lead to Winamp crashing
- Fixed artwork drawing quality issue with the Alt+3 dialog due to poor re-sizing code
- Changed the top menu item text to refer to WACUP for easier identification
- Changed the about dialog to also refer to the WACUP version for easier identification
- Fixed the loader not handling missing dll dependencies on loading
- e.g. when trying to load the command-line information and zlib.dll is missing
- Added basic caching of the ini read / write options in winamp.exe and loaded plug-ins
- This provides a small performance improvement (will vary by system / Winamp install) as ini reading is not fast (often due to re-reading the whole file for each setting from the ini file which is slooooow) which an in-memory cache helps improve
- This is also allowing me to check if a plug-in is saving out settings that haven’t actually changed for no reason (which helps to reduce closing times and the potential risk of settings data loss if Winamp is force-closed mid-saving)
- Added pre-caching of sections when the first value is read from it
- This is a small optimisation which reduces loading times a bit at the cost of a bit of memory
- This means it takes a bit longer to read the first setting in a section but is quicker for the rest so overall is faster
- Fixed resizing of the library window not updating the scrollbars of the navigation tree
- This only seemed to be an issue if the scrollbar was visible and the navigation tree is made smaller
- Added support to the library window to flip which side the navigation tree and selected library view are on as well as the ability to have an extra “content area”
- This is to provide some more flexibility in how the library window can be used
- The content area (if used) provides an overall 3-pane layout for the library window and was inspired by the feature in gen_classicart (album art viewer) to embed it into the bottom left corner of the library window
- If the content area is not used (no plug-ins able to use it or it has been collapsed) then this just provides a left->right or right->left layout as needed
- This new version resolves some drawing artifacts with prior gen_classicart (album art viewer) as it now handles all of the drawing instead of just trying to manipulate the navigation tree’s position
- Fixed an accessibility issue when trying to use ‘tab’ to navigate via the keyboard to the tabbed preference pages using a shared dialog resource (dialog #257) from the original winamp.exe due to it missing the WS_TABSTOP style on the tab control
- Changed the default size of the preferences window so is a bit easier to use
- Increased size of the tree to help avoid most cases of the scrollbar showing
- Changed the root level preference group nodes which have child nodes to be highlighted in bold text
- This makes the group nodes easier to see at a glance when opening the preferences window
- Added vertical resizing support for the preferences window and specific preference pages which can make use of the extra vertical space (e.g. anything with a list)
- This requires WS_THICKFRAME (0x40000) to be applied to the dialog resource for this change to work with language packs
- This is applied to the following native preference pages:
- Plug-ins -> Input
- Plug-ins -> Output
- Plug-ins -> Visualisation
- Plug-ins -> DSP/Effect
- Plug-ins -> General Purpose
- Plug-ins -> Media Library
- Plug-ins -> Portables
- General Preferences -> File Types (just the associated extensions)
- General Preferences -> Global Hotkeys
- General Preferences -> Localisation
- Skins
- Media Library -> Local Library -> Watch Folders
- Known pages with tabbed preference pages to resize the tab to fit
- 3rd party plug-ins can implement support for this by processing the WM_WINDOWPOSCHANGED message and adjusting their dialog as needed (more details will be provided on how to do this for those interested in it)
- Added a new ‘advanced’ preferences group node which is placed below the existing ‘plug-ins’ group node
- Added placeholder preferences page for a ‘Backup / Restore’ option using the Winamp Backup Tool
- This is placed under the ‘advanced’ preferences group node
- This makes it possible to download and install the Winamp Backup Tool along with providing the means to run the tool (if already installed) and close Winamp to help avoid any possible conflicts
- Work will be done later on this so that scheduled backups and some basic configuration of the tool can be done to help automate the backup process
- Using the (currently disabled) restore feature will require manual intervention to ensure it works
- Added placeholder preferences page for ‘Portable Mode’
- This is placed under the ‘advanced’ preferences group node
- This currently provides the ability to toggle the ‘no_registry’ Winamp setting which allows Winamp to run without trying to use the OS registry (subject to plug-in support - a lot of old plug-ins ignore this)
- This makes it possible to run the paths.ini file editor with a single button click
- Due to this needing to make changes to a normally restricted file, it will attempt to run this mode (by using the /PATHSEDIT command-line option as an administrator as applicable)
- This will eventually allow for converting the current Winamp install into a portable install or making it non-portable or just adjusting the level of OS integration
- Added placeholder preferences page for ‘Audio Capture’
- This is placed under the ‘general preferences’ preferences group node
- If the plug-in (in_capture.dll) is present and loaded then it’s preferences will be shown here otherwise a fallback page detailing how to enable the feature is shown
- See details about in_capture.dll in the ‘Plug-ins’ section below for more about this feature
- Added placeholder preferences page for ‘Streaming’
- This is placed under the ‘general preferences’ preferences group node
- You are seeing this as it means the streaming feature has not been implemented.\n\nThis will allow for taking Winamp's output and sending it to a compatible server (e.g. SHOUTcast / Icecast / HTML / Websockets??) depending on the setup used.
- Added a ‘diagnostics’ preference page and a number of sub-pages to go with it
- This is placed under the ‘advanced’ preferences group node
- These are primarily being used to aid in debugging and verifying changes are working correctly
- ‘Setting Locations’ page:
- This shows the same information as the /DIAG command-line option just as part of a preference page (mainly for those who are not happy with running command-line actions)
- This also provides a nice clickable link to the Winamp Info Tool
- This shows all of the settings which have been read / written by Winamp and it’s plug-ins
- This may not reflect what is currently in the physical files but is what Winamp is using
- ‘File Associations’ page:
- This shows which file types (by extension) are reported as associated with the input plug-ins
- This is helpful to see if there’s any not reported by the input plug-in when they should or if there is a possible conflict in multiple input plug-ins trying to handle the same file type
- This does not detect dynamically handled interactions (e.g. streaming)
- ‘Modern Skin Settings’ page:
- This shows a parsed copy of the ‘studio.xnf’ file (usually found at %APPDATA%\studio.xnf) which is used to hold settings that only relate to when the skin is the active modern skin
- This is helpful for just quickly looking at what each modern skin has previously stored
- At a later date the option to edit / remove setting may be provided for helping skinners
- This is just a place for random information which doesn’t really fit in elsewhere
- Currently it shows some memory usage information about Winamp including largest free memory block (this might be useful if Winamp is crashing during large library re-scans)
- It provides a button that calls EmptyWorkingSet to reduce Winamp’s reported memory usage
- It provides an option (default: off) to automatically call EmptyWorkingSet ~10 seconds after Winamp has started to recover any memory used during start-up that is no longer required
- Added back in pre-5.x changelog to the about -> version history page
- This doesn’t add much other than a bit of nostalgia on what happened in versions back to 1997!
- Made the about dialog vertically resizable (like with the preferences dialog)
- This makes it a bit easier to look at the shortcuts and longer version history sections
- Replaced the ‘Winamp Pro’ preferences page with an about page / version history for this update pack
- Have also tweaked the original Winamp about page to reference the pack’s version, etc
- Patched out some unwanted winamp.exe functionality to reduce playback processing / resource usage
- Replaced all of the clickable links in the official preference pages with a better implementation
- This is now using the ‘syslink control’ which allows for text + links within the same control
- This makes it much easier to translate some of the pages due to not having to layer controls
- Fixed restoring the preferences page selection not working for some specific page insert positions
- Improved the preference handling code to be more dynamic and use a bit less memory per node group
- Fixed child node preference pages in a rare case being placed under the wrong parent preference node
- Fixed child node preference pages not always being parented to the required preference node
- Fixed display issue on the Media Library -> Tree Options preferences page when ml_disc.dll is not present
- This preference page is meant to hide the ‘CD / DVD items’ section if the plug-in is not present but it doesn’t correctly reposition the ‘Podcast Directory’ section
- For translators, swapping the order of these groups in gen_ml.lng -> dialog #157 will fix this issue (i.e. having the Podcast Directory’ / ‘Podcasts’ section above the ‘CD / DVD items’ section)
- See winamp.dll -> dialog #266 for what it should be like if the above doesn’t make sense
- Added option on the Media Library -> Tree Options preferences page to keep the 'Downloads' item visible when the download list is empty
- The default behaviour is for the 'Downloads' item to be hidden if there is no in the downloads list
- Added ability for plug-ins to get a WASABI_API_SVC pointer without having to use SendMessage(..)
- This is a small loading optimisation as the fewer SendMessage(..) on start-up the better due to avoiding additional processing by each subsequent main window subclass that happens on loading
- Patched the local library search to try to run at a higher priority to try to reduce the time to get search results
- Patched the IPC_GETHTTPGETTER / IPC_GETHTTPGETTERW API not attempting to process HTTPS urls
- Although Winamp’s HTTPS support is somewhat hit and miss, it was intentionally blocking trying to download such urls over this API which could break valid streaming playlist links from being resolved
- Implemented the Unified Alt+3 dialog additions (forward / back navigation buttons) instead of being in JTFE
- This now provides a dedicated resource instead of trying to ‘hack’ the buttons into existing resources
- This was implemented in the plug-in to provide the feature on older Winamp versions but should really have been implemented natively which this change is the nearest we can get to happening
- Implemented the Edit Playlist Entry dialog addition (browse for folder button) instead of being in JTFE
- This now provides a dedicated resource instead of trying to ‘hack’ the buttons into existing resources
- This was implemented in the plug-in to provide the feature on older Winamp versions but should really have been implemented natively which this change is the nearest we can get to happening
- Implemented the classic skin windowshade support instead of being in JTFE
- This now allows the mode to work irrespective of the JTFE plug-in being installed / activated
- This will need to be finished off to provide the long missing drawing override so this looks better than it trying to piece together the parts from the existing skin resources (e.g.gen.bmp and pledit.bmp)
- This is now provided as an option on the Skins -> Classic Skins -> Classic Skins Options preference page instead of under the Jump to File -> Extras preference page
- See winamp.dll -> dialog #121 for the new dialog resource being used for this change
- Due to this change, litestep support has been removed from the preferences page (not enough room for everything) and it’s related functionality has been disabled (am not expecting this to be an issue)
- This newer version uses less memory by not duplicating per-winder the skin bitmaps that are used
- Implemented a preference option to disable the native video support on the video preferences page
- This manipulate the hidden no_video configuration option that was added in the 5.66x releases
- By disabling native video support, the menu, preference and video window are completely removed and it effectively returns Winamp to just an audio-only player like in 2.x
- This does not prevent some old 3rd party plug-ins from implementing their own video options and any well-behaved 3rd party plug-in should not have issues with all of this being disabled
- To re-enable the native video support the no_video option needs to be removed from winamp.ini when Winamp is not running (may add a command-line option if there’s a demand for doing that)
- See winamp.dll -> dialog #121 for the new dialog resource being used for this change
- Implemented a replacement Winamp Agent mode (via the /AGENT command-line option) which adds library playlists support in addition to the bookmark support (which now works with the bookmark categoriser plug-in) and reduces the memory overhead by up to 90% compared to the original Winamp Agent (nice!)
- Implemented a replacement Elevator.exe / ElevatorPS.dll as used by Winamp for elevation / UAC on all supported Windows versions that WACUP runs on (Windows 7 and newer)
- This allows the loader to do required elevation / UAC prompts without having to wait until it’s too late by waiting for Winamp to actually be loaded and leveraging Winamp’s existing native implementation
- This will try to replicate the functionality of the native Winamp implementation but some aspects will not to be re-implemented if no longer applicable (e.g. the WriteProKey(..)) or may not be 100% complete and will need a bit more work to get things compatible as required
- This re-implementation is done via the new ‘evelate.dll’ and the rest in the loader’s winamp.exe
- Added message prompt if hung / unresponsive Winamp instances are detected when starting another instance so that the issue is known and something can be done to resolve the issue (i.e. kill the instances)
- Changed the minimum height of the generic Winamp skinned windows to be 87px instead of 116px
- For most cases this is not needed but it was helpful with the gen_waveseek plug-in for my needs
- Added support for a Windows 8.1 / 10 like icon if Winamp is pinned to the start screen / menu respectively
- This is limited in what it allows but also allows for manually editing it if required (or just not liked :) )
- Added loading checks to try to reduce issues from running Winamp with certain missing core files needed to operate correctly (e.g. xml.w5s missing which breaks modern skin loading or the CRT fallback dlls)
- Added automatic detection and patching of some specific string processing errors to resolve some crashes seen when incorrectly using some of the shared CRT (msvcr90.dll) functions due to invalid / empty strings
- This makes Winamp and any plug-ins loaded which leverage the shared CRT (msvcr90.dll) more resilient to poor data and / or missing checks in the code (e.g. in_mp3.dll can crash if trying to load a null string which this resolves)
- Fixed an issue found with the string processing error fix which prevented the visualisation preferences page from correctly opening if portable media player plug-ins (pmp_*.dll) were incorrectly attempted to be loaded)
- This fix will now prevent pmp_*.dll files from being checked for being visualisation plug-ins which Winamp shouldn’t be trying to do anyway (someone missed updating that check years ago it seems)
- Disabled some of the in-Winamp setup process (aka stage 2 of the Winamp installation) to reduce time to install, fix potential crashes on loading due to 3rd party plug-ins and remove calls to dead web services
- Add beta mode expiration support
- This will cause beta builds to stop working after ~1 month and will be disabled for full release builds
Command-Line:
These are additional command-line options which have been added via the loader program to expand upon the existing command-line options (which were notably increased with the 5.66x releases) which help with using Winamp in a number of scripted / controlled scenarios.
- Added /DIAG command-line option
- This shows some basic information about the information detected from the current Winamp install.
- Saves the current list of library playlists to stdout or to a file (if specified)
- Added /EXPORTLIBRARY [m3u|pls|m3u8|csv] [<file>]
- This exports the local library database to the specified file format (default is CSV) and optionally to the file name provided, if not, %appdata%\Winamp\exported_library.<format> is used
- Added /EXPORTHISTORY [m3u|pls|m3u8|csv] [<file>]
- This exports the history database to the specified file format (default is CSV) and optionally to the file name provided, if not, %appdata%\Winamp\exported_history.<format> is used
- This will show the current smart views and the database query used to create the view.
- The order they will be shown as may not be the same as they appear within the library window (but typically the ordering does match)
- This will show some basic information about the local library database file
- e.g. record count or fragmentation level
- This will show some basic information about the history database file
- e.g. record count or fragmentation level
- This will show some basic information about the provided database file
- e.g. record count or fragmentation level
- This will run a compaction of the local library database file
- This will run a compaction of the history database file
- This will run a compaction of the provided database file
- This will attempt to re-build an incomplete database file where there is no index file available
- If it cannot do this then it will attempt to dump the valid data which could be read from the file
- This is used as a one-time migration of the native podcast plug-in’s settings from rss.xml to instead be stored in the main ini settings file
- This has been done for speed of loading (by using the loader’s cache) and to reduce memory
- This is providing an updated version of my old paths.ini file editor program as an integrated part of the loader as most of the code is already in the loader so is silly to duplicate it as a standalone version when it can just be integrated in
- Most should never have the need to use this but it’s handy for some dev work where it can help confirm certain details and who doesn’t like a gui editor :o)
- This causes a DebugBreak() to be called just after the true Winamp process has been created so that a debugger can then be attached to this child process.
- If this is not caught or execution is resumed then the true Winamp process will be resumed.
- This is needed as not all debuggers will automatically attach to child processes created by the main process.
- The PID of the child process is logged via OutputDebugString() as the following: WACUP Child PID: <PID>
- Additionally the loader will use IsDebuggerPresent() to trigger this behaviour which is more helpful if using more complex command-line options which the /DEBUG check does not attempt to handle
- This will scan through all of the top-level windows to check for which are real Winamp instances
- A number of programs can create what looks like a Winamp window but is just a fake so that basic Winamp 2.x plug-ins can be loaded within them
- This outputs the following information (to stdout or to the file specified either as a plain text or as an ini) for all of the real Winamp instances that have been found:
- <pid> <hwnd> <path> <class> <version>
- The values are tab separated as there is less chance of them appearing in the fields
- <pid> - process id
- <hwnd> - HWND of the Winamp instance (is useful if you want to close it in an installer script e.g. SendMessage <hwnd>WM_COMMAND 40001 0
- <path> - full path for the Winamp program file
- <class> - class name of the Winamp window (e.g. “Winamp v1.x” is the default but this can be changed via the command-line and /CLASS or via the paths.ini setting which is useful for multiple instances)
- <version> - the Winamp version (e.g 5.6.6.3516)
- If nothing can be found then nothing is sent to stdout or the output file (if specified)
- It also optionally supports providing a folder path for the Winamp install location to only be considered which can be helpful to avoid detecting Winamp installs in other folders that are not related
- This will make the loader run in a compatible way to emulate the Winamp Agent (winampa.exe) without the need for another full process (program file) to be running
- It was otherwise possible to have 3 processes running (winamp.exe, winamp.original and winampa.exe) when the agent was enabled and Winamp was running
- The Winamp agent is basically a way to access some Winamp aspects more quickly (depending on how it is used) as well as maintaining (if enabled) a notification icon for quicker loading of Winamp
- Due to how the loader works, this causes this emulated mode to use much less memory compared to the original Winamp agent (~0.3 - 0.9 MiB vs ~5 - 7 MiB on Windows 7)
- This now also adds the ability to access the Winamp library playlists in addition to the existing bookmarks and CD drive support of the original Winamp Agent
- This fixes an issue seen with the original agent where the notification icon is not matching what has been specified to show for Winamp’s main program notification icon
- This removes the option to not have a notification icon shown as it’s needed otherwise you cannot interact with it
- That option relates to the 2.x days when the agent could maintain file associations
- This version is smarter than the original agent in updating text states based on whether Winamp is or isn’t running as well as better handling showing Winamp if already running
- The original agent will just spawn another Winamp instance instead of just re-showing / making active the existing Winamp instance which is faster and uses less resources
- This is just a basic command but over time it should evolve to help fix any issues that arise (e.g. if Winamp is failing to start-up due to a corrupted settings file)
- Currently this will do the following:
- Reset the currently used skin back to the classic base skin to improve the chance of Winamp being able to load if it’s crashing on loading
- Deletes the modern skins settings file (studio.xnf) as this getting corrupted can prevent Winamp from being able to load
- Reset the post install flag back to indicate a valid setup has been completed in-case setup keeps crashing (which has been known to happen due to certain input plug-ins)
- Changed the ordering of the command-line help information via /? for easier reading
Plug-ins:
These are additional or replacement plug-ins which will be included to either expand upon or to replace existing native Winamp functionality as required. Replacement plug-ins will where possible provide a comparable level of support to the native Winamp plug-in it is replacing.
Unless otherwise stated, updates of the existing available plug-ins will now only work when run under a valid install of the pack due to leveraging better code sharing to reduce plug-in overheads and make it easier to maintain code.
- Updated all plug-ins as applicable to get the WASABI_API_SVC pointer without using SendMessage(..)
- As noted in the loader section this is a small loading optimisation
- Updated all plug-ins as applicable to use the pre-generated file / folder paths by the loader instead of having to manually query for them
- This is a small loading optimisation and also reduces some of the in-memory duplication of paths
- Replaced Winamp’s existing Module Decoder plug-in (in_mod.dll) with one based on libOpenMPT (derived from in_openmpt.dll but renamed to in_mod.dll)
- This is much more reliable and better library for module file playback compared to the very old mikmod based plug-in that Winamp has shipped for far too long
- This version is based on 0.2.7299-beta20.2 (22-10-2016)
- This version includes the following over the originally provided libOpenMPT based input plug-in from the OpenMPT project developers are as follows:
- Unified Alt+3 dialog support
- Now follows the Playback preference page options (as applicable)
- Added uninstall support so it can be removed cleanly within Winamp
- Uses the Winamp settings folder instead of the system registry (e.g. makes it portable mode compatible)
- Enabled basic archive support not enabled in the libOpenMPT build
- Added metadata reading support for better ATF / Library support
- This is limited to what can be obtained via libopenmpt and the file formats used
- Responses are comparable to those of the old in_mod.dll
- Updated gen_jumpex / JTFE (v1.5)
- Moved a number of existing features from this plug-in into the loader (winamp.dll specifically)
- Advanced preferences handling for sub-page handling, callbacks, etc
- Unified Alt+3 dialog additions (forward / back navigation buttons)
- Edit Playlist Entry dialog addition (browse for folder button)
- Classic skin windowshade support
- Icon Library Pack support
- ‘File Types’ preference page improvements
- Shell integration options
- Fixed the ‘ML Options’ and ‘Extras’ preference pages appearing under the wrong preferences node
- Moved the ‘Extras’ preferences page to appear as a sub-node of the ‘Playlist’ preference node
- As all of the other options have been removed, it just leaves playlist options hence this move
- Updated ml_enqplay (v2.2)
- Changed to load all applicable functionality only when it is actually needed
- Changed the per-plug-in handling to be smarter in it’s tracking of the plug-ins
- This will reduce the amount of unnecessary processing done when any dialogs in Winamp are being created whilst the plug-in tries to ensure it is hooking the correct dialog for the library view
- Updated to use some 5.66+ API to save on code duplication to get information
- Fixed crash issue due to incorrect handling of child windows under recursion
- Removed the uninstall plug-in settings prompt as no settings are saved
- Removed all non-legacy handling code needed by the plug-in for hooking
- Updated ml_exporter (v1.1)
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed
- Fixed the config options not working with the 5.66x style of preferences
- Improved error handling if there is an issue with loading the databases
- Improved the speed of PLS and CSV generation
- Changed the default encoding for CSV and TXT output to now be UTF-8
- Fixed the CSV encoding mode not being preserved between instances
- Changed some menu strings to better match the wording in Winamp’s UI
- Updated gen_classicart (v1.5)
- Improved quality of artwork scaling so images should look better to the eye
- Added ability to show image files added directly into the main Winamp playlist
- Dunno why but this has made it easier to help check some other WACUP aspects and to ensure that artwork display works - so this might be useful for maybe someone out there...
- Changed to use some 5.66+ specific API to save on code duplication
- Changed when settings are saved to only happen if something changed
- Re-saved the notfound.png image to get a ~60% saving with no quality loss
- Changed when some aspects are done from initial loading to later on to reduce overall loading time
- Changed to not load artwork / metadata if the artwork window is not set to be shown
- This results in a memory reduction (how much depends on what is being shown) if the window is not visible (including hiding the window if artwork / metadata has been loaded)
- Removed the embed in the media library window option
- This will be re-implemented in a different manner but is being disabled in-order to avoid issues with the newer code used for the library window handling
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed for a faster closing time
- Fixed the custom removal dialog causing a refresh of the preferences when there was no change in what needs to be removed
- Fixed some of the 'remove built-in page' options being shown if the feature isn't properly installed or having it show an incorrect string due to load issues
- Removed the need to hook the main Winamp window
- This is a nice to have as it provides a small performance boost as there’s one less hook having to look at the internal window messages
- Changed to have the loader do the main hooking of the preferences window when it is created and we now install a small hook which the loader then calls
- This makes things somewhat simpler in the plug-in as the loader does the main work in ensuring it catches the preferences window creation
- Removed the ‘Winamp Pro’ handling as it is no longer present as part of this pack
- This is due to the pack overriding the original ‘Winamp Pro’ preference page to be ‘About’
- Changed the ‘Video’ detection to recognise if ‘no_video=1’ is set to disable Winamp’s video playback
- Updated gen_skinmanager (v1.1)
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed for a faster closing time
- Improved the option to ‘find the skin on disk’ (right-click on the skins list in the preferences) to more reliably open into the skin folder (if pre-extracted)
- Fixed some cases of the preview code running when a preview was not active
- Removed any remaining code for old OS / Winamp compatibility including settings compatibility options (relating to the older Skins In Submenu plug-in)
- Added support for resizing the preferences page on compatible setups
- Updated gen_timerestore (v3.0)
- Added a basic scheduler mode that allows for (re-)starting the current playlist or loading a file or library query or library playlist at the specified time (which is currently repeated daily)
- This is basic and has been added as a means to replace an old 3rd party plug-in which isn’t portable or multi-user friendly (i.e. needing changed folder permissions or UAC disabled)
- This will likely be split out into it’s own plug-in later on but for the time being it is part of this plug-in as the functionality needed is close enough to make a first implementation quicker
- The options for this can be found at Preferences -> Scheduler
- Added library playlists as an additional option to load on start-up on the ‘Extra Options’ preferences
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed for a faster closing time
- Fixed the first page of the preferences not appearing to load
- Moved preferences handling code into the loader (winamp.dll)
- Removed any remaining code for old OS / Winamp compatibility
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed for a faster closing time
- Changed where and when certain information is obtained to leverage shared code in the loader
- Fixed current icon pack not being shown on the preferences dialog
- Fixed to update the tooltip text on the compact mode with some of the loader patching done
- Fixed to try to provide notification icons in a size that the OS wants (may help with high DPI setups)
- Removed any remaining code for old OS / Winamp compatibility
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed for a faster closing time
- Updated to use the adjusted api_playlist_colouriser
- Added ability to have the file information shown in the unified Alt+3 dialog instead of in the separate window that the original Nullsoft plug-in shows a limited set of file information
- Fixed some potential buffer overflow issues when converting more parts to unicode
- Renamed to just be ‘Waveform Wrapper’ and tweaked the about message
- Removed any remaining code for old OS / Winamp compatibility
- This adds the means to process specific stream urls (including certain playlist urls) when played in Winamp so that it can then get the actual streaming url needed to allow for Winamp to play them!
- It leverages youtube-dl to achieve this (without me having to manually write / convert all of the code needed) so a current version will be required to keep this working as / when sites change
- The plug-in will attempt to automatically download the required tool after first install but if that does not work, it will need to be manually copied into %appdata%\Winamp\WACUP_Tools or the WACUP_Tools folder in the settings folder
- It determines which Winamp input plug-in is best for playing the url
- Only videos in the MP4 format are supported (being handled by in_mp4.dll) as Winamp cannot stream the WEBM videos
- This attempts to set the title and length of the playlist item (if present in the youtube response)
- Playlist urls are supported and are expanded when playback is first attempted
- These appear to all be MP3 streams and are handled by in_mp3
- Playlist urls are supported and are expanded when playback is first attempted
- The extracted urls expire after a few minutes so the plug-in attempts to re-validate as needed
- These appear to be either MP3 or AAC streams and are handled by in_mp3 (with a lot of them already being found on SHOUTcast)
- Other sites may be supported based on user requests and it being able to be supported by Winamp and youtube-dl and it also not being something dodgy…
- Replaced Winamp’s BMP, GIF, PNG & JPEG read / write components with a new single image.w5s (v1.0)
- This replacement attempts to replicate (where possible) functionality of the existing 4 separate image handling components and combines them into a single component to reduce loading dependency checking as all of the image formats need to be available (e.g. for artwork and skin loading functionality) as well as providing more optimised versions for better performance overall
- This uses libpng to 1.6.26 (the last Winamp release uses 1.5.17 iirc) which simplifies how to get the ARGB32 data that Winamp needs from the PNG files without having to do extra manual processing
- This version also applies the SSE2 filter patch from Google to provide faster image loading times
- The performance difference (up to 50% on average) will vary by the setup being used so it may not be noticeable (e.g. when it’s in the millisecond range to be read to begin with)
- The worst case is that it should not be worse than the native Winamp component it replaces
- This uses the libjpeg-turbo library (v1.5.1) instead of the standard libjpeg library as it provides SSE2 optimised handling of JPEG files for faster reading in, etc
- This uses giflib library (v5.1.4) and has been compiled to try to better leverage CPU optimisations
- I’ve no idea what version I assume of giflib the native gif.w5s is using but this at least brings an implementation that is known to be using a current release of the library (more so for the better processing and handling of badly formed GIF files that could make Winamp crash).
- As the native bmp.w5s and jpeg.w5s provide some additional functionality that I cannot fully determine (I believe it’s related to video playback), this new component will load them so that functionality is available whilst patching out their main read / write functionality when being loaded
- Replaced Winamp’s existing shared FLAC dll (libflac.dll) (v1.3.1)
- This updates libflac to 1.3.1 (the last Winamp release uses 1.3.0)
- This includes a security vulnerability fix as well as a slew of other improvements (e.g. speed ups)
- Added shared libvorbis.dll (v1.3.5)
- This is used by the in_openmpt.dll and in_vgmstream.dll plug-ins
- This helps reduce code duplication between both of the plug-ins and makes it easier (if needed) to just update this shared library instead of requiring a full plug-in + library update
- Added shared libcurl.dll (v7.51.0)
- This is currently used by the gen_yule plug-in for handling the Twitter integration & in_url for quickly checking the validity of the cached Winamp-compatible playback urls (for cache expiration needs)
- This is likely to be used for more networking related features over time instead of the existing jnetlib component which is somewhat long in the tooth and doesn’t provide more modern web technologies
- Replaced Winamp’s existing album artwork component (albumart.w5s) (v1.0)
- This replacement is to help make it possible to improve upon Winamp’s album artwork handling with regards to finding and making use of it (e.g. eventually improving embedding support) which cannot be done by trying to work against the existing native album artwork component
- This adds a preferences page (General Preferences -> Album Art) which allows for enabling or disabling the album artwork lookup options that Winamp is able to use (e.g. embedded, folder, etc)
- This mirrors the existing Winamp behaviour when it comes to album artwork lookup ordering
- Replaced Winamp’s existing XML reader component (xml.w5s) (v2.2.1)
- This is still based on libexpat (now updated to v2.2.1) and is primarily used with modern skin loading
- Later on may look into replacing it with a different library but as I’ve used libexpat for over 6+ it was so much simpler to make a replacement component using it again (if only as a stop gap)
- This is also done to resolve a security vulnerability and a few other reliability improvements
- This will need some testing to ensure that nothing (especially for modern skin loading) has broken
- Added ‘extended hover’ support (like modern skins) so being close to the window (by the configured size) will make it 100% visible again
- Added unicode and localisation support
- Changed the menus and dialogs to better match the recent 5.x style / behaviours
- e.g. it will set the custom menu item text to show the opacity level
- This should make doing the language pack easier as it’s mirroring the resources in gen_ff.dll (am duplicating them incase it’s not installed)
- Changed the fade in / hold / fade out times to match the modern skin scales
- Changed settings loading to only read the settings when required for a small start-up optimisation (v2.1)
- Fixed to not insert our preference page as a sub-page on un-related plug-ins
- Fixed fade-in not being applied when Winamp starts if set to apply on focus
- This now mirrors the functionality seen when using modern skins
- Fixed fade-in not being applied when activating some of the skinned windows
- Fixed some random crashes when using a modern skin / odd window loading
- Fixed accessibility issues within the preference when the plug-ins page is the active page (via a simple style change to act as a child control)
- Fixed the preference page for this plug-in not being selected when using its config handler
- Removed any code for old OS / Winamp compatibility (e.g. pre Windows XP)
- Removed re-saving per-window opacity settings on startup when nothing will have changed (v2.1)
- Reduced some of the message processing overhead needed to catch events
- Fixed some missing translations (v2.0 specific)
- Added out_ignorant (v1.0)
- This acts as a null output by ignoring the audio data provided by Winamp to be sent to the output. This can be useful when used with headerless / streaming setups where the audio data does not need to be or cannot be heard (e.g. no soundcard).
- There is no configuration and it can just be selected and used
- It is Winamp 5.666 compatible by making use of the winampGetOutModeChange(..) export so that anything it relies upon is not loaded until the plug-in is indicated as being used / queried for information
- Added in_vgmstream (v2.0) (r1050-40-wacup-4f6c59b)
- This adds support for dozens of streamed ADPCM and other formats extracted from various console and PC video games (too many to list here).
- This is an updated version of what has been available from https://hcs64.com/vgmstream.html and adds the following Winamp 5.x specific changes (it’s only really been a Winamp 2.x plug-in before)
- Adds basic metadata support (enough to improve integration when no metadata is provided from the files being used)
- Now uses the unified Alt+3 dialog
- Adds transcoding / file conversion support (note: to be finished!)
- Follows Winamp playback settings for playback thread priority
- The supporting dlls the plug-in needs are now placed into Winamp\Plugins\vgmstream_dlls instead of just being dumped in the root Winamp folder or the Winamp\Plugins folder (so less messy)
- The supporting dlls are now delay loaded so as to only use them if needed
- This reduces the resources overhead for most files where the supporting dlls are not needed for the playback / conversion process
- This also prevents the plug-in from not being able to be loaded if the supporting dlls are not present (at worst the file will just be skipped over if not able to be processed at that time)
- The supporting dlls have been recompiled to leverage the shared CRT (for smaller dll sizes) and updated as required (e.g. libvorbis 1.2.0 -> 1.3.5)
- Settings are now only loaded when required for a small startup optimisation
- Due to the dependencies of the code, this new version is not 100% the same as v1.80 or the v1.81 beta released by Jasper but it should be close enough on most aspects
- This allows for audio capture from any recognised Windows input device into Winamp via configurable capture:// and line:// entries
- The linein:// style entry from the Nullsoft LineIn Plug-in is also supported for compatibility
- The configuration for the plug-in is now provided via the ‘Audio Capture’ preference page under the ‘General Preferences’ node (as detailed in the ‘Winamp Loader’ section above)
- This version includes the following over the originally provided plug-in as follows:
- Unified Alt+3 dialog support (TODO)
- Added uninstall support so it can be removed cleanly within Winamp (TODO)
- Uses the Winamp settings folder instead of the system registry (e.g. makes it portable mode compatible) (TODO)
- Everything else that needs to be done to complete the integration updates (e.g. localisation, titles)
- Replaced Winamp’s existing Podcast handling plug-in (ml_wire.dll) with a new implementation (v2.0)
- This has been created due to repeated corruption issues experienced with the feeds.xml file which causes the plug-in to lose some (or all) of the feeds (recent versions of the plug-in do create a backup of the file but this can also be easily corrupted)
- This version has less functionality compared to the native plug-in it replaces (but most of which is unlikely to be noticed) but it will see improvements to surpass the native plug-in!
- This replaces the broken ‘Podcast Directory’ node in the library of the native plug-in with just a ‘Podcast’ node which is equivalent to the ‘Subscriptions’ sub-node of the native Winamp plug-in
- This brings the podcasts to the fore-front as there is no discovery service that the older plug-in used to make use off until Winamp was sold
- Possibly a discovery service may be added back but it would not be the root node like before
- Revised library view layout (vs the native plug-in) now shows more of the episodes for a subscription
- This reduces the width of the ‘info’ pane to half-width so the episodes list can be full-height
- Changed the ‘info’ pane to show the branding image (if available) in addition to the available info text
- Improved display handling of info text from the feeds to better honour layout formatting (vs native)
- Line-breaks and some other oddities were not handled correctly which would cause all of the info text to appear as a large text block when it should have been split into paragraph blocks
- The preferences page is now named ‘Podcasts’ instead of ‘Podcast Directory’
- The preferences page no longer provides any alternative Podcast Directory service url options
- Without the implementation of original web view of the native plug-in’s ‘Podcast Directory’ node then emulating this option makes no sense in this replacement plug-in
- Changed how and when settings are read / saved vs native plug-in to reduce loading times and to prevent re-saving settings which have not changed to reduce data loss issues
- This removes the need for the rss.xml file which is read once to migrate the settings into gen_ml.ini to follow all other library plug-ins (why oh why was the native plug-in be different)
- This also reduces some of the memory usage previously seen as rss.xml and feeds.xml were loaded into memory on startup even if not required with the native plug-in which in some cases could account for half of Winamp’s reported memory usage!
- The existing feeds.xml file is still used but later on a different storage strategy may be used
- The current re-implementation reduces the amount of data stored in the feeds.xml file as neither this replacement (nor the native plug-in from some research) needs all of the data
- A single xml file for storing all of the feeds information is not reliable (as seen by the data loss) and a separation of the information held (feed information vs episodes information) will need to be done sooner rather than later to better mitigate against potential data loss issues
- This replacement relies upon the ml_downloads.dll plug-in for the downloads handling and does not provide a ‘fallback’ mode like the native plug-in did incase ml_downloads.dll is not installed
- This just makes things much simpler to re-implement from my side at this time without having to replicate the functionality of basically two plug-ins instead of just the one
- This re-uses the filename of the native plug-in (ml_wire.dll) so that it can be loaded before ml_downloads.dll to ensure the correct placement of it’s view (if enabled) as a child of the ‘podcast’ library node
- This replacement is able to correctly maintain the selection within the podcast view when changing the sorting of either the podcasts list or the episodes list (the native plug-in badly messes this up!)
- This replacement will not randomly clear the selection within the view when clicking between the two lists (the episode list in the native plug-in was always being cleared on focus changes just because)
- This replacement adds tooltip support to show the podcast description or episode description (if present) for either of the lists respectively (if not present then normal behaviour is maintained to just show the full string if it is clipped due to column / view sizing)
- This replacement does a more thorough job in indicating if a podcast has been previously downloaded but was not for whatever reason tracked within the podcast database details
- This is carried out as needed and it may cause Winamp to be laggy in usage on a first run with an existing install whilst it re-processes all of the podcast feeds & file for anything not tracked
- Added extra options to help control the style and layout of the podcasts view
- Added support for automatically converting itunes podcast feed page into something that this plug-in can directly work with (this matches some of the online services to do the same but is integrated!)
- RSS and ATOM feeds are supported by this replacement
- The native plug-in only really supported RSS feeds
- Replaced Winamp’s existing Downloads view plug-in (ml_downloads.dll) with a new implementation (v2.0)
- This has been created to resolve some usability issues with the native plug-in which cannot be patched (primarily selection handling when changing the sorting of downloaded items) and to minimise resource usage when it is not an active library view or there are no active downloads
- As only the podcasts plug-in really uses the download system which this plug-in hooks into, this replacement plug-in may eventually be merged into the replacement podcasts plug-in to reduce code sharing between the two re-implementations and to reduce overall overheads
- This adds a tooltip for the downloaded item which will show the ‘comment’ tag (if present) so it’s possible to see what the downloaded file is about without using the Alt+3 option or podcast view
- This adds some additional columns (duration & size) to aid in checking the downloads are correct
- This adds F8 support to refresh the view without having to change the current library view
- Due to the selection state improvements, this should now allow for updating to see any new downloads without messing up the existing selection that was already made at the time (yay)
- Added gen_waveseek (v2.2.1)
- Added ability to show the waveform for the file currently selected in the main playlist editor instead of the currently playing file (there is a configuration option to disable this behaviour)
- Added CUE sheet support so CUE points in the shown waveform can be seen via the tooltip or by enabling a visual setting (default off to avoid undue processing)
- Added double-clicking in the window to (re-)start playback of the current / selected playlist file
- Added localisation support and a version resource
- Changed the handling of the waveform window to allow for certain key presses (up, down, left, right arrow keys) and mouse action (e.g. scroll up / down to change volume) to be processed as usable actions to mirror some of the main window functionality
- Changed the tooltip to show [current / total] like most of Winamp's tooltips
- Fixed the plug-in not being able to work correctly if UAC or there were not folder write permissions on the Winamp\Plugins folder
- Fixed a hang on close issue after a file has been processed by changing how the plug-in handling is done to not unload them immediately
- Fixed modern skin integration so the waveform window can be opened and closed as required without having to switch back to a classic skin or restarting Winamp
- Reduced impact of the plug-in being loaded against Winamp's overall loading time
- Anything else i've forgotten :)
- This now works correctly with Winamp 5.66x as it has been broken since around Winamp 5.3x
- Adds Alt+Click on the ‘stop’ button to quickly enable / disable the advance to next on stop action
- Added localisation support and other related 5.34+ and 5.5+ features (e.g. uninstall support)
- Changed the config action to allow for enabling / disabling the advance to next on stop action
- Fixed to work correctly with the JTFE playback queue so it will advance but not play as required
- This update attempts to resolve the issues which were raised by Winamp user jph6t but it is possible that there still might be some issues / incompatibilities with other plug-ins, if so please report them!
- Updated gen_repeater (v1.3)
- This now works correctly with Winamp 5.66x as it has been partially broken with recent 5.6x builds
- Changed how / when settings are read / saved to reduce overhead on loading or to only be saved if something actually changed for a faster closing time
- Changed to update the Winamp rewind / fastforward menu text to show the current setting value without having to go into the specific sub-menu
- Replaced Winamp’s existing Global Hotkey plug-in (gen_hotkeys.dll) with a new implementation (v2.0)
- This replacement has been done so there is an api that allows for removing an already registered hotkey within Winamp without having to restart Winamp (e.g. for the Playlist File Remover plug-in)
- The gen_hotkeys_extra plug-in (below) will be fully merged into this at a later date once I’ve made it possible to have per-hotkey configuration options within the global hotkey preferences page
- This will be done via a small registrable callback function as some of the hotkeys in the gen_hotkeys_extra plug-in (below) require configuration to make them useful and doing it via the main preferences dialog instead of the plug-in config action is more user friendly
- Added gen_hotkeys_extra (v1.0)
- This is a combined plug-in made up of my other standalone hotkey plug-ins to reduce the overhead of loading multiple (small) plug-ins especially as most of the framework code to work is the same
- Hotkeys provided by this plug-in are:
- EQ: Toggle equaliser on / off
- EQ: Toggle equaliser auto-loading
- EQ: Increase / Decrease Preamp
- EQ: Increase / Decrease band 1
- EQ: Increase / Decrease band 2
- EQ: Increase / Decrease band 3
- EQ: Increase / Decrease band 4
- EQ: Increase / Decrease band 5
- EQ: Increase / Decrease band 6
- EQ: Increase / Decrease band 7
- EQ: Increase / Decrease band 8
- EQ: Increase / Decrease band 9
- EQ: Increase / Decrease band 10
- Playback: Clear current playlist
- Playback: Lower volume to 10%%
- Playback: Lower volume to custom level
- Playback: Mute
- Playback: Play random song
- Playback: Play selected song
- Playback: Randomise playlist
- This provides a means to generate certain audio waveforms and related audio data as required
- Waveforms generated are:
- Sine wave
- Square wave
- Triangle wave
- Sawtooth wave
- White noise
- Pink noise
- Brown noise
- Replaced Winamp’s existing Library Playlist plug-in (ml_playlists.dll) with a new implementation (v2.0)
- This replicates most of the functionality already available in the native library playlist plug-in
- This adds a ‘split-view’ option for the root library playlists view so the selected playlist can be viewed and managed at the same time as seeing the list of other playlists (allowing for easier drag & drop)
- This makes it possible to not have to see the playlists as child nodes under the library playlist node (though it can still be done) which can improve loading times and usability in the library when many library playlists are present
- This adds a preferences page (Preferences -> Media Library -> Playlists) which allows for controlling the view mode as well as an option to use the original playlist instead of a Winamp managed copy (which some prefer so that the playlist is the same across other usage cases)
- This adds a ‘last modified’ and ‘external?’ column to the root playlist view
- This adds a greater range of drag and drop modes (more so within the same playlist view) as well as adding better protection vs the original library playlists plug-in to avoid unwanted duplication
- This adds column sorting options to the root playlist view to make it easier to sort the playlists by clicking on the title, number of items, duration & last modified column headers instead of using a right-click menu on the root playlist view library tree node
- This adds column sorting options to the playlist views to make it easier to sort by title or duration
- This adds improved support for easily importing a whole folder of playlists via external drag & drop
- This reduces the time needed to remove a large number of items from a playlist which with the native library playlist s plug-in could at times (depending on playlist size) make Winamp lock-up
- Unlike the native library playlist plug-in, changing the size of a column will now be remembered instead of auto-resizing to give the best fit in the view (as many have asked for over the years)
- This also provides a reset option via the playlist root right-click menu to get the old behaviour
- Unlike the native library playlist plug-in, sorting where there is a selection in the root library view now preserves the selection (before the selection would stay in the same place which didn’t make sense)
- Unlike the native library playlist plug-in, deleting any playlists (managed by this plug-in or external copies) will be put into the recycle bin in-order to help prevent against accidental removal (despite having to agree to delete the playlist within the plug-ins existing UI)
- Other small minor improvements versus how the native plug-in works (e.g. menu & button states)
- Replaced Winamp’s existing Playlist core component (playlist.w5s) (v2.0)
- This has been done as there are a few things to come for the Library Playlist replacement plug-in which need the playlist core to support some new aspects that cannot otherwise be easily done by trying to work around the native playlist core (e.g. additional sorting options)
- Supports the following playlist formats:
- M3U, M3U8, PLS, XSPF, FPL, MPCPL
- B4S has not been re-implemented as no one uses this Winamp3 format
- I can reimplement this if it is really needed but I’d like to hope it’s no longer in use
- Will attempt to ensure any files processed through it when using some of the loading api methods will provide a ‘length’ for any files found and added to the newly created playlist
- The native Winamp playlist core component doesn’t do this which can make for some weird issues if dragging and dropping a folder onto the library playlists root where the number of new items would be correctly displayed but the total length of the playlist could be incorrect
- This adds support for saving the origin source of an imported playlist (subject to new API usage)
- This is intended to make it possible later on to check for changes between the managed Winamp playlist copy vs the original source of the playlist (assuming that it still exists) which has been a long standing complaint against the library playlist support
- Replaced Winamp’s existing Library History plug-in (ml_history.dll) with a new implementation (v1.0)
- This replicates most of the functionality already available in the native library playlist plug-in
- This has been created to resolve some usability issues with the native plug-in which cannot be patched (primarily selection handling when changing the sorting of history items and issues when using the ‘delete’ key within the search field)
- This replacement minimises resource usage by not repeatedly re-reading from its settings file
- This replacement attempts to minimise memory usage when the history view is not active by only loading the history database until it is actually needed (i.e. when viewed or a play event occurs)
- Replaced Winamp’s existing ATF core component (tagz.w5s) (v1.0)
- This has primarily been done to see if it could be done (yes) along with the potential to try out a few ideas later on (i.e. expanding the default ATF syntax without custom tag registration overheads, etc)
- This provides a customisable means to log to a specified file the currently playing track which may be helpful for those using Winamp for streaming where it’s usually required to keep a record of what has been played and when it has been played for ensuring correct royalty reporting requirements
- The configuration for this plug-in is found on the ‘Play Tracking’ preferences page
- This leverages Winamp’s existing Advanced Title Formatting (ATF) support but also adds a few additional fields specific to this plug-in’s operation which may useful:
- %date%
- %time%
- %folder_size%
- %file_size%
- %length_seconds%
- Important Note: ATF and streams don’t work particularly well as there is a lack of consistency or information and so there may need to be additional work to make stream based logging more friendly against the information which is available (which in the worst case an IP only URL)
- This provides Twitter support so it’s possible to tweet an ATF customised string on title changes
- This requires authorising the plug-in to be able to access Twitter on your behalf which is easy to do via the preferences setup
- It is very possible that this plug-in will be expanded to log the currently playing track to other social media services for now playing spamming of your friends and foes!
- If there’s an accessible API and documentation then it will be considered if suggested to me!