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