Toaster v0.7
Copyright (C) Shane Hird 2003-2005
shanehird at yahoo.com

Description

A fully skinned track change notification plugin for Winamp. This was created to fill the need for a similar notification popup as used in Winamp 5 with modern skins. Supports displaying of album covers from either folder.jpg or ID3 tags, global hot keys for rating songs, full ATF formatting with several additions and much more. It is updated quite often, so be sure to check for updates. Please read this entire document to get the most out of your Toaster.

Frequently Asked Questions

I get some error about gdiplus.dll
The most common cause is it cannot find gdiplus.dll. This is to be expected under Windows 2000. You must install the GDI+ redistributable component into Winamp's main directory. (ie place gdiplus.dll into the same directory that winamp.exe is located). You can download the DLL from here. If you already have this file, then Toaster is failing at startup for some reason. Simply delete gen_toaster.dll and move on.

It doesn't skin properly with modern skins.
Modern skins are not supported, they use a completely different method of skinning Winamp. You can place a 'toast.bmp' into Winamp's directory to skin modern skins. Otherwise, you can make use of the "Custom skin" option and choose an image to your liking. The toast.bmp is in a similar format as gen.bmp as in classic skins (though with a small extension). Read the 'Skinning' section for more information.

It doesn't skin some Winamp skins
Only classic skins that contain gen.bmp can skin Toaster properly. This means skins which skin the media library and visualisation windows. You may place a gen.bmp or toast.bmp into the skin directory to skin Toaster. toast.bmp is a similar format as gen.bmp, see 'Skinning' below.

It doesn't display the correct tags for some music
Toaster reads its meta data through Winamp using the standard get_extended_info mechanism and through the media library. The input plugin you are using must support this for Toaster to display the correct information. Ideally, the media library should also be enabled to get the most out of Toaster.

It doesn't work
Toaster was built to run on Windows XP with Winamp 5 using classic skins, playing standard Mp3's. If it works on anything else, consider it a bonus. It will work fine with modern skins, though AFAIK doesn't work with older versions of Winamp anymore. I would like to support as many platforms as possible, but as I am not paid for developing Toaster, you will just have to try your luck with it. Make sure you don't have any other 3rd party plugins which may be conflicting with Winamp.

It pops up at the wrong times / fullscreen detection doesnt work etc
Detecting track changes in Winamp and fullscreen applications on Windows is a bit of a black art, if it works, great. If not, you could try a newer version when / if one gets released. (see 'Other Plugins'). You can also use a global hot key to toggle the showing of toasts when running fullscreen applications if the detection doesn't work for you. For problems with track change notifications, it is probable that the input plugin is causing the problem, check for updates for the particular input plugin you are using.

The size of the window/album cover/padding/text size/borders is not right
Determing the correct size to use for the various components based on manyl inputs (width/height/4 font sizes/album cover/expanding covers/skin type/dynamic width and height etc) requires a bit of magic. Sometimes it fucks up. Just continue tweaking until you get it right.

I cannot customize the display text
You must be using Winamp 5.x in order to customize what Toaster displays. It makes use of ATF which winamp 2.x does not support.

It does not display x meta information, even though my tags are all correct
Toaster gets all its information from Winamp, not the id3v2 or v1 tags. Enabling the Media Library and making sure it is indexing the correct information will help. Toaster is unable to display information not in the Media Library or available to Winamp in general, such as the "Composer" tag etc.

Can you add feature x
Possibly. I welcome all feedback and would consider adding something if I also see the benefit. However I am re-working a new version of Toaster which will use HTML for its layout, with scripting etc. So a lot of requested features could probably be solved by this new version.

Album Covers

Album covers can be read from either files or from ID3v2 tags. Toaster makes use of id3lib.dll placed in the main Winamp folder if it is to use ID3 tags. It will only load this if ID3 tags are being used, so be sure to uncheck ID3 covers if you do not intend to use them, as it will slow Toaster down as it attempts to parse the tag.

Toaster parses the filelist through the ATF function based on the currently playing file. The most common format you are likely to want to use is:

%dir%\\folder.jpg

However you may also use something like:

%dir%\\folder.jpg;%dir%\\..\\folder.jpg;C:\\albumart\\%album%.jpg

Which will first look for folder.jpg in the song directory, then the parent directory, then look for images such as "C:\albumart\metallica.jpg" if it cannot find the folder.jpg image in the song path. Examine the notes on ATF formatting for all the available tags.

Toaster will load toast_track.png and toast_http.png from the same directory as Toaster.ini if an album cover cannot be located and album covers are set to be shown. The toast_http.png image is used for Internet streams. Note that these images support transparency.

There are several tools for automatically downloading cover art, here are a couple, though there are probably many more:

Skinning

Winamp Skin:

The skin is taken from gen.bmp as used by classic skins. You must be using a skin which has the ability to skin the media library to get correctly skinned toasts. Alternatively, Toaster will make use of toast.bmp if it is found in the skins directory, or toast.bmp in the same directory as Toaster.ini if either toast.bmp or gen.bmp cannot be found in the skins directory. Lastly, it will make use of the default base skin if none can be found.

toast.bmp has the same format as gen.bmp with the addition of a row of pixels at offset 156,0. This row has the same format as the row of pixels used in genex.bmp. They are used to indicate the background and foreground colour. The two alternate colour modes use the item background/foreground and the window background/foreground. The skin is scaled to 1/2 for use in Toaster.

You may override the background and foreground colours by selecting 'Custom Colours'. Note that unchecking the 'borders' option, and checking the 'Custom Colours' option effectively makes toaster ignore the current skin. It will simply use a rectangle of the chosen colour.

No Skin:

No background is displayed at all. Note that overlay images and text shadows etc still apply.

Custom Skin:

An image to use as the background. Currently these aren't in any special format and can be any design you like. You can also use transparency/partial transparency for these images. Ideally these should be created at the size you want them to be, and "Stretch Custom Skin" should be unchecked for the best results.

Overlay Image:

These should be mostly transparent. Typically .png files. To create an overlay image, you would normally take an exact copy of the custom skin background, then make transparent everything but the parts you want to be on top of the text and images. You can create 'glass' type effects by using partial transparency etc.

Mouse Actions

Currently under development, future versions of Toaster might allow more actions and will be configurable. The currently defined fixed actions are:

Use wa_notify.exe to invoke the notification window at any time, also works with WA5 notifications. A useful utility to bind to a hot key on your keyboard.

Advanced Title Formatting (ATF)

Available tags:

All the tags available within winamp, plus all tags available within the media library, plus a few more. You may use all the usual $commands available to winamp, such as $if, $cut etc.

You may also use '\n' in your format lines to create new lines, however its use is not recommended as you may cause some text to be cut off.

The list of tags includes, but is not limited to the following:

%title% The title as returned by Winamp
%artist% The artist as returned by Winamp

%album%

The album as returned by Winamp
%tracknumber% The tracknumber as returned by the media library, formatted to two digits
%track% The tracknumber as returned by Winamp (-1 for invalid tracks)
%year% The year as returned by Winamp
%comment% As read from Winamp
%pllen% The length of the playlist
%plpos% The current position in the playlist
%watitle% The playlist title as formatted in Winamp
%wastatus% The status of the winamp player. Paused, Playing or Stopped.
%filename% The filename of the current playlist item
%dir% The directory of the current playlist item, without the filename
%parentdir% The single directory of the current item, without the full path
%playcount% As read from the media library
%rating% As read from the media library
%ratingstar% The rating as represented by the configured stars to use for the rating
%length% The length of the current playlist item
%lengthf% The length of the current playlist item, formatted to hour.min.sec
%bitrate% As read from the media library
%bitratewa% As read from Winamp
%channelnum% The number of channels
%channels% stereo or mono depending on number of channels
%srate% Sample rate
%vol% Volume as a percentage (0-100)
%lastplayf% Last played date - formatted
%daysago% Number of days since item was last played
%genre% As read from the media library
%type% As read from the media library
%filesize% As read from the media library
%lastplay% As read from the media library
%lastupd% As read from the media library
%status% Current reason for displaying toast. 'New Rating', 'New Track', 'End of Playback', "Hotkey" or "Volume Changed"
%shuffle% Returns current shuffle status
%ishttp% Returns 'Yes' if the current filename begins with http (Internet streaming)
%isinml% Returns 'Yes' if the item is in the media library
%hascover% Returns 'Yes' if the item has a cover either as folder.jpg or an ID3 cover
%tagln()% Returns the length of the enclosed tag. explained below.
%cmp()% Compares two tags, and returns the value of the left side if it is true. explained below.

cmp and tagln tags explained:

To use the tagln() tag, you simply enclose a tag or text within '() and precede the tag with a ':' to indicate that the item is tag. eg: %tagln(:artist)% would return the number of characters in the tag %artist%.

To use the cmp() tag, you seperate two values on either side of '>', '<' or '='. Toaster will compare the two values and if they satisfy the operator (<>=) it will return the value of the tag or text on the left. To indicate a tag, precede the value with a ':'. eg. %cmp(:rating>3)% will return the value of %rating% if it is bigger than 3. See below for more examples.

Examples:

$if(%cmp(:genre=rock)%, Rock n Roll, Another Genre) Will display 'Rock n Roll' if the genre is rock, otherwise will display 'Another Genre'.
$if(%cmp(:artist=:album)%, Self Titled, %album%) Will display 'Self Titled' if the artist is the same as the album, otherwise it will display the album
$if(%cmp(:tagl(:album)>10)%, $cut(%album%, 10)..., %album%) If the album is bigger than 10 characters, it will truncate it to 10 characters and add '...', otherwise it just displays the album
$if(%ishttp%, %watitle%, %title% - %artist%) Uses the winamp title if it is a http stream, otherwise uses title and artist information
$if(%cmp(:status=New Rating)%, Applying new rating,) Displays 'Applying new rating' if the status indicates a new rating is being set
$if(%cmp(:bitrate>128)%, High Quality, Low Quality) Shows 'High Quality' or 'Low Quality' depending on the bitrate
$if(%cmp(:cmp(:rating>0)<3)%, Less than 3, Bigger or 0) Determines whether the rating is less than 3 and bigger than 0
$if(%cmp(:type=1)%, Video, Other) Displays 'Video' if the type indicates a video
Played %playcount% time'('s')' Shows number of playcounts. Note the use of ' around the (

Hot Keys

To configure the hot keys, add the items to the 'Global hot keys' preferences pane within the winamp preferences dialog.

Hot keys supported:

Uninstalling

Delete the following files:

TODO:

Future enhancements that may be made to Toaster depending on time and motivation

Other Plugins

If you like this or any of my other plugins, you may like to consider donating to encourage further development. Many of these are currently only available in the Winamp forums, but may become available on Winamp's site over time.

Changelog

v0.7 (20/2/2005)

v0.6 (12/12/2004)

v0.5b4 (19/8/2004)

v0.5b3 (17/6/2004)

v0.5b2 (13/6/2004)

v0.5b1 (11/6/2004)

v0.4 (29/3/2004)

v0.3 (12/3/2004)

v0.21

v0.2