📄 bass.pas
字号:
{
BASS 2.3 Audio Library, (c) 1999-2006 Ian Luck.
Please report bugs/suggestions/etc... to bass@un4seen.com
See the BASS.CHM file for more complete documentation
Modified by Erik van Bilsen to support dynamic loading.
How to install
----------------
Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir
}
unit Bass;
interface
uses
Windows;
const
BASSVERSION = $203; // API version
// Use these to test for error from functions that return a DWORD or QWORD
DW_ERROR = Cardinal(-1); // -1 (DWORD)
QW_ERROR = Int64(-1); // -1 (QWORD)
// Error codes returned by BASS_GetErrorCode()
BASS_OK = 0; // all is OK
BASS_ERROR_MEM = 1; // memory error
BASS_ERROR_FILEOPEN = 2; // can't open the file
BASS_ERROR_DRIVER = 3; // can't find a free sound driver
BASS_ERROR_BUFLOST = 4; // the sample buffer was lost - please report this!
BASS_ERROR_HANDLE = 5; // invalid handle
BASS_ERROR_FORMAT = 6; // unsupported sample format
BASS_ERROR_POSITION = 7; // invalid playback position
BASS_ERROR_INIT = 8; // BASS_Init has not been successfully called
BASS_ERROR_START = 9; // BASS_Start has not been successfully called
BASS_ERROR_ALREADY = 14; // already initialized/paused/whatever
BASS_ERROR_NOPAUSE = 16; // not paused
BASS_ERROR_NOCHAN = 18; // can't get a free channel
BASS_ERROR_ILLTYPE = 19; // an illegal type was specified
BASS_ERROR_ILLPARAM = 20; // an illegal parameter was specified
BASS_ERROR_NO3D = 21; // no 3D support
BASS_ERROR_NOEAX = 22; // no EAX support
BASS_ERROR_DEVICE = 23; // illegal device number
BASS_ERROR_NOPLAY = 24; // not playing
BASS_ERROR_FREQ = 25; // illegal sample rate
BASS_ERROR_NOTFILE = 27; // the stream is not a file stream
BASS_ERROR_NOHW = 29; // no hardware voices available
BASS_ERROR_EMPTY = 31; // the MOD music has no sequence data
BASS_ERROR_NONET = 32; // no internet connection could be opened
BASS_ERROR_CREATE = 33; // couldn't create the file
BASS_ERROR_NOFX = 34; // effects are not enabled
BASS_ERROR_PLAYING = 35; // the channel is playing
BASS_ERROR_NOTAVAIL = 37; // requested data is not available
BASS_ERROR_DECODE = 38; // the channel is a "decoding channel"
BASS_ERROR_DX = 39; // a sufficient DirectX version is not installed
BASS_ERROR_TIMEOUT = 40; // connection timedout
BASS_ERROR_FILEFORM = 41; // unsupported file format
BASS_ERROR_SPEAKER = 42; // unavailable speaker
BASS_ERROR_VERSION = 43; // invalid BASS version (used by add-ons)
BASS_ERROR_CODEC = 44; // codec is not available/supported
BASS_ERROR_UNKNOWN = -1; // some other mystery error
// Initialization flags
BASS_DEVICE_8BITS = 1; // use 8 bit resolution, else 16 bit
BASS_DEVICE_MONO = 2; // use mono, else stereo
BASS_DEVICE_3D = 4; // enable 3D functionality
{
If the BASS_DEVICE_3D flag is not specified when
initilizing BASS, then the 3D flags (BASS_SAMPLE_3D
and BASS_MUSIC_3D) are ignored when loading/creating
a sample/stream/music.
}
BASS_DEVICE_LATENCY = 256; // calculate device latency (BASS_INFO struct)
BASS_DEVICE_SPEAKERS = 2048; // force enabling of speaker assignment
BASS_DEVICE_NOSPEAKER = 4096; // ignore speaker arrangement
// DirectSound interfaces (for use with BASS_GetDSoundObject)
BASS_OBJECT_DS = 1; // IDirectSound
BASS_OBJECT_DS3DL = 2; // IDirectSound3DListener
// BASS_INFO flags (from DSOUND.H)
DSCAPS_CONTINUOUSRATE = $00000010;
{ supports all sample rates between min/maxrate }
DSCAPS_EMULDRIVER = $00000020;
{ device does NOT have hardware DirectSound support }
DSCAPS_CERTIFIED = $00000040;
{ device driver has been certified by Microsoft }
{
The following flags tell what type of samples are
supported by HARDWARE mixing, all these formats are
supported by SOFTWARE mixing
}
DSCAPS_SECONDARYMONO = $00000100; // mono
DSCAPS_SECONDARYSTEREO = $00000200; // stereo
DSCAPS_SECONDARY8BIT = $00000400; // 8 bit
DSCAPS_SECONDARY16BIT = $00000800; // 16 bit
// BASS_RECORDINFO flags (from DSOUND.H)
DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER;
{ device does NOT have hardware DirectSound recording support }
DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED;
{ device driver has been certified by Microsoft }
// defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)
WAVE_FORMAT_1M08 = $00000001; // 11.025 kHz, Mono, 8-bit
WAVE_FORMAT_1S08 = $00000002; // 11.025 kHz, Stereo, 8-bit
WAVE_FORMAT_1M16 = $00000004; // 11.025 kHz, Mono, 16-bit
WAVE_FORMAT_1S16 = $00000008; // 11.025 kHz, Stereo, 16-bit
WAVE_FORMAT_2M08 = $00000010; // 22.05 kHz, Mono, 8-bit
WAVE_FORMAT_2S08 = $00000020; // 22.05 kHz, Stereo, 8-bit
WAVE_FORMAT_2M16 = $00000040; // 22.05 kHz, Mono, 16-bit
WAVE_FORMAT_2S16 = $00000080; // 22.05 kHz, Stereo, 16-bit
WAVE_FORMAT_4M08 = $00000100; // 44.1 kHz, Mono, 8-bit
WAVE_FORMAT_4S08 = $00000200; // 44.1 kHz, Stereo, 8-bit
WAVE_FORMAT_4M16 = $00000400; // 44.1 kHz, Mono, 16-bit
WAVE_FORMAT_4S16 = $00000800; // 44.1 kHz, Stereo, 16-bit
// Sample info flags
BASS_SAMPLE_8BITS = 1; // 8 bit
BASS_SAMPLE_FLOAT = 256; // 32-bit floating-point
BASS_SAMPLE_MONO = 2; // mono, else stereo
BASS_SAMPLE_LOOP = 4; // looped
BASS_SAMPLE_3D = 8; // 3D functionality enabled
BASS_SAMPLE_SOFTWARE = 16; // it's NOT using hardware mixing
BASS_SAMPLE_MUTEMAX = 32; // muted at max distance (3D only)
BASS_SAMPLE_VAM = 64; // uses the DX7 voice allocation & management
BASS_SAMPLE_FX = 128; // old implementation of DX8 effects are enabled
BASS_SAMPLE_OVER_VOL = $10000; // override lowest volume
BASS_SAMPLE_OVER_POS = $20000; // override longest playing
BASS_SAMPLE_OVER_DIST = $30000; // override furthest from listener (3D only)
BASS_STREAM_PRESCAN = $20000; // enable pin-point seeking (MP3/MP2/MP1)
BASS_MP3_SETPOS = BASS_STREAM_PRESCAN;
BASS_STREAM_AUTOFREE = $40000; // automatically free the stream when it stop/ends
BASS_STREAM_RESTRATE = $80000; // restrict the download rate of internet file streams
BASS_STREAM_BLOCK = $100000;// download/play internet file stream in small blocks
BASS_STREAM_DECODE = $200000;// don't play the stream, only decode (BASS_ChannelGetData)
BASS_STREAM_STATUS = $800000;// give server status info (HTTP/ICY tags) in DOWNLOADPROC
BASS_MUSIC_FLOAT = BASS_SAMPLE_FLOAT; // 32-bit floating-point
BASS_MUSIC_MONO = BASS_SAMPLE_MONO; // force mono mixing (less CPU usage)
BASS_MUSIC_LOOP = BASS_SAMPLE_LOOP; // loop music
BASS_MUSIC_3D = BASS_SAMPLE_3D; // enable 3D functionality
BASS_MUSIC_FX = BASS_SAMPLE_FX; // enable old implementation of DX8 effects
BASS_MUSIC_AUTOFREE = BASS_STREAM_AUTOFREE; // automatically free the music when it stop/ends
BASS_MUSIC_DECODE = BASS_STREAM_DECODE; // don't play the music, only decode (BASS_ChannelGetData)
BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN; // calculate playback length
BASS_MUSIC_CALCLEN = BASS_MUSIC_PRESCAN;
BASS_MUSIC_RAMP = $200; // normal ramping
BASS_MUSIC_RAMPS = $400; // sensitive ramping
BASS_MUSIC_SURROUND = $800; // surround sound
BASS_MUSIC_SURROUND2 = $1000; // surround sound (mode 2)
BASS_MUSIC_FT2MOD = $2000; // play .MOD as FastTracker 2 does
BASS_MUSIC_PT1MOD = $4000; // play .MOD as ProTracker 1 does
BASS_MUSIC_NONINTER = $10000; // non-interpolated mixing
BASS_MUSIC_POSRESET = $8000; // stop all notes when moving position
BASS_MUSIC_POSRESETEX = $400000; // stop all notes and reset bmp/etc when moving position
BASS_MUSIC_STOPBACK = $80000; // stop the music on a backwards jump effect
BASS_MUSIC_NOSAMPLE = $100000; // don't load the samples
// Speaker assignment flags
BASS_SPEAKER_FRONT = $1000000; // front speakers
BASS_SPEAKER_REAR = $2000000; // rear/side speakers
BASS_SPEAKER_CENLFE = $3000000; // center & LFE speakers (5.1)
BASS_SPEAKER_REAR2 = $4000000; // rear center speakers (7.1)
BASS_SPEAKER_LEFT = $10000000; // modifier: left
BASS_SPEAKER_RIGHT = $20000000; // modifier: right
BASS_SPEAKER_FRONTLEFT = BASS_SPEAKER_FRONT or BASS_SPEAKER_LEFT;
BASS_SPEAKER_FRONTRIGHT = BASS_SPEAKER_FRONT or BASS_SPEAKER_RIGHT;
BASS_SPEAKER_REARLEFT = BASS_SPEAKER_REAR or BASS_SPEAKER_LEFT;
BASS_SPEAKER_REARRIGHT = BASS_SPEAKER_REAR or BASS_SPEAKER_RIGHT;
BASS_SPEAKER_CENTER = BASS_SPEAKER_CENLFE or BASS_SPEAKER_LEFT;
BASS_SPEAKER_LFE = BASS_SPEAKER_CENLFE or BASS_SPEAKER_RIGHT;
BASS_SPEAKER_REAR2LEFT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_LEFT;
BASS_SPEAKER_REAR2RIGHT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_RIGHT;
BASS_UNICODE = $80000000;
BASS_RECORD_PAUSE = $8000; // start recording paused
// DX7 voice allocation flags
BASS_VAM_HARDWARE = 1;
{
Play the sample in hardware. If no hardware voices are available then
the "play" call will fail
}
BASS_VAM_SOFTWARE = 2;
{
Play the sample in software (ie. non-accelerated). No other VAM flags
may be used together with this flag.
}
// DX7 voice management flags
{
These flags enable hardware resource stealing... if the hardware has no
available voices, a currently playing buffer will be stopped to make room
for the new buffer. NOTE: only samples loaded/created with the
BASS_SAMPLE_VAM flag are considered for termination by the DX7 voice
management.
}
BASS_VAM_TERM_TIME = 4;
{
If there are no free hardware voices, the buffer to be terminated will be
the one with the least time left to play.
}
BASS_VAM_TERM_DIST = 8;
{
If there are no free hardware voices, the buffer to be terminated will be
one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is
beyond
it's max distance. If there are no buffers that match this criteria, then
the "play" call will fail.
}
BASS_VAM_TERM_PRIO = 16;
{
If there are no free hardware voices, the buffer to be terminated will be
the one with the lowest priority.
}
// BASS_CHANNELINFO types
BASS_CTYPE_SAMPLE = 1;
BASS_CTYPE_RECORD = 2;
BASS_CTYPE_STREAM = $10000;
BASS_CTYPE_STREAM_OGG = $10002;
BASS_CTYPE_STREAM_MP1 = $10003;
BASS_CTYPE_STREAM_MP2 = $10004;
BASS_CTYPE_STREAM_MP3 = $10005;
BASS_CTYPE_STREAM_AIFF = $10006;
BASS_CTYPE_STREAM_WAV = $40000; // WAVE flag, LOWORD=codec
BASS_CTYPE_STREAM_WAV_PCM = $50001;
BASS_CTYPE_STREAM_WAV_FLOAT = $50003;
BASS_CTYPE_MUSIC_MOD = $20000;
BASS_CTYPE_MUSIC_MTM = $20001;
BASS_CTYPE_MUSIC_S3M = $20002;
BASS_CTYPE_MUSIC_XM = $20003;
BASS_CTYPE_MUSIC_IT = $20004;
BASS_CTYPE_MUSIC_MO3 = $00100; // MO3 flag
// 3D channel modes
BASS_3DMODE_NORMAL = 0;
{ normal 3D processing }
BASS_3DMODE_RELATIVE = 1;
{
The channel's 3D position (position/velocity/
orientation) are relative to the listener. When the
listener's position/velocity/orientation is changed
with BASS_Set3DPosition, the channel's position
relative to the listener does not change.
}
BASS_3DMODE_OFF = 2;
{
Turn off 3D processing on the channel, the sound will
be played in the center.
}
// EAX environments, use with BASS_SetEAXParameters
EAX_ENVIRONMENT_GENERIC = 0;
EAX_ENVIRONMENT_PADDEDCELL = 1;
EAX_ENVIRONMENT_ROOM = 2;
EAX_ENVIRONMENT_BATHROOM = 3;
EAX_ENVIRONMENT_LIVINGROOM = 4;
EAX_ENVIRONMENT_STONEROOM = 5;
EAX_ENVIRONMENT_AUDITORIUM = 6;
EAX_ENVIRONMENT_CONCERTHALL = 7;
EAX_ENVIRONMENT_CAVE = 8;
EAX_ENVIRONMENT_ARENA = 9;
EAX_ENVIRONMENT_HANGAR = 10;
EAX_ENVIRONMENT_CARPETEDHALLWAY = 11;
EAX_ENVIRONMENT_HALLWAY = 12;
EAX_ENVIRONMENT_STONECORRIDOR = 13;
EAX_ENVIRONMENT_ALLEY = 14;
EAX_ENVIRONMENT_FOREST = 15;
EAX_ENVIRONMENT_CITY = 16;
EAX_ENVIRONMENT_MOUNTAINS = 17;
EAX_ENVIRONMENT_QUARRY = 18;
EAX_ENVIRONMENT_PLAIN = 19;
EAX_ENVIRONMENT_PARKINGLOT = 20;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -