BASS.NET API for the Un4seen BASS Audio Library

BASS.NET API

BASS.NET API for the Un4seen BASS Audio Library

BASS.NET is a .Net wrapper for the BASS Audio Library and all it's Add-Ons - available @ www.un4seen.com. The Bass.Net.dll release version is installed in the specified 'install-directory' and will be registered to the .NET Framework as a standard component (if you left all the installation options checked). Note, that there are various Bass.Net assemblies available (side-by-side): one targeting the .Net v4.8 Full Framework and one targeting the .Net v6.0 Core Framework.
The native BASS libraries (e.g. bass.dll) are NOT included and need to be downloaded seperately - so make sure to download the BASS library and the needed add-on libraries and place them to your project executable directory (e.g. place the bass.dll to .\bin\Debug).

Namespaces

NamespaceDescription
radio42.Multimedia.Midi
This namespace contains all classes, delegates and enumerations to support native MIDI communication. This implementation wraps the WINMM.DLL Microsoft Multimedia API library, which is actually not part of BASS, but rather the Microsoft operating system. So it is not to be confused with the BassMidi add-on (which about real-time playback of MIDI notes and files)!

The main class Midi wraps most common MIDI API calls (like enumerating the MIDI devices and sending or receiving MIDI messages) and has been implemented as static methods. These methods might be used to implement your own native MIDI communication. So there is NO need to create an instance of the Midi class!

The other two main objects, which might be even more useful, are the MidiInputDevice and MidiOutputDevice which are real classes and make use of the Midi methods internally. With the MidiShortMessage and MidiSysExMessage classes you might create (encode, pack) or read (decode, unpack) any Midi data or system-exclusive message. Alltogether they handle effective communication with MIDI ports (like sending and reveiving any kind of message). Those classes need to be instantiated before their use.

For more information about MIDI see here: Musical Instrument Digital Interface (MIDI).

Un4seen.Bass
This namespace contains all classes, delegates and enumerations to support the native bass.dll. BASS is an audio library for use in Windows and Mac OSX software. Its purpose is to provide developers with powerful and efficient sample, stream (MP3, MP2, MP1, OGG, WAV, AIFF, custom generated, and more via add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3, OGG compressed MODs), and recording functions.

All BASS API calls are contained in the main class Bass and have been implemented as static methods. So there is NO need to create an instance of the Bass class!

All BASS structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASS would expect. Those classes needs to be instantiated before their use.

The Utils class contains general miscellaneous helper and converter methods which are BASS.NET API related and does not relate to any native BASS functionality and also does not need to be instantiated, hence all methods are static as well.

Un4seen.Bass.AddOn.Aac
This namespace contains all classes, delegates and enumerations to support the native bass_aac.dll. BASS_AAC is an extension based on the FAAD2 decoder, enabling the playback of AAC and MP4 encoded files and streams, including AAC+ Shoutcast streams.

All BASS_AAC API calls are contained in the main class BassAac and have been implemented as static methods. So there is NO need to create an instance of the BassAac class!

Un4seen.Bass.AddOn.Ac3
This namespace contains all classes, delegates and enumerations to support the native bass_ac3.dll. BASS_AC3 is an extension enabling the playback of AC3 encoded files, including internet and user file streams.

All BASS_AC3 API calls are contained in the main class BassAc3 and have been implemented as static methods. So there is NO need to create an instance of the BassAc3 class!

Un4seen.Bass.AddOn.Adx
This namespace contains all classes, delegates and enumerations to support the native bass_adx.dll. BASS_ADX is an extension to the BASS audio library, enabling the playback of ADX streams. ADX is a lossy proprietary audio storage and compression format developed by CRI Middleware specifically for use in video games, it is derived from ADPCM.

All BASS_ADX API calls are contained in the main class BassAdx and have been implemented as static methods. So there is NO need to create an instance of the BassAdx class!

More information can be found on wikipedia and here ADX product page.

Un4seen.Bass.AddOn.Alac
This namespace contains all classes, delegates and enumerations to support the native bass_alac.dll. BASS_ALAC is an extension enabling the playback of ALAC (Apple Lossless) encoded files.

All BASS_ALAC API calls are contained in the main class BassAlac and have been implemented as static methods. So there is NO need to create an instance of the BassAlac class!

Un4seen.Bass.AddOn.Ape
This namespace contains all classes, delegates and enumerations to support the native bass_ape.dll. BASS_APE is an extension enabling the playback of Monkey's Audio encoded files.

All BASS_APE API calls are contained in the main class BassApe and have been implemented as static methods. So there is NO need to create an instance of the BassApe class!

Un4seen.Bass.AddOn.Cd
This namespace contains all classes, delegates and enumerations to support the native basscd.dll. BASSCD is an extension enabling digital streaming and ripping of audio CDs. Also includes analog playback routines.

All BASSCD API calls are contained in the main class BassCd and have been implemented as static methods. So there is NO need to create an instance of the BassCd class!

All BASSCD structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSCD would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.Cdg
This namespace contains all classes, delegates and enumerations to support the native bass_cdg.dll. BASS_CDG is an extension to the BASS audio library, enabling the playback of CDG streams. CD+G (also known as CD+Graphics) is an extension of the compact disc standard that can present low-resolution graphics alongside the audio data on the disc when played on a compatible device. CD+G discs are often used for karaoke machines, which utilize this functionality to present on-screen lyrics for the song contained on the disc.

All BASS_CDG API calls are contained in the main class BassCdg and have been implemented as static methods. So there is NO need to create an instance of the BassCdg class!

More information about CD+G can be found on wikipedia.

Un4seen.Bass.AddOn.Dsd
 
Un4seen.Bass.AddOn.Enc
This namespace contains all classes, delegates and enumerations to support the native bassenc.dll. BASSENC is an extension that allows BASS channels to be encoded using any command-line encoder with STDIN support (LAME, OGGENC, etc), or any ACM codec. Also includes Shoutcast and Icecast sourcing features, and PCM or WAV file writing.

All BASSENC API calls are contained in the main class BassEnc and have been implemented as static methods. So there is NO need to create an instance of the BassEnc class!

All BASSENC structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSENC would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.EncAac
 
Un4seen.Bass.AddOn.EncFlac
 
Un4seen.Bass.AddOn.EncMp3
 
Un4seen.Bass.AddOn.EncOgg
 
Un4seen.Bass.AddOn.EncOpus
 
Un4seen.Bass.AddOn.Flac
This namespace contains all classes, delegates and enumerations to support the native bassflac.dll. BASSFLAC is an extension enabling the playback of FLAC (inc. Ogg FLAC) encoded files, including internet and user file streams.

All BASSFLAC API calls are contained in the main class BassFlac and have been implemented as static methods. So there is NO need to create an instance of the BassFlac class!

Un4seen.Bass.AddOn.Fx
This namespace contains all classes, delegates and enumerations to support the native bass_fx.dll. BASS_FX is an extension by Jobnik, providing several DSP functions, including tempo and pitch control.

All BASS_FX API calls are contained in the main class BassFx and have been implemented as static methods. So there is NO need to create an instance of the BassFx class!

All BASS_FX structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASS_FX would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.Hls
 
Un4seen.Bass.AddOn.Midi
This namespace contains all classes, delegates and enumerations to support the native bassmidi.dll. BASSMIDI is an extension enabling the playback of MIDI files and real-time events, using SF2 soundfonts to provide the sounds.

All BASSMIDI API calls are contained in the main class BassMidi and have been implemented as static methods. So there is NO need to create an instance of the BassMidi class!

All BASSMIDI structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSMIDI would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.Mix
This namespace contains all classes, delegates and enumerations to support the native bassmix.dll. BASSMIX is an extension providing the ability to mix together multiple BASS channels, with resampling and matrix mixing features.

All BASSMIX API calls are contained in the main class BassMix and have been implemented as static methods. So there is NO need to create an instance of the BassMix class!

All BASSMIX structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSMIX would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.Mpc
This namespace contains all classes, delegates and enumerations to support the native bass_mpc.dll. BASS_MPC is an extension enabling the playback of Musepack encoded files.

All BASS_MPC API calls are contained in the main class BassMpc and have been implemented as static methods. So there is NO need to create an instance of the BassMpc class!

Un4seen.Bass.AddOn.Ofr
This namespace contains all classes, delegates and enumerations to support the native bass_ofr.dll. BASS_OFR is an extension enabling the playback of OptimFROG encoded files.

All BASS_OFR API calls are contained in the main class BassOfr and have been implemented as static methods. So there is NO need to create an instance of the BassOfr class!

Un4seen.Bass.AddOn.Opus
 
Un4seen.Bass.AddOn.Sfx
This namespace contains all classes, delegates and enumerations to support the native bass_sfx.dll. Bass_SFX is an extention to the BASS audio library, providing a set of functions for rendering Sonique or Winamp visualization plugins on a provided device context (hDC).

All BASS_SFX API calls are contained in the main class BassSfx and have been implemented as static methods. So there is NO need to create an instance of the BassSfx class!

Un4seen.Bass.AddOn.Spx
This namespace contains all classes, delegates and enumerations to support the native bass_spx.dll. BASS_SPX is an extension enabling the playback of Speex encoded files, including internet and user file streams.

All BASS_SPX API calls are contained in the main class BassSpx and have been implemented as static methods. So there is NO need to create an instance of the BassSpx class!

Un4seen.Bass.AddOn.Tags
This namespace contains internal classes, enumerations and methods to give you better support for reading TAG information out of streams created with BASS. All defined classes are BASS.NET API specific and does not relate to any native BASS functionality. Just for your benefit.

The BassTags class allows you to extract specific TAG information from a stream or file. The extracted tag values are formatted into a general TAG_INFO class structure.

Supported tags are ID3v1, ID3v2, WMA, OGG, RIFF, BWF, MOD, MP4, MF and APE. Note, that the BassTags methods leverage the BASS plug-in system to support the various audio formats. So make sure to load these plug-ins as needed before using it.

Un4seen.Bass.AddOn.Tta
This namespace contains all classes, delegates and enumerations to support the native bass_tta.dll. BASS_TTA is an extension enabling the playback of TTA (True Audio Codec) encoded files.

All BASS_TTA API calls are contained in the main class BassTta and have been implemented as static methods. So there is NO need to create an instance of the BassTta class!

Un4seen.Bass.AddOn.Vst
This namespace contains all classes, delegates and enumerations to support the native bass_vst.dll. BASS_VST is an extension enabling the use of VST effect plugins with BASS.

All BASS_VST API calls are contained in the main class BassVst and have been implemented as static methods. So there is NO need to create an instance of the BassVst class!

All BASS_VST structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASS_VST would expect. Those classes needs to be instantiated before their use.

If you use BASS_VST in your projects, you should add the following disclaimer:

"BASS_VST by Bjoern Petersen for Silverjuke.net
VST PlugIn Technology by Steinberg Media Technologies GmbH"

(at least the second line!) to your project and you must not charge anything for this feature.

Moreover, if you use this - or any other - VST technology in your projects, you may need a (free) licenence for this from Steinberg.

BASS_VST is VST host compatible up to the new VST 2.4 implementation and (hopefully) implements all needed features - incl. the new double precision processing.

Un4seen.Bass.AddOn.WaDsp
This namespace contains all classes, delegates and enumerations to support the native bass_wadsp.dll. BASS_WADSP is an extension enabling the use of Winamp DSP plugins with BASS.

All BASS_WADSP API calls are contained in the main class BassWaDsp and have been implemented as static methods. So there is NO need to create an instance of the BassWaDsp class!

All BASS_WADSP structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASS_WADSP would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.WebM
 
Un4seen.Bass.AddOn.Winamp
This namespace contains all classes, delegates and enumerations to support the native bass_winamp.dll. BASS_WINAMP is an extension enabling the use of Winamp input plugins with BASS.

All BASS_WINAMP API calls are contained in the main class BassWinamp and have been implemented as static methods. So there is NO need to create an instance of the BassWinamp class!

Un4seen.Bass.AddOn.Wma
This namespace contains all classes, delegates and enumerations to support the native basswma.dll. BASSWMA is an extension enabling the playback of WMA files and streams (including user file streams), and also WMA file encoding and network broadcasting. Requires the Windows Media Format modules, which come installed with Windows Media Player, or can be installed separately (wmfdist.exe). DRM support is available for commercial users.

All BASSWMA API calls are contained in the main class BassWma and have been implemented as static methods. So there is NO need to create an instance of the BassWma class!

All BASSWMA structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSWMA would expect. Those classes needs to be instantiated before their use.

Un4seen.Bass.AddOn.Wv
This namespace contains all classes, delegates and enumerations to support the native bass_wv.dll. BASS_WV is an extension enabling the playback of WavPack encoded files.

All BASS_WV API calls are contained in the main class BassWv and have been implemented as static methods. So there is NO need to create an instance of the BassWv class!

Un4seen.Bass.Misc
This namespace provides miscellaneous classes for various purposes. E.g. rendering and drawing of wave form graphics or spectrul visuals, broadcasting and streaming support, a DSP and an Encoder framework, as well as a wave writer class. The classes defined are BASS.NET API specific and does not relate to any native BASS functionality. Just for your benefit.
Un4seen.BassAsio
This namespace contains all classes, delegates and enumerations to support the native bassasio.dll. BASSASIO makes it simple to use ASIO hardware, drivers, and can be used with or without BASS.

All BASSASIO API calls are contained in the main class BassAsio and have been implemented as static methods. So there is NO need to create an instance of the BassAsio class!

All BASSASIO structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSASIO would expect. Those classes needs to be instantiated before their use.

Beside using the native BassAsio methods you might also use the BassAsioHandler class which contains ready-made members for direct and more simple ASIO usage together with a BASS channel.

Un4seen.BassWasapi
This namespace contains all classes, delegates and enumerations to support the native basswasapi.dll. BASSWASAPI makes it simple to use the new Windows CoreAudio driver model as introduced with Vista/Windows7.

All BASSWASAPI API calls are contained in the main class BassWasapi and have been implemented as static methods. So there is NO need to create an instance of the BassWasapi class!

All BASSWASAPI structures have been implemented as real classes (named in capital letters). This because they are much easier to use and reflect exactly what BASSWASAPI would expect. Those classes needs to be instantiated before their use.

Beside using the native BassWasapi methods you might also use the BassWasapiHandler class which contains ready-made members for direct and more simple WASAPI usage together with a BASS channel.