📄 unabassapi.pas
字号:
type
{$EXTERNALSYM DWORD }
DWORD = cardinal;
{xx $EXTERNALSYM BOOL }
//BOOL = LongBool;
{$EXTERNALSYM FLOAT }
FLOAT = Single;
QWORD = int64;
HMUSIC = DWORD; // MOD music handle
HSAMPLE = DWORD; // sample handle
HCHANNEL = DWORD; // playing sample's channel handle
HSTREAM = DWORD; // sample stream handle
// v2.0
HRECORD = DWORD; // recording handle
HSYNC = DWORD; // synchronizer handle
HDSP = DWORD; // DSP handle
HFX = DWORD; // DX8 effect handle
HPLUGIN = DWORD; // Plugin handle
BASS_INFO = record
{$IFDEF BASS_AFTER_21 }
// fucked in 2.2
size: DWORD; // size of this struct (set this before calling the function)
{$ENDIF }
flags: DWORD; // device capabilities (DSCAPS_xxx flags)
{
The following values are irrelevant if the device
doesn't have hardware support
(DSCAPS_EMULDRIVER is specified in 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 (use to check for DX5/7 functions)
latency: DWORD; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
{$IFDEF BASS_AFTER_18 }
initflags: DWORD; // "flags" parameter of BASS_Init call
speakers: DWORD; // number of speakers available
driver: PChar; // driver
{$ENDIF }
{$IFDEF BASS_AFTER_22 }
// v2.3
freq: DWORD; // current output rate (OSX only)
{$ENDIF }
end;
BASS_RECORDINFO = record
{$IFDEF BASS_AFTER_21 }
// fucked in 2.2
size: DWORD; // size of this struct (set this before calling the function)
{$ENDIF }
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
{$IFDEF BASS_AFTER_18 }
driver: PChar; // driver
{$ENDIF }
{$IFDEF BASS_AFTER_22 }
// v2.3
freq: DWORD; // current output rate (OSX only)
{$ENDIF }
end;
// v2.0
BASS_CHANNELINFO = record
freq: DWORD; // default playback rate
chans: DWORD; // channels
flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
ctype: DWORD; // type of channel
{$IFDEF BASS_AFTER_20 }
// v2.1
origres: DWORD; // original resolution
{$ENDIF }
{$IFDEF BASS_AFTER_22 }
// v2.3
plugin: HPLUGIN; // plugin
{$ENDIF }
end;
{$IFDEF BASS_AFTER_22 }
// v2.3
BASS_PLUGINFORM = record
//
ctype: DWORD; // channel type
name: PChar; // format description
exts: PChar; // 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;
{$ENDIF }
// Sample info structure
BASS_SAMPLE = record
freq: DWORD; // default playback rate
volume: DWORD; // default volume (0-100)
pan: Integer; // 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
{$IFDEF BASS_AFTER_20 }
// really fucked up in 2.1
origres: DWORD; // original resolution
{$ENDIF }
{$IFDEF BASS_AFTER_21 }
// even more fucked up in 2.2
chans: DWORD; // Number of channels... 1=mono, 2=stereo, etc...
{$ENDIF }
{$IFDEF BASS_AFTER_22 }
// one more fuck in 2.3
mingap: DWORD; // minimum gap (ms) between creating channels
{$ENDIF }
{
The following are the sample's default 3D attributes
(if the sample is 3D, BASS_SAMPLE_3D is in flags)
see BASS_ChannelSet3DAttributes
}
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: DWORD; // delta-volume outside the projection cone
{
The following are the defaults used if the sample uses the DirectX 7
voice allocation/management features.
}
vam: DWORD; // voice allocation/management flags (BASS_VAM_xxx)
priority: DWORD; // priority (0=lowest, $ffffffff=highest)
end;
// 3D vector (for 3D positions/velocities/orientations)
pBASS_3DVECTOR = ^BASS_3DVECTOR;
BASS_3DVECTOR = record
x: FLOAT; // +=right, -=left
y: FLOAT; // +=up, -=down
z: FLOAT; // +=front, -=behind
end;
BASS_FXCHORUS = record
fWetDryMix: FLOAT;
fDepth: FLOAT;
fFeedback: FLOAT;
fFrequency: FLOAT;
lWaveform: DWORD; // 0=triangle, 1=sine
fDelay: FLOAT;
lPhase: DWORD; // BASS_FX_PHASE_xxx
end;
BASS_FXCOMPRESSOR = record
fGain: FLOAT;
fAttack: FLOAT;
fRelease: FLOAT;
fThreshold: FLOAT;
fRatio: FLOAT;
fPredelay: FLOAT;
end;
BASS_FXDISTORTION = record
fGain: FLOAT;
fEdge: FLOAT;
fPostEQCenterFrequency: FLOAT;
fPostEQBandwidth: FLOAT;
fPreLowpassCutoff: FLOAT;
end;
BASS_FXECHO = record
fWetDryMix: FLOAT;
fFeedback: FLOAT;
fLeftDelay: FLOAT;
fRightDelay: FLOAT;
lPanDelay: BOOL;
end;
BASS_FXFLANGER = record
fWetDryMix: FLOAT;
fDepth: FLOAT;
fFeedback: FLOAT;
fFrequency: FLOAT;
lWaveform: DWORD; // 0=triangle, 1=sine
fDelay: FLOAT;
lPhase: DWORD; // BASS_FX_PHASE_xxx
end;
BASS_FXGARGLE = record
dwRateHz: DWORD; // Rate of modulation in hz
dwWaveShape: DWORD; // 0=triangle, 1=square
end;
BASS_FXI3DL2REVERB = record
lRoom: Longint; // [-10000, 0] default: -1000 mB
lRoomHF: Longint; // [-10000, 0] default: 0 mB
flRoomRolloffFactor: FLOAT; // [0.0, 10.0] default: 0.0
flDecayTime: FLOAT; // [0.1, 20.0] default: 1.49s
flDecayHFRatio: FLOAT; // [0.1, 2.0] default: 0.83
lReflections: Longint; // [-10000, 1000] default: -2602 mB
flReflectionsDelay: FLOAT; // [0.0, 0.3] default: 0.007 s
lReverb: Longint; // [-10000, 2000] default: 200 mB
flReverbDelay: FLOAT; // [0.0, 0.1] default: 0.011 s
flDiffusion: FLOAT; // [0.0, 100.0] default: 100.0 %
flDensity: FLOAT; // [0.0, 100.0] default: 100.0 %
flHFReference: FLOAT; // [20.0, 20000.0] default: 5000.0 Hz
end;
BASS_FXPARAMEQ = record
fCenter: FLOAT;
fBandwidth: FLOAT;
fGain: FLOAT;
end;
BASS_FXREVERB = record
fInGain: FLOAT; // [-96.0,0.0] default: 0.0 dB
fReverbMix: FLOAT; // [-96.0,0.0] default: 0.0 db
fReverbTime: FLOAT; // [0.001,3000.0] default: 1000.0 ms
fHighFreqRTRatio: FLOAT; // [0.001,0.999] default: 0.001
end;
// callback function types
STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: DWORD): DWORD; stdcall;
{
User stream callback function. NOTE: A stream function should obviously be as
quick as possible, other streams (and MOD musics) can't be mixed until
it's finished.
handle : The stream that needs writing
buffer : Buffer to write the samples in
length : Number of bytes to write
user : The 'user' parameter value given when calling BASS_StreamCreate
RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end
the stream.
}
STREAMFILEPROC = function(action, param1, param2, user: DWORD): DWORD; stdcall;
{
User file stream callback function.
action : The action to perform, one of BASS_FILE_xxx values.
param1 : Depends on "action"
param2 : Depends on "action"
user : The 'user' parameter value given when calling BASS_StreamCreate
RETURN : Depends on "action"
}
// v2.0
DOWNLOADPROC = procedure(buffer: pointer; length: DWORD; user: DWORD); stdcall;
{
Internet stream download callback function.
buffer : Buffer containing the downloaded data... NULL=end of download
length : Number of bytes in the buffer
user : The 'user' parameter value given when calling BASS_StreamCreateURL
}
SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: DWORD); stdcall;
{
Sync callback function. NOTE: a sync callback function should be very
quick as other syncs cannot be processed until it has finished. If the
sync is a "mixtime" sync, then other streams and MOD musics can not be
mixed until it's finished either.
handle : The sync that has occured
channel: Channel that the sync occured in
data : Additional data associated with the sync's occurance
user : The 'user' parameter given when calling BASS_ChannelSetSync
}
DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: DWORD); stdcall;
{
DSP callback function. NOTE: A DSP function should obviously be as quick
as possible... other DSP functions, streams and MOD musics can not be
processed until it's finished.
handle : The DSP handle
channel: Channel that the DSP is being applied to
buffer : Buffer to apply the DSP to
length : Number of bytes in the buffer
user : The 'user' parameter given when calling BASS_ChannelSetDSP
}
{$IFDEF BASS_AFTER_18 }
// fucked up by 2.0
RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: DWORD): BOOL; stdcall;
{$ELSE }
RECORDPROC = function(buffer: Pointer; length: DWORD; user: DWORD): BOOL; stdcall;
{$ENDIF }
{
Recording callback function.
buffer : Buffer containing the recorded sample data
length : Number of bytes
user : The 'user' parameter value given when calling BASS_RecordStart
RETURN : TRUE = continue recording, FALSE = stop
}
pBassProc = ^tBassProc;
tBassProc = record
//
r_module: hModule;
r_refCount: integer;
//
// -- FUNCTIONS EXPORTED FROM BASS.DLL --
//
{21}r_getVersion: function(): DWORD; stdcall;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -