Writing A Plug-in
Winamp plug-ins are files that extend Winamp's functionality. There are currently seven different plug-in types, each of which extends Winamp in a particular way. Winamp plug-ins are implemented as 32-bit Windows DLLs. Here are the plug-in categories:
- Input plug-ins: Input plug-ins give Winamp the ability to play additional file types that aren't supported by Nullsoft directly.
- Output plug-ins: Output plug-ins allow Winamp to manifest audio data in different ways.
- General purpose plug-ins: Anything that needs to run continuously in the background or doesn't require audio processing qualifies as a General purpose plug-in.
- DSP/effect plug-ins: DSP Plug-ins manipulate audio data before actually being sent to the speakers (or whatever the Output plug-in decides to do with it).
- Visualization plug-ins: "Vis" plug-ins display some sort of visual effect based on audio that's being decoded by Winamp.
- Language packs: Language packs are used to internationalize Winamp to the language of your choice.
- Media Library plug-ins: Media Library plug-ins extend the media library for instance, for portable devices such as iPods, accessing Media Library databases, etc.
Most of the plug-in types (with the exception of Language packs) export one function, which is used to query the plug-in of its interface. The way each plug-in is queried varies, and will be covered on a type-by-type basis.
All of the plug-ins are designed to be written in C or C++, using Microsoft Visual C++ 4.0 or later. Other people have reported success with writing some forms of plug-ins using Delphi, LCC, and Visual Basic. We don't use these alternate development platforms, so we can't really support development on them (writing this page alone took way too much time, wink). The Winamp forums are a good place to start.
Check out the Beginner's Basic Plugin Guide.
Submitting Your Plug-in
Once your plug-in is bug-free, the ultimate step is to share your masterpiece with the world. This is where Winamp.com steps in. Submitting your plug-in will allow people all over the world to enjoy the fruits of your labor. To do this, just follow these steps:
- Go to http://www.winamp.com/user/submit
- Click the "Submit a plug-in" button.
- Fill in the blanks:
- Name: The name of your plug-in.
- Comment: The short blurb that comes up when people browse the plug-ins page.
- Description: The longer blurb that is displayed when people view the plug-in details page.
- Categories: Choose Primary and/or Secondary (optional) categories to properly sort your plug-in.
- Thumbnail: Click on the "Browse" button to find the .gif, .jpg, or .png file on your computer. Note: the image file dimensions should be no larger than 178px by 75px.
- Screenshot: (Full-sized screenshot of your plug-in.) Click on the "Browse" button to find the .gif, .jpg, or .png file on your computer. Note: the image file dimensions should be no larger than 275px by 600px.
- Plug-in File: Click on the "Browse" button to find your PiMP-ed .EXE file on your computer.
- Click the "Submit" Button, and...
- Voila! Your plug-in is on its way to being displayed before the world.
Please ensure that your Plugin meets the following terms before submitting it to www.winamp.com:
- Your Plugin is tested and won't blow away other's computers due to silly bugs. For getting your plugin tested, please post it in this forum first.
- You have packed the Plugin with an installer that auto-detects the Winamp installation directory (or where the plugin should go to in order to work). We recommend using NSIS. It is free and you can find an example installer script here.
- You havn't submitted the plugin already. If so, please use the 'edit' function for your plugin shown in your User Account Central.
Plug-in Category Descriptions
Please choose the categories thoughtfully. It will make finding your plug-in much easier if it is in the right categories.
AVS Presets: Any presets or APEs for Nullsoft's AVS plug-in. DSP/Effect: Manipulates audio data. Encoding: Plug-ins that encode media. Games: Any plug-in that takes input and rewards "good" behavior. General: Does not depend on audio data to run. Input: Reads new audio file type. Language Packs: Translates Winamp to a new language. Output: Converts to new type of audio file or sends audio through alternate path. Plug-in Skins: Plug-ins that change the look and feel of Winamp. Portable Devices: Plug-ins that interact with removable media. Visualizations: Visualization ... plug-ins.
- Visual Studio 6.0 or higher (Visual Studio 2003 is highly recommended.You can download a free copy of Visual Studio Express from Microsoft. Unfortunately it is a newer version and not full-featured and we cannot guarantee that the SDK examples will work properly with this edition.
- Nullsoft Scriptable Install System or other installer software for packaging your completed plug-in. Check this example for creating a NSIS Installer for your plugin.
- 7-Zip or other archiver for packaging your WSZ or WAL skin files.
The SDK includes everything you'll need to develop a Winamp plug-in. It also includes a basketful of example plug-ins to get you going. It is recommended that you create your plug-in as a subdirectory of the install path ("C:\Program Files\Winamp SDK" by default) as the #include paths of the examples assume this.