1 /* BASS 2.3 C/C++ header file, copyright (c) 1999-2007 Ian Luck.
2 Please report bugs/suggestions/etc... to bass@un4seen.com
4 See the BASS.CHM file for more complete documentation */
9 #ifdef _WIN32 // Windows
11 typedef unsigned __int64 QWORD
;
17 typedef uint16_t WORD
;
18 typedef uint32_t DWORD
;
19 typedef uint64_t QWORD
;
23 #define LOBYTE(a) (BYTE)(a)
24 #define LOWORD(a) (WORD)(a)
25 #define HIWORD(a) (WORD)((a)>>16)
26 #define MAKELONG(a,b) (DWORD)(((a)&0xffff)|((b)<<16))
33 #define BASSVERSION 0x203 // API version
36 #define BASSDEF(f) WINAPI f
39 typedef DWORD HMUSIC
; // MOD music handle
40 typedef DWORD HSAMPLE
; // sample handle
41 typedef DWORD HCHANNEL
; // playing sample's channel handle
42 typedef DWORD HSTREAM
; // sample stream handle
43 typedef DWORD HRECORD
; // recording handle
44 typedef DWORD HSYNC
; // synchronizer handle
45 typedef DWORD HDSP
; // DSP handle
46 typedef DWORD HFX
; // DX8 effect handle
47 typedef DWORD HPLUGIN
; // Plugin handle
49 // Error codes returned by BASS_ErrorGetCode
50 #define BASS_OK 0 // all is OK
51 #define BASS_ERROR_MEM 1 // memory error
52 #define BASS_ERROR_FILEOPEN 2 // can't open the file
53 #define BASS_ERROR_DRIVER 3 // can't find a free/valid driver
54 #define BASS_ERROR_BUFLOST 4 // the sample buffer was lost
55 #define BASS_ERROR_HANDLE 5 // invalid handle
56 #define BASS_ERROR_FORMAT 6 // unsupported sample format
57 #define BASS_ERROR_POSITION 7 // invalid playback position
58 #define BASS_ERROR_INIT 8 // BASS_Init has not been successfully called
59 #define BASS_ERROR_START 9 // BASS_Start has not been successfully called
60 #define BASS_ERROR_ALREADY 14 // already initialized/paused/whatever
61 #define BASS_ERROR_NOPAUSE 16 // not paused
62 #define BASS_ERROR_NOCHAN 18 // can't get a free channel
63 #define BASS_ERROR_ILLTYPE 19 // an illegal type was specified
64 #define BASS_ERROR_ILLPARAM 20 // an illegal parameter was specified
65 #define BASS_ERROR_NO3D 21 // no 3D support
66 #define BASS_ERROR_NOEAX 22 // no EAX support
67 #define BASS_ERROR_DEVICE 23 // illegal device number
68 #define BASS_ERROR_NOPLAY 24 // not playing
69 #define BASS_ERROR_FREQ 25 // illegal sample rate
70 #define BASS_ERROR_NOTFILE 27 // the stream is not a file stream
71 #define BASS_ERROR_NOHW 29 // no hardware voices available
72 #define BASS_ERROR_EMPTY 31 // the MOD music has no sequence data
73 #define BASS_ERROR_NONET 32 // no internet connection could be opened
74 #define BASS_ERROR_CREATE 33 // couldn't create the file
75 #define BASS_ERROR_NOFX 34 // effects are not available
76 #define BASS_ERROR_PLAYING 35 // the channel is playing
77 #define BASS_ERROR_NOTAVAIL 37 // requested data is not available
78 #define BASS_ERROR_DECODE 38 // the channel is a "decoding channel"
79 #define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed
80 #define BASS_ERROR_TIMEOUT 40 // connection timedout
81 #define BASS_ERROR_FILEFORM 41 // unsupported file format
82 #define BASS_ERROR_SPEAKER 42 // unavailable speaker
83 #define BASS_ERROR_VERSION 43 // invalid BASS version (used by add-ons)
84 #define BASS_ERROR_CODEC 44 // codec is not available/supported
85 #define BASS_ERROR_UNKNOWN -1 // some other mystery error
87 // Initialization flags
88 #define BASS_DEVICE_8BITS 1 // use 8 bit resolution, else 16 bit
89 #define BASS_DEVICE_MONO 2 // use mono, else stereo
90 #define BASS_DEVICE_3D 4 // enable 3D functionality
91 /* If the BASS_DEVICE_3D flag is not specified when initilizing BASS,
92 then the 3D flags (BASS_SAMPLE_3D and BASS_MUSIC_3D) are ignored when
93 loading/creating a sample/stream/music. */
94 #define BASS_DEVICE_LATENCY 256 // calculate device latency (BASS_INFO struct)
95 #define BASS_DEVICE_SPEAKERS 2048 // force enabling of speaker assignment
96 #define BASS_DEVICE_NOSPEAKER 4096 // ignore speaker arrangement
98 // DirectSound interfaces (for use with BASS_GetDSoundObject)
99 #define BASS_OBJECT_DS 1 // IDirectSound
100 #define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener
103 DWORD flags
; // device capabilities (DSCAPS_xxx flags)
104 DWORD hwsize
; // size of total device hardware memory
105 DWORD hwfree
; // size of free device hardware memory
106 DWORD freesam
; // number of free sample slots in the hardware
107 DWORD free3d
; // number of free 3D sample slots in the hardware
108 DWORD minrate
; // min sample rate supported by the hardware
109 DWORD maxrate
; // max sample rate supported by the hardware
110 BOOL eax
; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used)
111 DWORD minbuf
; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
112 DWORD dsver
; // DirectSound version
113 DWORD latency
; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
114 DWORD initflags
;// "flags" parameter of BASS_Init call
115 DWORD speakers
; // number of speakers available
116 const char *driver
; // driver
117 DWORD freq
; // current output rate (OSX only)
120 // BASS_INFO flags (from DSOUND.H)
121 #define DSCAPS_CONTINUOUSRATE 0x00000010
122 /* supports all sample rates between min/maxrate */
123 #define DSCAPS_EMULDRIVER 0x00000020
124 /* device does NOT have hardware DirectSound support */
125 #define DSCAPS_CERTIFIED 0x00000040
126 /* device driver has been certified by Microsoft */
127 /* The following flags tell what type of samples are supported by HARDWARE
128 mixing, all these formats are supported by SOFTWARE mixing */
129 #define DSCAPS_SECONDARYMONO 0x00000100 // mono
130 #define DSCAPS_SECONDARYSTEREO 0x00000200 // stereo
131 #define DSCAPS_SECONDARY8BIT 0x00000400 // 8 bit
132 #define DSCAPS_SECONDARY16BIT 0x00000800 // 16 bit
135 DWORD flags
; // device capabilities (DSCCAPS_xxx flags)
136 DWORD formats
; // supported standard formats (WAVE_FORMAT_xxx flags)
137 DWORD inputs
; // number of inputs
138 BOOL singlein
; // TRUE = only 1 input can be set at a time
139 const char *driver
; // driver
140 DWORD freq
; // current input rate (OSX only)
143 // BASS_RECORDINFO flags (from DSOUND.H)
144 #define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER // device does NOT have hardware DirectSound recording support
145 #define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED // device driver has been certified by Microsoft
147 // defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)
148 #ifndef WAVE_FORMAT_1M08
149 #define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
150 #define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
151 #define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
152 #define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
153 #define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
154 #define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
155 #define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
156 #define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
157 #define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
158 #define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
159 #define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
160 #define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */
163 // Sample info structure & flags
165 DWORD freq
; // default playback rate
166 DWORD volume
; // default volume (0-100)
167 int pan
; // default pan (-100=left, 0=middle, 100=right)
168 DWORD flags
; // BASS_SAMPLE_xxx flags
169 DWORD length
; // length (in bytes)
170 DWORD max
; // maximum simultaneous playbacks
171 DWORD origres
; // original resolution bits
172 DWORD chans
; // number of channels
173 DWORD mingap
; // minimum gap (ms) between creating channels
174 /* The following are the sample's default 3D attributes (if the sample
175 is 3D, BASS_SAMPLE_3D is in flags) see BASS_ChannelSet3DAttributes */
176 DWORD mode3d
; // BASS_3DMODE_xxx mode
177 float mindist
; // minimum distance
178 float maxdist
; // maximum distance
179 DWORD iangle
; // angle of inside projection cone
180 DWORD oangle
; // angle of outside projection cone
181 DWORD outvol
; // delta-volume outside the projection cone
182 /* The following are the defaults used if the sample uses the DirectX 7
183 voice allocation/management features. */
184 DWORD vam
; // voice allocation/management flags (BASS_VAM_xxx)
185 DWORD priority
; // priority (0=lowest, 0xffffffff=highest)
188 #define BASS_SAMPLE_8BITS 1 // 8 bit
189 #define BASS_SAMPLE_FLOAT 256 // 32-bit floating-point
190 #define BASS_SAMPLE_MONO 2 // mono
191 #define BASS_SAMPLE_LOOP 4 // looped
192 #define BASS_SAMPLE_3D 8 // 3D functionality enabled
193 #define BASS_SAMPLE_SOFTWARE 16 // it's NOT using hardware mixing
194 #define BASS_SAMPLE_MUTEMAX 32 // muted at max distance (3D only)
195 #define BASS_SAMPLE_VAM 64 // uses the DX7 voice allocation & management
196 #define BASS_SAMPLE_FX 128 // old implementation of DX8 effects are enabled
197 #define BASS_SAMPLE_OVER_VOL 0x10000 // override lowest volume
198 #define BASS_SAMPLE_OVER_POS 0x20000 // override longest playing
199 #define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only)
201 #define BASS_STREAM_PRESCAN 0x20000 // enable pin-point seeking (MP3/MP2/MP1)
202 #define BASS_MP3_SETPOS BASS_STREAM_PRESCAN
203 #define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stop/ends
204 #define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file streams
205 #define BASS_STREAM_BLOCK 0x100000// download/play internet file stream in small blocks
206 #define BASS_STREAM_DECODE 0x200000// don't play the stream, only decode (BASS_ChannelGetData)
207 #define BASS_STREAM_STATUS 0x800000// give server status info (HTTP/ICY tags) in DOWNLOADPROC
209 #define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT // 32-bit floating-point
210 #define BASS_MUSIC_MONO BASS_SAMPLE_MONO // force mono mixing (less CPU usage)
211 #define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP // loop music
212 #define BASS_MUSIC_3D BASS_SAMPLE_3D // enable 3D functionality
213 #define BASS_MUSIC_FX BASS_SAMPLE_FX // enable old implementation of DX8 effects
214 #define BASS_MUSIC_AUTOFREE BASS_STREAM_AUTOFREE // automatically free the music when it stop/ends
215 #define BASS_MUSIC_DECODE BASS_STREAM_DECODE // don't play the music, only decode (BASS_ChannelGetData)
216 #define BASS_MUSIC_PRESCAN BASS_STREAM_PRESCAN // calculate playback length
217 #define BASS_MUSIC_CALCLEN BASS_MUSIC_PRESCAN
218 #define BASS_MUSIC_RAMP 0x200 // normal ramping
219 #define BASS_MUSIC_RAMPS 0x400 // sensitive ramping
220 #define BASS_MUSIC_SURROUND 0x800 // surround sound
221 #define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2)
222 #define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does
223 #define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does
224 #define BASS_MUSIC_NONINTER 0x10000 // non-interpolated mixing
225 #define BASS_MUSIC_POSRESET 0x8000 // stop all notes when moving position
226 #define BASS_MUSIC_POSRESETEX 0x400000// stop all notes and reset bmp/etc when moving position
227 #define BASS_MUSIC_STOPBACK 0x80000 // stop the music on a backwards jump effect
228 #define BASS_MUSIC_NOSAMPLE 0x100000// don't load the samples
230 // Speaker assignment flags
231 #define BASS_SPEAKER_FRONT 0x1000000 // front speakers
232 #define BASS_SPEAKER_REAR 0x2000000 // rear/side speakers
233 #define BASS_SPEAKER_CENLFE 0x3000000 // center & LFE speakers (5.1)
234 #define BASS_SPEAKER_REAR2 0x4000000 // rear center speakers (7.1)
235 #define BASS_SPEAKER_N(n) ((n)<<24) // n'th pair of speakers (max 15)
236 #define BASS_SPEAKER_LEFT 0x10000000 // modifier: left
237 #define BASS_SPEAKER_RIGHT 0x20000000 // modifier: right
238 #define BASS_SPEAKER_FRONTLEFT BASS_SPEAKER_FRONT|BASS_SPEAKER_LEFT
239 #define BASS_SPEAKER_FRONTRIGHT BASS_SPEAKER_FRONT|BASS_SPEAKER_RIGHT
240 #define BASS_SPEAKER_REARLEFT BASS_SPEAKER_REAR|BASS_SPEAKER_LEFT
241 #define BASS_SPEAKER_REARRIGHT BASS_SPEAKER_REAR|BASS_SPEAKER_RIGHT
242 #define BASS_SPEAKER_CENTER BASS_SPEAKER_CENLFE|BASS_SPEAKER_LEFT
243 #define BASS_SPEAKER_LFE BASS_SPEAKER_CENLFE|BASS_SPEAKER_RIGHT
244 #define BASS_SPEAKER_REAR2LEFT BASS_SPEAKER_REAR2|BASS_SPEAKER_LEFT
245 #define BASS_SPEAKER_REAR2RIGHT BASS_SPEAKER_REAR2|BASS_SPEAKER_RIGHT
247 #define BASS_UNICODE 0x80000000
249 #define BASS_RECORD_PAUSE 0x8000 // start recording paused
251 #define MAKEMUSICPOS(order,row) (0x80000000|MAKELONG(order,row))
253 // DX7 voice allocation flags
254 #define BASS_VAM_HARDWARE 1
255 /* Play the sample in hardware. If no hardware voices are available then
256 the "play" call will fail */
257 #define BASS_VAM_SOFTWARE 2
258 /* Play the sample in software (ie. non-accelerated). No other VAM flags
259 may be used together with this flag. */
261 // DX7 voice management flags
262 /* These flags enable hardware resource stealing... if the hardware has no
263 available voices, a currently playing buffer will be stopped to make room for
264 the new buffer. NOTE: only samples loaded/created with the BASS_SAMPLE_VAM
265 flag are considered for termination by the DX7 voice management. */
266 #define BASS_VAM_TERM_TIME 4
267 /* If there are no free hardware voices, the buffer to be terminated will be
268 the one with the least time left to play. */
269 #define BASS_VAM_TERM_DIST 8
270 /* If there are no free hardware voices, the buffer to be terminated will be
271 one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is beyond
272 it's max distance. If there are no buffers that match this criteria, then the
273 "play" call will fail. */
274 #define BASS_VAM_TERM_PRIO 16
275 /* If there are no free hardware voices, the buffer to be terminated will be
276 the one with the lowest priority. */
279 DWORD freq
; // default playback rate
280 DWORD chans
; // channels
281 DWORD flags
; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
282 DWORD ctype
; // type of channel
283 DWORD origres
; // original resolution
284 HPLUGIN plugin
; // plugin
287 // BASS_CHANNELINFO types
288 #define BASS_CTYPE_SAMPLE 1
289 #define BASS_CTYPE_RECORD 2
290 #define BASS_CTYPE_STREAM 0x10000
291 #define BASS_CTYPE_STREAM_OGG 0x10002
292 #define BASS_CTYPE_STREAM_MP1 0x10003
293 #define BASS_CTYPE_STREAM_MP2 0x10004
294 #define BASS_CTYPE_STREAM_MP3 0x10005
295 #define BASS_CTYPE_STREAM_AIFF 0x10006
296 #define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec
297 #define BASS_CTYPE_STREAM_WAV_PCM 0x50001
298 #define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003
299 #define BASS_CTYPE_STREAM_WAV_MP3 0x50055
300 #define BASS_CTYPE_MUSIC_MOD 0x20000
301 #define BASS_CTYPE_MUSIC_MTM 0x20001
302 #define BASS_CTYPE_MUSIC_S3M 0x20002
303 #define BASS_CTYPE_MUSIC_XM 0x20003
304 #define BASS_CTYPE_MUSIC_IT 0x20004
305 #define BASS_CTYPE_MUSIC_MO3 0x00100 // MO3 flag
308 DWORD ctype
; // channel type
309 const char *name
; // format description
310 const char *exts
; // file extension filter (*.ext1;*.ext2;etc...)
314 DWORD version
; // version (same form as BASS_GetVersion)
315 DWORD formatc
; // number of formats
316 const BASS_PLUGINFORM
*formats
; // the array of formats
319 // 3D vector (for 3D positions/velocities/orientations)
320 typedef struct BASS_3DVECTOR
{
323 BASS_3DVECTOR(float _x
, float _y
, float _z
) : x(_x
), y(_y
), z(_z
) {};
325 float x
; // +=right, -=left
326 float y
; // +=up, -=down
327 float z
; // +=front, -=behind
331 #define BASS_3DMODE_NORMAL 0
332 /* normal 3D processing */
333 #define BASS_3DMODE_RELATIVE 1
334 /* The channel's 3D position (position/velocity/orientation) are relative to
335 the listener. When the listener's position/velocity/orientation is changed
336 with BASS_Set3DPosition, the channel's position relative to the listener does
338 #define BASS_3DMODE_OFF 2
339 /* Turn off 3D processing on the channel, the sound will be played
343 // EAX environments, use with BASS_SetEAXParameters
346 EAX_ENVIRONMENT_GENERIC
,
347 EAX_ENVIRONMENT_PADDEDCELL
,
348 EAX_ENVIRONMENT_ROOM
,
349 EAX_ENVIRONMENT_BATHROOM
,
350 EAX_ENVIRONMENT_LIVINGROOM
,
351 EAX_ENVIRONMENT_STONEROOM
,
352 EAX_ENVIRONMENT_AUDITORIUM
,
353 EAX_ENVIRONMENT_CONCERTHALL
,
354 EAX_ENVIRONMENT_CAVE
,
355 EAX_ENVIRONMENT_ARENA
,
356 EAX_ENVIRONMENT_HANGAR
,
357 EAX_ENVIRONMENT_CARPETEDHALLWAY
,
358 EAX_ENVIRONMENT_HALLWAY
,
359 EAX_ENVIRONMENT_STONECORRIDOR
,
360 EAX_ENVIRONMENT_ALLEY
,
361 EAX_ENVIRONMENT_FOREST
,
362 EAX_ENVIRONMENT_CITY
,
363 EAX_ENVIRONMENT_MOUNTAINS
,
364 EAX_ENVIRONMENT_QUARRY
,
365 EAX_ENVIRONMENT_PLAIN
,
366 EAX_ENVIRONMENT_PARKINGLOT
,
367 EAX_ENVIRONMENT_SEWERPIPE
,
368 EAX_ENVIRONMENT_UNDERWATER
,
369 EAX_ENVIRONMENT_DRUGGED
,
370 EAX_ENVIRONMENT_DIZZY
,
371 EAX_ENVIRONMENT_PSYCHOTIC
,
373 EAX_ENVIRONMENT_COUNT
// total number of environments
376 // EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx)
377 #define EAX_PRESET_GENERIC EAX_ENVIRONMENT_GENERIC,0.5F,1.493F,0.5F
378 #define EAX_PRESET_PADDEDCELL EAX_ENVIRONMENT_PADDEDCELL,0.25F,0.1F,0.0F
379 #define EAX_PRESET_ROOM EAX_ENVIRONMENT_ROOM,0.417F,0.4F,0.666F
380 #define EAX_PRESET_BATHROOM EAX_ENVIRONMENT_BATHROOM,0.653F,1.499F,0.166F
381 #define EAX_PRESET_LIVINGROOM EAX_ENVIRONMENT_LIVINGROOM,0.208F,0.478F,0.0F
382 #define EAX_PRESET_STONEROOM EAX_ENVIRONMENT_STONEROOM,0.5F,2.309F,0.888F
383 #define EAX_PRESET_AUDITORIUM EAX_ENVIRONMENT_AUDITORIUM,0.403F,4.279F,0.5F
384 #define EAX_PRESET_CONCERTHALL EAX_ENVIRONMENT_CONCERTHALL,0.5F,3.961F,0.5F
385 #define EAX_PRESET_CAVE EAX_ENVIRONMENT_CAVE,0.5F,2.886F,1.304F
386 #define EAX_PRESET_ARENA EAX_ENVIRONMENT_ARENA,0.361F,7.284F,0.332F
387 #define EAX_PRESET_HANGAR EAX_ENVIRONMENT_HANGAR,0.5F,10.0F,0.3F
388 #define EAX_PRESET_CARPETEDHALLWAY EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153F,0.259F,2.0F
389 #define EAX_PRESET_HALLWAY EAX_ENVIRONMENT_HALLWAY,0.361F,1.493F,0.0F
390 #define EAX_PRESET_STONECORRIDOR EAX_ENVIRONMENT_STONECORRIDOR,0.444F,2.697F,0.638F
391 #define EAX_PRESET_ALLEY EAX_ENVIRONMENT_ALLEY,0.25F,1.752F,0.776F
392 #define EAX_PRESET_FOREST EAX_ENVIRONMENT_FOREST,0.111F,3.145F,0.472F
393 #define EAX_PRESET_CITY EAX_ENVIRONMENT_CITY,0.111F,2.767F,0.224F
394 #define EAX_PRESET_MOUNTAINS EAX_ENVIRONMENT_MOUNTAINS,0.194F,7.841F,0.472F
395 #define EAX_PRESET_QUARRY EAX_ENVIRONMENT_QUARRY,1.0F,1.499F,0.5F
396 #define EAX_PRESET_PLAIN EAX_ENVIRONMENT_PLAIN,0.097F,2.767F,0.224F
397 #define EAX_PRESET_PARKINGLOT EAX_ENVIRONMENT_PARKINGLOT,0.208F,1.652F,1.5F
398 #define EAX_PRESET_SEWERPIPE EAX_ENVIRONMENT_SEWERPIPE,0.652F,2.886F,0.25F
399 #define EAX_PRESET_UNDERWATER EAX_ENVIRONMENT_UNDERWATER,1.0F,1.499F,0.0F
400 #define EAX_PRESET_DRUGGED EAX_ENVIRONMENT_DRUGGED,0.875F,8.392F,1.388F
401 #define EAX_PRESET_DIZZY EAX_ENVIRONMENT_DIZZY,0.139F,17.234F,0.666F
402 #define EAX_PRESET_PSYCHOTIC EAX_ENVIRONMENT_PSYCHOTIC,0.486F,7.563F,0.806F
405 // software 3D mixing algorithm modes (used with BASS_Set3DAlgorithm)
406 #define BASS_3DALG_DEFAULT 0
407 /* default algorithm (currently translates to BASS_3DALG_OFF) */
408 #define BASS_3DALG_OFF 1
409 /* Uses normal left and right panning. The vertical axis is ignored except for
410 scaling of volume due to distance. Doppler shift and volume scaling are still
411 applied, but the 3D filtering is not performed. This is the most CPU efficient
412 software implementation, but provides no virtual 3D audio effect. Head Related
413 Transfer Function processing will not be done. Since only normal stereo panning
414 is used, a channel using this algorithm may be accelerated by a 2D hardware
415 voice if no free 3D hardware voices are available. */
416 #define BASS_3DALG_FULL 2
417 /* This algorithm gives the highest quality 3D audio effect, but uses more CPU.
418 Requires Windows 98 2nd Edition or Windows 2000 that uses WDM drivers, if this
419 mode is not available then BASS_3DALG_OFF will be used instead. */
420 #define BASS_3DALG_LIGHT 3
421 /* This algorithm gives a good 3D audio effect, and uses less CPU than the FULL
422 mode. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM drivers, if
423 this mode is not available then BASS_3DALG_OFF will be used instead. */
425 typedef DWORD (CALLBACK STREAMPROC
)(HSTREAM handle
, void *buffer
, DWORD length
, DWORD user
);
426 /* User stream callback function. NOTE: A stream function should obviously be as quick
427 as possible, other streams (and MOD musics) can't be mixed until it's finished.
428 handle : The stream that needs writing
429 buffer : Buffer to write the samples in
430 length : Number of bytes to write
431 user : The 'user' parameter value given when calling BASS_StreamCreate
432 RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end
435 #define BASS_STREAMPROC_END 0x80000000 // end of user stream flag
437 // BASS_StreamGetFilePosition modes
438 #define BASS_FILEPOS_CURRENT 0
439 #define BASS_FILEPOS_DECODE BASS_FILEPOS_CURRENT
440 #define BASS_FILEPOS_DOWNLOAD 1
441 #define BASS_FILEPOS_END 2
442 #define BASS_FILEPOS_START 3
444 // STREAMFILEPROC actions
445 #define BASS_FILE_CLOSE 0
446 #define BASS_FILE_READ 1
447 #define BASS_FILE_LEN 3
448 #define BASS_FILE_SEEK 4
450 typedef DWORD (CALLBACK STREAMFILEPROC
)(DWORD action
, DWORD param1
, DWORD param2
, DWORD user
);
451 /* User file stream callback function.
452 action : The action to perform, one of BASS_FILE_xxx values.
453 param1 : Depends on "action"
454 param2 : Depends on "action"
455 user : The 'user' parameter value given when calling BASS_StreamCreate
456 RETURN : Depends on "action" */
458 typedef void (CALLBACK DOWNLOADPROC
)(const void *buffer
, DWORD length
, DWORD user
);
459 /* Internet stream download callback function.
460 buffer : Buffer containing the downloaded data... NULL=end of download
461 length : Number of bytes in the buffer
462 user : The 'user' parameter value given when calling BASS_StreamCreateURL */
464 /* Sync types (with BASS_ChannelSetSync "param" and SYNCPROC "data"
465 definitions) & flags. */
466 #define BASS_SYNC_POS 0
467 /* Sync when a channel reaches a position.
468 param: position in bytes
470 #define BASS_SYNC_END 2
471 /* Sync when a channel reaches the end.
473 data : 1 = the sync is triggered by a backward jump in a MOD music, otherwise not used */
474 #define BASS_SYNC_META 4
475 /* Sync when metadata is received in a stream.
477 data : pointer to the metadata */
478 #define BASS_SYNC_SLIDE 5
479 /* Sync when an attribute slide is completed.
481 data : the type of slide completed (one of the BASS_SLIDE_xxx values) */
482 #define BASS_SYNC_STALL 6
483 /* Sync when playback has stalled.
485 data : 0=stalled, 1=resumed */
486 #define BASS_SYNC_DOWNLOAD 7
487 /* Sync when downloading of an internet (or "buffered" user file) stream has ended.
490 #define BASS_SYNC_FREE 8
491 /* Sync when a channel is freed.
494 #define BASS_SYNC_MUSICPOS 10
495 /* Sync when a MOD music reaches an order:row position.
496 param: LOWORD=order (0=first, -1=all) HIWORD=row (0=first, -1=all)
497 data : LOWORD=order HIWORD=row */
498 #define BASS_SYNC_MUSICINST 1
499 /* Sync when an instrument (sample for the non-instrument based formats)
500 is played in a MOD music (not including retrigs).
501 param: LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=all)
502 data : LOWORD=note HIWORD=volume (0-64) */
503 #define BASS_SYNC_MUSICFX 3
504 /* Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) is used.
505 param: 0:data=pos, 1:data="x" value
506 data : param=0: LOWORD=order HIWORD=row, param=1: "x" value */
507 #define BASS_SYNC_MESSAGE 0x20000000 // FLAG: post a Windows message (instead of callback)
508 /* When using a window message "callback", the message to post is given in the "proc"
509 parameter of BASS_ChannelSetSync, and is posted to the window specified in the BASS_Init
510 call. The message parameters are: WPARAM = data, LPARAM = user. */
511 #define BASS_SYNC_MIXTIME 0x40000000 // FLAG: sync at mixtime, else at playtime
512 #define BASS_SYNC_ONETIME 0x80000000 // FLAG: sync only once, else continuously
514 typedef void (CALLBACK SYNCPROC
)(HSYNC handle
, DWORD channel
, DWORD data
, DWORD user
);
515 /* Sync callback function. NOTE: a sync callback function should be very
516 quick as other syncs can't be processed until it has finished. If the sync
517 is a "mixtime" sync, then other streams and MOD musics can't be mixed until
518 it's finished either.
519 handle : The sync that has occured
520 channel: Channel that the sync occured in
521 data : Additional data associated with the sync's occurance
522 user : The 'user' parameter given when calling BASS_ChannelSetSync */
524 typedef void (CALLBACK DSPPROC
)(HDSP handle
, DWORD channel
, void *buffer
, DWORD length
, DWORD user
);
525 /* DSP callback function. NOTE: A DSP function should obviously be as quick as
526 possible... other DSP functions, streams and MOD musics can not be processed
528 handle : The DSP handle
529 channel: Channel that the DSP is being applied to
530 buffer : Buffer to apply the DSP to
531 length : Number of bytes in the buffer
532 user : The 'user' parameter given when calling BASS_ChannelSetDSP */
534 typedef BOOL (CALLBACK RECORDPROC
)(HRECORD handle
, const void *buffer
, DWORD length
, DWORD user
);
535 /* Recording callback function.
536 handle : The recording handle
537 buffer : Buffer containing the recorded sample data
538 length : Number of bytes
539 user : The 'user' parameter value given when calling BASS_RecordStart
540 RETURN : TRUE = continue recording, FALSE = stop */
542 // BASS_ChannelGetData flags
543 #define BASS_DATA_AVAILABLE 0 // query how much data is buffered
544 #define BASS_DATA_FLOAT 0x40000000 // flag: return floating-point sample data
545 #define BASS_DATA_FFT512 0x80000000 // 512 sample FFT
546 #define BASS_DATA_FFT1024 0x80000001 // 1024 FFT
547 #define BASS_DATA_FFT2048 0x80000002 // 2048 FFT
548 #define BASS_DATA_FFT4096 0x80000003 // 4096 FFT
549 #define BASS_DATA_FFT8192 0x80000004 // 8192 FFT
550 #define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined
551 #define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window
553 // BASS_ChannelGetTags types : what's returned
554 #define BASS_TAG_ID3 0 // ID3v1 tags : 128 byte block
555 #define BASS_TAG_ID3V2 1 // ID3v2 tags : variable length block
556 #define BASS_TAG_OGG 2 // OGG comments : array of null-terminated UTF-8 strings
557 #define BASS_TAG_HTTP 3 // HTTP headers : array of null-terminated ANSI strings
558 #define BASS_TAG_ICY 4 // ICY headers : array of null-terminated ANSI strings
559 #define BASS_TAG_META 5 // ICY metadata : ANSI string
560 #define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string
561 #define BASS_TAG_RIFF_INFO 0x100 // RIFF/WAVE tags : array of null-terminated ANSI strings
562 #define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string
563 #define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string
564 #define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string
565 #define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string
567 // BASS_MusicSet/GetAttribute options
568 #define BASS_MUSIC_ATTRIB_AMPLIFY 0
569 #define BASS_MUSIC_ATTRIB_PANSEP 1
570 #define BASS_MUSIC_ATTRIB_PSCALER 2
571 #define BASS_MUSIC_ATTRIB_BPM 3
572 #define BASS_MUSIC_ATTRIB_SPEED 4
573 #define BASS_MUSIC_ATTRIB_VOL_GLOBAL 5
574 #define BASS_MUSIC_ATTRIB_VOL_CHAN 0x100 // + channel #
575 #define BASS_MUSIC_ATTRIB_VOL_INST 0x200 // + instrument #
578 // DX8 effect types, use with BASS_ChannelSetFX
581 BASS_FX_CHORUS
, // GUID_DSFX_STANDARD_CHORUS
582 BASS_FX_COMPRESSOR
, // GUID_DSFX_STANDARD_COMPRESSOR
583 BASS_FX_DISTORTION
, // GUID_DSFX_STANDARD_DISTORTION
584 BASS_FX_ECHO
, // GUID_DSFX_STANDARD_ECHO
585 BASS_FX_FLANGER
, // GUID_DSFX_STANDARD_FLANGER
586 BASS_FX_GARGLE
, // GUID_DSFX_STANDARD_GARGLE
587 BASS_FX_I3DL2REVERB
, // GUID_DSFX_STANDARD_I3DL2REVERB
588 BASS_FX_PARAMEQ
, // GUID_DSFX_STANDARD_PARAMEQ
589 BASS_FX_REVERB
// GUID_DSFX_WAVES_REVERB
597 DWORD lWaveform
; // 0=triangle, 1=sine
599 DWORD lPhase
; // BASS_FX_PHASE_xxx
600 } BASS_FXCHORUS
; // DSFXChorus
609 } BASS_FXCOMPRESSOR
; // DSFXCompressor
614 float fPostEQCenterFrequency
;
615 float fPostEQBandwidth
;
616 float fPreLowpassCutoff
;
617 } BASS_FXDISTORTION
; // DSFXDistortion
625 } BASS_FXECHO
; // DSFXEcho
632 DWORD lWaveform
; // 0=triangle, 1=sine
634 DWORD lPhase
; // BASS_FX_PHASE_xxx
635 } BASS_FXFLANGER
; // DSFXFlanger
638 DWORD dwRateHz
; // Rate of modulation in hz
639 DWORD dwWaveShape
; // 0=triangle, 1=square
640 } BASS_FXGARGLE
; // DSFXGargle
643 int lRoom
; // [-10000, 0] default: -1000 mB
644 int lRoomHF
; // [-10000, 0] default: 0 mB
645 float flRoomRolloffFactor
; // [0.0, 10.0] default: 0.0
646 float flDecayTime
; // [0.1, 20.0] default: 1.49s
647 float flDecayHFRatio
; // [0.1, 2.0] default: 0.83
648 int lReflections
; // [-10000, 1000] default: -2602 mB
649 float flReflectionsDelay
; // [0.0, 0.3] default: 0.007 s
650 int lReverb
; // [-10000, 2000] default: 200 mB
651 float flReverbDelay
; // [0.0, 0.1] default: 0.011 s
652 float flDiffusion
; // [0.0, 100.0] default: 100.0 %
653 float flDensity
; // [0.0, 100.0] default: 100.0 %
654 float flHFReference
; // [20.0, 20000.0] default: 5000.0 Hz
655 } BASS_FXI3DL2REVERB
; // DSFXI3DL2Reverb
661 } BASS_FXPARAMEQ
; // DSFXParamEq
664 float fInGain
; // [-96.0,0.0] default: 0.0 dB
665 float fReverbMix
; // [-96.0,0.0] default: 0.0 db
666 float fReverbTime
; // [0.001,3000.0] default: 1000.0 ms
667 float fHighFreqRTRatio
; // [0.001,0.999] default: 0.001
668 } BASS_FXREVERB
; // DSFXWavesReverb
670 #define BASS_FX_PHASE_NEG_180 0
671 #define BASS_FX_PHASE_NEG_90 1
672 #define BASS_FX_PHASE_ZERO 2
673 #define BASS_FX_PHASE_90 3
674 #define BASS_FX_PHASE_180 4
677 // BASS_ChannelIsActive return values
678 #define BASS_ACTIVE_STOPPED 0
679 #define BASS_ACTIVE_PLAYING 1
680 #define BASS_ACTIVE_STALLED 2
681 #define BASS_ACTIVE_PAUSED 3
683 // BASS_ChannelIsSliding return flags
684 #define BASS_SLIDE_FREQ 1
685 #define BASS_SLIDE_VOL 2
686 #define BASS_SLIDE_PAN 4
688 // BASS_RecordSetInput flags
689 #define BASS_INPUT_OFF 0x10000
690 #define BASS_INPUT_ON 0x20000
691 #define BASS_INPUT_LEVEL 0x40000
693 #define BASS_INPUT_TYPE_MASK 0xff000000
694 #define BASS_INPUT_TYPE_UNDEF 0x00000000
695 #define BASS_INPUT_TYPE_DIGITAL 0x01000000
696 #define BASS_INPUT_TYPE_LINE 0x02000000
697 #define BASS_INPUT_TYPE_MIC 0x03000000
698 #define BASS_INPUT_TYPE_SYNTH 0x04000000
699 #define BASS_INPUT_TYPE_CD 0x05000000
700 #define BASS_INPUT_TYPE_PHONE 0x06000000
701 #define BASS_INPUT_TYPE_SPEAKER 0x07000000
702 #define BASS_INPUT_TYPE_WAVE 0x08000000
703 #define BASS_INPUT_TYPE_AUX 0x09000000
704 #define BASS_INPUT_TYPE_ANALOG 0x0a000000
706 // BASS_Set/GetConfig options
707 #define BASS_CONFIG_BUFFER 0
708 #define BASS_CONFIG_UPDATEPERIOD 1
709 #define BASS_CONFIG_MAXVOL 3
710 #define BASS_CONFIG_GVOL_SAMPLE 4
711 #define BASS_CONFIG_GVOL_STREAM 5
712 #define BASS_CONFIG_GVOL_MUSIC 6
713 #define BASS_CONFIG_CURVE_VOL 7
714 #define BASS_CONFIG_CURVE_PAN 8
715 #define BASS_CONFIG_FLOATDSP 9
716 #define BASS_CONFIG_3DALGORITHM 10
717 #define BASS_CONFIG_NET_TIMEOUT 11
718 #define BASS_CONFIG_NET_BUFFER 12
719 #define BASS_CONFIG_PAUSE_NOPLAY 13
720 #define BASS_CONFIG_NET_PREBUF 15
721 #define BASS_CONFIG_NET_AGENT 16
722 #define BASS_CONFIG_NET_PROXY 17
723 #define BASS_CONFIG_NET_PASSIVE 18
724 #define BASS_CONFIG_REC_BUFFER 19
726 DWORD
BASSDEF(BASS_SetConfig
)(DWORD option
, DWORD value
);
727 DWORD
BASSDEF(BASS_GetConfig
)(DWORD option
);
728 DWORD
BASSDEF(BASS_GetVersion
)();
729 const char *BASSDEF(BASS_GetDeviceDescription
)(DWORD device
);
730 int BASSDEF(BASS_ErrorGetCode
)();
732 BOOL
BASSDEF(BASS_Init
)(int device
, DWORD freq
, DWORD flags
, HWND win
, const GUID
*dsguid
);
734 BOOL
BASSDEF(BASS_Init
)(int device
, DWORD freq
, DWORD flags
, void *win
, void *dsguid
);
736 BOOL
BASSDEF(BASS_SetDevice
)(DWORD device
);
737 DWORD
BASSDEF(BASS_GetDevice
)();
738 BOOL
BASSDEF(BASS_Free
)();
740 void *BASSDEF(BASS_GetDSoundObject
)(DWORD object
);
742 BOOL
BASSDEF(BASS_GetInfo
)(BASS_INFO
*info
);
743 BOOL
BASSDEF(BASS_Update
)();
744 float BASSDEF(BASS_GetCPU
)();
745 BOOL
BASSDEF(BASS_Start
)();
746 BOOL
BASSDEF(BASS_Stop
)();
747 BOOL
BASSDEF(BASS_Pause
)();
748 BOOL
BASSDEF(BASS_SetVolume
)(DWORD volume
);
749 DWORD
BASSDEF(BASS_GetVolume
)();
751 HPLUGIN
BASSDEF(BASS_PluginLoad
)(const char *file
, DWORD flags
);
752 BOOL
BASSDEF(BASS_PluginFree
)(HPLUGIN handle
);
753 const BASS_PLUGININFO
*BASSDEF(BASS_PluginGetInfo
)(HPLUGIN handle
);
755 BOOL
BASSDEF(BASS_Set3DFactors
)(float distf
, float rollf
, float doppf
);
756 BOOL
BASSDEF(BASS_Get3DFactors
)(float *distf
, float *rollf
, float *doppf
);
757 BOOL
BASSDEF(BASS_Set3DPosition
)(const BASS_3DVECTOR
*pos
, const BASS_3DVECTOR
*vel
, const BASS_3DVECTOR
*front
, const BASS_3DVECTOR
*top
);
758 BOOL
BASSDEF(BASS_Get3DPosition
)(BASS_3DVECTOR
*pos
, BASS_3DVECTOR
*vel
, BASS_3DVECTOR
*front
, BASS_3DVECTOR
*top
);
759 void BASSDEF(BASS_Apply3D
)();
761 BOOL
BASSDEF(BASS_SetEAXParameters
)(int env
, float vol
, float decay
, float damp
);
762 BOOL
BASSDEF(BASS_GetEAXParameters
)(DWORD
*env
, float *vol
, float *decay
, float *damp
);
765 HMUSIC
BASSDEF(BASS_MusicLoad
)(BOOL mem
, const void *file
, DWORD offset
, DWORD length
, DWORD flags
, DWORD freq
);
766 BOOL
BASSDEF(BASS_MusicFree
)(HMUSIC handle
);
767 DWORD
BASSDEF(BASS_MusicSetAttribute
)(HMUSIC handle
, DWORD attrib
, DWORD value
);
768 DWORD
BASSDEF(BASS_MusicGetAttribute
)(HMUSIC handle
, DWORD attrib
);
769 DWORD
BASSDEF(BASS_MusicGetOrders
)(HMUSIC handle
);
770 DWORD
BASSDEF(BASS_MusicGetOrderPosition
)(HMUSIC handle
);
772 HSAMPLE
BASSDEF(BASS_SampleLoad
)(BOOL mem
, const void *file
, DWORD offset
, DWORD length
, DWORD max
, DWORD flags
);
773 void* BASSDEF(BASS_SampleCreate
)(DWORD length
, DWORD freq
, DWORD chans
, DWORD max
, DWORD flags
);
774 HSAMPLE
BASSDEF(BASS_SampleCreateDone
)();
775 BOOL
BASSDEF(BASS_SampleFree
)(HSAMPLE handle
);
776 BOOL
BASSDEF(BASS_SampleGetInfo
)(HSAMPLE handle
, BASS_SAMPLE
*info
);
777 BOOL
BASSDEF(BASS_SampleSetInfo
)(HSAMPLE handle
, const BASS_SAMPLE
*info
);
778 HCHANNEL
BASSDEF(BASS_SampleGetChannel
)(HSAMPLE handle
, BOOL onlynew
);
779 DWORD
BASSDEF(BASS_SampleGetChannels
)(HSAMPLE handle
, HCHANNEL
*channels
);
780 BOOL
BASSDEF(BASS_SampleStop
)(HSAMPLE handle
);
782 HSTREAM
BASSDEF(BASS_StreamCreate
)(DWORD freq
, DWORD chans
, DWORD flags
, STREAMPROC
*proc
, DWORD user
);
783 HSTREAM
BASSDEF(BASS_StreamCreateFile
)(BOOL mem
, const void *file
, DWORD offset
, DWORD length
, DWORD flags
);
784 HSTREAM
BASSDEF(BASS_StreamCreateURL
)(const char *url
, DWORD offset
, DWORD flags
, DOWNLOADPROC
*proc
, DWORD user
);
785 HSTREAM
BASSDEF(BASS_StreamCreateFileUser
)(BOOL buffered
, DWORD flags
, STREAMFILEPROC
*proc
, DWORD user
);
786 BOOL
BASSDEF(BASS_StreamFree
)(HSTREAM handle
);
787 DWORD
BASSDEF(BASS_StreamGetFilePosition
)(HSTREAM handle
, DWORD mode
);
789 const char *BASSDEF(BASS_RecordGetDeviceDescription
)(DWORD device
);
790 BOOL
BASSDEF(BASS_RecordInit
)(int device
);
791 BOOL
BASSDEF(BASS_RecordSetDevice
)(DWORD device
);
792 DWORD
BASSDEF(BASS_RecordGetDevice
)();
793 BOOL
BASSDEF(BASS_RecordFree
)();
794 BOOL
BASSDEF(BASS_RecordGetInfo
)(BASS_RECORDINFO
*info
);
795 const char *BASSDEF(BASS_RecordGetInputName
)(int input
);
796 BOOL
BASSDEF(BASS_RecordSetInput
)(int input
, DWORD setting
);
797 DWORD
BASSDEF(BASS_RecordGetInput
)(int input
);
798 HRECORD
BASSDEF(BASS_RecordStart
)(DWORD freq
, DWORD chans
, DWORD flags
, RECORDPROC
*proc
, DWORD user
);
800 float BASSDEF(BASS_ChannelBytes2Seconds
)(DWORD handle
, QWORD pos
);
801 QWORD
BASSDEF(BASS_ChannelSeconds2Bytes
)(DWORD handle
, float pos
);
802 DWORD
BASSDEF(BASS_ChannelGetDevice
)(DWORD handle
);
803 BOOL
BASSDEF(BASS_ChannelSetDevice
)(DWORD handle
, DWORD device
);
804 DWORD
BASSDEF(BASS_ChannelIsActive
)(DWORD handle
);
805 BOOL
BASSDEF(BASS_ChannelGetInfo
)(DWORD handle
, BASS_CHANNELINFO
*info
);
806 const char *BASSDEF(BASS_ChannelGetTags
)(DWORD handle
, DWORD tags
);
807 BOOL
BASSDEF(BASS_ChannelSetFlags
)(DWORD handle
, DWORD flags
);
808 BOOL
BASSDEF(BASS_ChannelPreBuf
)(DWORD handle
, DWORD length
);
809 BOOL
BASSDEF(BASS_ChannelPlay
)(DWORD handle
, BOOL restart
);
810 BOOL
BASSDEF(BASS_ChannelStop
)(DWORD handle
);
811 BOOL
BASSDEF(BASS_ChannelPause
)(DWORD handle
);
812 BOOL
BASSDEF(BASS_ChannelSetAttributes
)(DWORD handle
, int freq
, int volume
, int pan
);
813 BOOL
BASSDEF(BASS_ChannelGetAttributes
)(DWORD handle
, DWORD
*freq
, DWORD
*volume
, int *pan
);
814 BOOL
BASSDEF(BASS_ChannelSlideAttributes
)(DWORD handle
, int freq
, int volume
, int pan
, DWORD time
);
815 DWORD
BASSDEF(BASS_ChannelIsSliding
)(DWORD handle
);
816 BOOL
BASSDEF(BASS_ChannelSet3DAttributes
)(DWORD handle
, int mode
, float min
, float max
, int iangle
, int oangle
, int outvol
);
817 BOOL
BASSDEF(BASS_ChannelGet3DAttributes
)(DWORD handle
, DWORD
*mode
, float *min
, float *max
, DWORD
*iangle
, DWORD
*oangle
, DWORD
*outvol
);
818 BOOL
BASSDEF(BASS_ChannelSet3DPosition
)(DWORD handle
, const BASS_3DVECTOR
*pos
, const BASS_3DVECTOR
*orient
, const BASS_3DVECTOR
*vel
);
819 BOOL
BASSDEF(BASS_ChannelGet3DPosition
)(DWORD handle
, BASS_3DVECTOR
*pos
, BASS_3DVECTOR
*orient
, BASS_3DVECTOR
*vel
);
820 QWORD
BASSDEF(BASS_ChannelGetLength
)(DWORD handle
);
821 BOOL
BASSDEF(BASS_ChannelSetPosition
)(DWORD handle
, QWORD pos
);
822 QWORD
BASSDEF(BASS_ChannelGetPosition
)(DWORD handle
);
823 DWORD
BASSDEF(BASS_ChannelGetLevel
)(DWORD handle
);
824 DWORD
BASSDEF(BASS_ChannelGetData
)(DWORD handle
, void *buffer
, DWORD length
);
825 HSYNC
BASSDEF(BASS_ChannelSetSync
)(DWORD handle
, DWORD type
, QWORD param
, SYNCPROC
*proc
, DWORD user
);
826 BOOL
BASSDEF(BASS_ChannelRemoveSync
)(DWORD handle
, HSYNC sync
);
827 HDSP
BASSDEF(BASS_ChannelSetDSP
)(DWORD handle
, DSPPROC
*proc
, DWORD user
, int priority
);
828 BOOL
BASSDEF(BASS_ChannelRemoveDSP
)(DWORD handle
, HDSP dsp
);
829 BOOL
BASSDEF(BASS_ChannelSetLink
)(DWORD handle
, DWORD chan
);
830 BOOL
BASSDEF(BASS_ChannelRemoveLink
)(DWORD handle
, DWORD chan
);
832 BOOL
BASSDEF(BASS_ChannelSetEAXMix
)(DWORD handle
, float mix
);
833 BOOL
BASSDEF(BASS_ChannelGetEAXMix
)(DWORD handle
, float *mix
);
834 HFX
BASSDEF(BASS_ChannelSetFX
)(DWORD handle
, DWORD type
, DWORD priority
);
835 BOOL
BASSDEF(BASS_ChannelRemoveFX
)(DWORD handle
, HFX fx
);
837 BOOL
BASSDEF(BASS_FXSetParameters
)(HFX handle
, const void *par
);
838 BOOL
BASSDEF(BASS_FXGetParameters
)(HFX handle
, void *par
);