📄 bass.pas
字号:
BASS_SYNC_SLIDE = 5;
BASS_SYNC_STALL = 6;
BASS_SYNC_DOWNLOAD = 7;
BASS_SYNC_FREE = 8;
BASS_SYNC_SETPOS = 11;
BASS_SYNC_MUSICPOS = 10;
BASS_SYNC_MUSICINST = 1;
BASS_SYNC_MUSICFX = 3;
BASS_SYNC_OGG_CHANGE = 12;
BASS_SYNC_MIXTIME = $40000000; // FLAG: sync at mixtime, else at playtime
BASS_SYNC_ONETIME = $80000000; // FLAG: sync only once, else continuously
// BASS_ChannelIsActive return values
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
// Channel attributes
BASS_ATTRIB_FREQ = 1;
BASS_ATTRIB_VOL = 2;
BASS_ATTRIB_PAN = 3;
BASS_ATTRIB_EAXMIX = 4;
BASS_ATTRIB_MUSIC_AMPLIFY = $100;
BASS_ATTRIB_MUSIC_PANSEP = $101;
BASS_ATTRIB_MUSIC_PSCALER = $102;
BASS_ATTRIB_MUSIC_BPM = $103;
BASS_ATTRIB_MUSIC_SPEED = $104;
BASS_ATTRIB_MUSIC_VOL_GLOBAL = $105;
BASS_ATTRIB_MUSIC_VOL_CHAN = $200; // + channel #
BASS_ATTRIB_MUSIC_VOL_INST = $300; // + instrument #
// BASS_ChannelGetData flags
BASS_DATA_AVAILABLE = 0; // query how much data is buffered
BASS_DATA_FLOAT = $40000000; // flag: return floating-point sample data
BASS_DATA_FFT256 = $80000000; // 256 sample FFT
BASS_DATA_FFT512 = $80000001; // 512 FFT
BASS_DATA_FFT1024 = $80000002; // 1024 FFT
BASS_DATA_FFT2048 = $80000003; // 2048 FFT
BASS_DATA_FFT4096 = $80000004; // 4096 FFT
BASS_DATA_FFT8192 = $80000005; // 8192 FFT
BASS_DATA_FFT_INDIVIDUAL = $10; // FFT flag: FFT for each channel, else all combined
BASS_DATA_FFT_NOWINDOW = $20; // FFT flag: no Hanning window
// BASS_ChannelGetTags types : what's returned
BASS_TAG_ID3 = 0; // ID3v1 tags : TAG_ID3 structure
BASS_TAG_ID3V2 = 1; // ID3v2 tags : variable length block
BASS_TAG_OGG = 2; // OGG comments : series of null-terminated UTF-8 strings
BASS_TAG_HTTP = 3; // HTTP headers : series of null-terminated ANSI strings
BASS_TAG_ICY = 4; // ICY headers : series of null-terminated ANSI strings
BASS_TAG_META = 5; // ICY metadata : ANSI string
BASS_TAG_VENDOR = 9; // OGG encoder : UTF-8 string
BASS_TAG_LYRICS3 = 10; // Lyric3v2 tag : ASCII string
BASS_TAG_RIFF_INFO = $100; // RIFF "INFO" tags : series of null-terminated ANSI strings
BASS_TAG_RIFF_BEXT = $101; // RIFF/BWF Broadcast Audio Extension tags : TAG_BEXT structure
BASS_TAG_MUSIC_NAME = $10000; // MOD music name : ANSI string
BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string
BASS_TAG_MUSIC_INST = $10100; // + instrument #, MOD instrument name : ANSI string
BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string
// BASS_ChannelGetLength/GetPosition/SetPosition modes
BASS_POS_BYTE = 0; // byte position
BASS_POS_MUSIC_ORDER = 1; // order.row position, MAKELONG(order,row)
// BASS_RecordSetInput flags
BASS_INPUT_OFF = $10000;
BASS_INPUT_ON = $20000;
BASS_INPUT_TYPE_MASK = $FF000000;
BASS_INPUT_TYPE_UNDEF = $00000000;
BASS_INPUT_TYPE_DIGITAL = $01000000;
BASS_INPUT_TYPE_LINE = $02000000;
BASS_INPUT_TYPE_MIC = $03000000;
BASS_INPUT_TYPE_SYNTH = $04000000;
BASS_INPUT_TYPE_CD = $05000000;
BASS_INPUT_TYPE_PHONE = $06000000;
BASS_INPUT_TYPE_SPEAKER = $07000000;
BASS_INPUT_TYPE_WAVE = $08000000;
BASS_INPUT_TYPE_AUX = $09000000;
BASS_INPUT_TYPE_ANALOG = $0A000000;
BASS_FX_DX8_CHORUS = 0;
BASS_FX_DX8_COMPRESSOR = 1;
BASS_FX_DX8_DISTORTION = 2;
BASS_FX_DX8_ECHO = 3;
BASS_FX_DX8_FLANGER = 4;
BASS_FX_DX8_GARGLE = 5;
BASS_FX_DX8_I3DL2REVERB = 6;
BASS_FX_DX8_PARAMEQ = 7;
BASS_FX_DX8_REVERB = 8;
BASS_DX8_PHASE_NEG_180 = 0;
BASS_DX8_PHASE_NEG_90 = 1;
BASS_DX8_PHASE_ZERO = 2;
BASS_DX8_PHASE_90 = 3;
BASS_DX8_PHASE_180 = 4;
type
DWORD = cardinal;
BOOL = LongBool;
FLOAT = Single;
QWORD = int64; // 64-bit (replace "int64" with "comp" if using Delphi 3)
HMUSIC = DWORD; // MOD music handle
HSAMPLE = DWORD; // sample handle
HCHANNEL = DWORD; // playing sample's channel handle
HSTREAM = DWORD; // sample stream handle
HRECORD = DWORD; // recording handle
HSYNC = DWORD; // synchronizer handle
HDSP = DWORD; // DSP handle
HFX = DWORD; // DX8 effect handle
HPLUGIN = DWORD; // Plugin handle
// Device info structure
BASS_DEVICEINFO = record
name: PAnsiChar; // description
driver: PAnsiChar; // driver
flags: DWORD;
end;
BASS_INFO = record
flags: DWORD; // device capabilities (DSCAPS_xxx flags)
hwsize: DWORD; // size of total device hardware memory
hwfree: DWORD; // size of free device hardware memory
freesam: DWORD; // number of free sample slots in the hardware
free3d: DWORD; // number of free 3D sample slots in the hardware
minrate: DWORD; // min sample rate supported by the hardware
maxrate: DWORD; // max sample rate supported by the hardware
eax: BOOL; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used)
minbuf: DWORD; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
dsver: DWORD; // DirectSound version
latency: DWORD; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
initflags: DWORD; // BASS_Init "flags" parameter
speakers: DWORD; // number of speakers available
freq: DWORD; // current output rate (OSX only)
end;
// Recording device info structure
BASS_RECORDINFO = record
flags: DWORD; // device capabilities (DSCCAPS_xxx flags)
formats: DWORD; // supported standard formats (WAVE_FORMAT_xxx flags)
inputs: DWORD; // number of inputs
singlein: BOOL; // only 1 input can be set at a time
freq: DWORD; // current input rate (OSX only)
end;
// Sample info structure
BASS_SAMPLE = record
freq: DWORD; // default playback rate
volume: FLOAT; // default volume (0-100)
pan: FLOAT; // default pan (-100=left, 0=middle, 100=right)
flags: DWORD; // BASS_SAMPLE_xxx flags
length: DWORD; // length (in samples, not bytes)
max: DWORD; // maximum simultaneous playbacks
origres: DWORD; // original resolution
chans: DWORD; // number of channels
mingap: DWORD; // minimum gap (ms) between creating channels
mode3d: DWORD; // BASS_3DMODE_xxx mode
mindist: FLOAT; // minimum distance
maxdist: FLOAT; // maximum distance
iangle: DWORD; // angle of inside projection cone
oangle: DWORD; // angle of outside projection cone
outvol: FLOAT; // delta-volume outside the projection cone
vam: DWORD; // voice allocation/management flags (BASS_VAM_xxx)
priority: DWORD; // priority (0=lowest, $ffffffff=highest)
end;
// Channel info structure
BASS_CHANNELINFO = record
freq: DWORD; // default playback rate
chans: DWORD; // channels
flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
ctype: DWORD; // type of channel
origres: DWORD; // original resolution
plugin: HPLUGIN; // plugin
sample: HSAMPLE; // sample
filename: PAnsiChar; // filename
end;
BASS_PLUGINFORM = record
ctype: DWORD; // channel type
name: PAnsiChar; // format description
exts: PAnsiChar; // file extension filter (*.ext1;*.ext2;etc...)
end;
PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS;
TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM;
BASS_PLUGININFO = record
version: DWORD; // version (same form as BASS_GetVersion)
formatc: DWORD; // number of formats
formats: PBASS_PLUGINFORMS; // the array of formats
end;
PBASS_PLUGININFO = ^BASS_PLUGININFO;
// 3D vector (for 3D positions/velocities/orientations)
BASS_3DVECTOR = record
x: FLOAT; // +=right, -=left
y: FLOAT; // +=up, -=down
z: FLOAT; // +=front, -=behind
end;
// User file stream callback functions
FILECLOSEPROC = procedure(user: Pointer); stdcall;
FILELENPROC = function(user: Pointer): QWORD; stdcall;
FILEREADPROC = function(buffer: Pointer; length: DWORD; user: Pointer): DWORD; stdcall;
FILESEEKPROC = function(offset: QWORD; user: Pointer): BOOL; stdcall;
BASS_FILEPROCS = record
close: FILECLOSEPROC;
length: FILELENPROC;
read: FILEREADPROC;
seek: FILESEEKPROC;
end;
// ID3v1 tag structure
TAG_ID3 = record
id: Array[0..2] of AnsiChar;
title: Array[0..29] of AnsiChar;
artist: Array[0..29] of AnsiChar;
album: Array[0..29] of AnsiChar;
year: Array[0..3] of AnsiChar;
comment: Array[0..29] of AnsiChar;
genre: Byte;
end;
// BWF Broadcast Audio Extension tag structure
TAG_BEXT = record
Description: Array[0..255] of AnsiChar; // description
Originator: Array[0..31] of AnsiChar; // name of the originator
OriginatorReference: Array[0..31] of AnsiChar; // reference of the originator
OriginationDate: Array[0..9] of AnsiChar; // date of creation (yyyy-mm-dd)
OriginationTime: Array[0..7] of AnsiChar; // time of creation (hh-mm-ss)
TimeReference: QWORD; // first sample count since midnight (little-endian)
Version: Word; // BWF version (little-endian)
UMID: Array[0..63] of Byte; // SMPTE UMID
Reserved: Array[0..189] of Byte;
CodingHistory: Array of AnsiChar; // history
end;
BASS_DX8_CHORUS = record
fWetDryMix: FLOAT;
fDepth: FLOAT;
fFeedback: FLOAT;
fFrequency: FLOAT;
lWaveform: DWORD; // 0=triangle, 1=sine
fDelay: FLOAT;
lPhase: DWORD; // BASS_DX8_PHASE_xxx
end;
BASS_DX8_COMPRESSOR = record
fGain: FLOAT;
fAttack: FLOAT;
fRelease: FLOAT;
fThreshold: FLOAT;
fRatio: FLOAT;
fPredelay: FLOAT;
end;
BASS_DX8_DISTORTION = record
fGain: FLOAT;
fEdge: FLOAT;
fPostEQCenterFrequency: FLOAT;
fPostEQBandwidth: FLOAT;
fPreLowpassCutoff: FLOAT;
end;
BASS_DX8_ECHO = record
fWetDryMix: FLOAT;
fFeedback: FLOAT;
fLeftDelay: FLOAT;
fRightDelay: FLOAT;
lPanDelay: BOOL;
end;
BASS_DX8_FLANGER = record
fWetDryMix: FLOAT;
fDepth: FLOAT;
fFeedback: FLOAT;
fFrequency: FLOAT;
lWaveform: DWORD; // 0=triangle, 1=sine
fDelay: FLOAT;
lPhase: DWORD; // BASS_DX8_PHASE_xxx
end;
BASS_DX8_GARGLE = record
dwRateHz: DWORD; // Rate of modulation in hz
dwWaveShape: DWORD; // 0=triangle, 1=square
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -