Requires: bass_wadsp.dll - Winamp DSP plugin support Add-On - shipped with the BASS.NET API.
Un4seen.Bass.AddOn.WaDspBassWaDsp
Namespace: Un4seen.Bass.AddOn.WaDsp
Assembly: Bass.Net (in Bass.Net.dll) Version: 2.4.17.5
The BassWaDsp type exposes the following members.
Name | Description | |
---|---|---|
BASS_WADSP_ChannelRemoveDSP |
Removes a Winamp DSP from the Bass DSP chain which had been set up with BASS_WADSP_ChannelSetDSP(Int32, Int32, Int32) before.
| |
BASS_WADSP_ChannelSetDSP |
Assigns a loaded Winamp DSP to a standard BASS channel as a new DSP.
This method is pretty close to the BASS_ChannelSetDSP(Int32, DSPPROC, IntPtr, Int32) method (which is in fact internally used) but instead of setting up a user DSP method the Winamp DSP will be set up. | |
BASS_WADSP_Config |
Invokes the config dialog of a loaded and started Winamp DSP.
| |
BASS_WADSP_Free |
Frees all resources of BASS_WADSP - call this method at the end of your application.
| |
BASS_WADSP_FreeDSP |
Frees and unloads a Winamp DSP library from memory which has been loaded with BASS_WADSP_Load(String, Int32, Int32, Int32, Int32, WINAMPWINPROC) before.
| |
BASS_WADSP_GetFakeWinampWnd |
Gets the window handle of the fake Winamp window which has been created internally when a Winamp DSP was loaded with BASS_WADSP_Load(String, Int32, Int32, Int32, Int32, WINAMPWINPROC).
| |
BASS_WADSP_GetModule |
Returns the currently selected plugin module of a Winamp DSP.
| |
BASS_WADSP_GetModuleCount |
Returns the number of modules contained in the loaded Winamp DSP.
| |
BASS_WADSP_GetModuleName |
Returns the name of a certain module of a loaded Winamp DSP.
| |
BASS_WADSP_GetModuleNames |
Returns an array of strings containing all module names of a Winamp DSP.
| |
BASS_WADSP_GetName |
Returns the name of the loaded Winamp DSP plugin.
| |
BASS_WADSP_GetVersion |
Retrieves the version number of the BASS_WADSP.DLL that is loaded.
| |
BASS_WADSP_GetVersion(Int32) |
Retrieves the version of the BASS_WADSP.DLL that is loaded.
| |
BASS_WADSP_Init |
Initializes BASS_WADSP, call this right after you have called BASS_Init(Int32, Int32, BASSInit, IntPtr, IntPtr).
| |
BASS_WADSP_Load |
Loads a Winamp DSP library.
| |
BASS_WADSP_ModifySamplesDSP(Int32, Byte, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks).
| |
BASS_WADSP_ModifySamplesDSP(Int32, Int16, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks).
| |
BASS_WADSP_ModifySamplesDSP(Int32, Int32, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks).
| |
BASS_WADSP_ModifySamplesDSP(Int32, IntPtr, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks).
| |
BASS_WADSP_ModifySamplesDSP(Int32, Single, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks).
| |
BASS_WADSP_ModifySamplesSTREAM(Int32, Byte, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks or in a user defined STREAMPROC).
| |
BASS_WADSP_ModifySamplesSTREAM(Int32, Int16, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks or in a user defined STREAMPROC).
| |
BASS_WADSP_ModifySamplesSTREAM(Int32, Int32, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks or in a user defined STREAMPROC).
| |
BASS_WADSP_ModifySamplesSTREAM(Int32, IntPtr, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks or in a user defined STREAMPROC).
| |
BASS_WADSP_ModifySamplesSTREAM(Int32, Single, Int32) |
Invokes the internal 'ModifySamples' method of the Winamp DSP directly (which is only needed for user defined DSPPROC callbacks or in a user defined STREAMPROC).
| |
BASS_WADSP_PluginInfoFree |
Free the temporary plugin info resources.
| |
BASS_WADSP_PluginInfoGetModuleCount |
Returns the number of modules contained in the Winamp DSP which has been loaded into the temporary plugin info workspace.
| |
BASS_WADSP_PluginInfoGetModuleName |
Returns the name of a certain module of a Winamp DSP which has been loaded into the temporary plugin info workspace.
| |
BASS_WADSP_PluginInfoGetModuleNames |
Returns an array of strings containing all module names of a Winamp DSP which has been loaded into the temporary plugin info workspace.
| |
BASS_WADSP_PluginInfoGetName |
Returns the name of the Winamp DSP plugin which has been loaded into the temporary plugin info workspace.
| |
BASS_WADSP_PluginInfoLoad |
Loads a Winamp DSP library into the temporary plugin info workspace.
| |
BASS_WADSP_SetChannel |
Assigns a channel to a Winamp DSP.
You only need this method, if you do NOT use the default BASS_WADSP_ChannelSetDSP(Int32, Int32, Int32) method, but use your own DSP callback (see DSPPROC). | |
BASS_WADSP_SetFileName |
Set the file name for a loaded Winamp DSP plugin.
| |
BASS_WADSP_SetSongTitle |
Set the song title for a loaded Winamp DSP plugin.
| |
BASS_WADSP_Start |
Starts a Winamp DSP.
| |
BASS_WADSP_Stop |
Stops a Winamp DSP.
| |
FreeMe |
Unloads this library. This must be called when you have previously called LoadMe.
| |
LoadMe |
Loads this library into memory. The library will be search in the current application directory.
| |
LoadMe(String) |
Loads this library into memory. The library will be loaded from the given path.
|
Name | Description | |
---|---|---|
BASSWADSPVERSION |
Current BASS_WADSP version (without minor revision).
|
BassWaDsp is an BASS.NET API extention to the BASS audio library, providing a set of functions for calling Winamp DSP plugins.
All Winamp DSPs are supported out of the box which do return as much data as provided - meaning not modifying the samplerate, tempo, pitch etc.!
If you want to use Winamp plugins which do not return the same amount of bytes as provided, you need to add a lot functionality by yourself, e.g. implementing an intermediate ring-buffer between BASS and BASS_WADSP and/or sending ModifiedSamples only in a fixed packet size of 1152 samples etc. This might be a lot of work, but is actually possible. However, there is no guarantee, that all Winmap DSPs might really work - just try them out.
Here is a list of Winamp DSP plugins, which should work fine:
- OctiMax (dsp_omxw.dll) - Enhancer (dsp_enh.dll) - RockSteady (DSP_RockSteady.dll) - Nullsoft Signal Processing Studio (dsp_sps.dll) - SHOUTcast Source DSP (dsp_sc.dll - needs lamedll.dll in your startup directory) - SAM Encoders (dsp_encoders.dll) - Sound Solution (dsp_ss.dll - needs the ssN.dat files in your startup directory) - VST PlugIn Wrapper (dsp_vst.dll) - EQ by Nevi (dsp_eqfir.dll) - DFX Audio Enhander (dsp_dfx.dll)
These plugins for example will only work, if you implement an intermediate ring-buffer between BASS and BASS_WADSP by yourself:
- Reverb3 (dsp_reverb3.dll - working with fixed Packets of 1152 samples only) - TomSteady (dsp_tom.dll - working with fixed Packets of 1152 samples only) - PaceMaker (dsp_pacemaker.dll)
Any window that remains in foreground should optimally pass unusedkeystrokes to the parent (winamp's) window, so that the user can still control it. As for storing configuration, configuration data should be stored in [startup path]\plugin.ini.
To use the BASS_WADSP add-on you need to perform the following steps:
1. | Call BASS_WADSP_Init(IntPtr) at the beginning of your application after you have initialized Bass with BASS_Init(Int32, Int32, BASSInit, IntPtr, IntPtr). |
2. | Call BASS_WADSP_Load(String, Int32, Int32, Int32, Int32, WINAMPWINPROC) - to load a Winamp DSP plugin. |
3. | Call BASS_WADSP_Start(Int32, Int32, Int32) - to start the loaded Winamp DSP plugin. |
4. | Create a Bass stream...e.g. with BASS_StreamCreateFile(String, Int64, Int64, BASSFlag). |
5. | Call BASS_WADSP_ChannelSetDSP(Int32, Int32, Int32) - to set the Winamp DSP to the created stream. This assigns a normal Bass DSP (like you would do with BASS_ChannelSetDSP(Int32, DSPPROC, IntPtr, Int32)) but now uses the Winamp DSP internally.
You might even assign multiple Winamp DSPs to the same stream. In this case the DSPs are just executed in the order to their priority - like in Bass. |
6. | Play the channel like normal...and at the end call BASS_WADSP_ChannelRemoveDSP(Int32) (if BASS_STREAM_AUTOFREE was specified at stream creation or if you call BASS_StreamFree(Int32) this will be done automatically and removing the DSP(s) is not even needed). |
7. | You might repeat with 4. |
8. | When a Winamp DSP is not needed anymore, call BASS_WADSP_Stop(Int32) - to stop the Winamp DSP plugin and call BASS_WADSP_Start(Int32, Int32, Int32) to start it again.
If you don't want the DSP anymore at all, you might also need to call BASS_WADSP_ChannelRemoveDSP(Int32) in addition, if you have assigned multiple DSPs to the stream in parallel. |
9. | Call BASS_WADSP_FreeDSP(Int32) - to unload a Winamp DSP plugin and free all resources (this also stops the DSP and removes it out of memory). |
10. | At the end of your application make sure to call BASS_WADSP_Free - to free all resources. |