LIDL Soundboard  1.9.0
A simple soundboard, yet better than EXP Soundboard forsenE
bass.h
Go to the documentation of this file.
1 /*
2  BASS 2.4 C/C++ header file
3  Copyright (c) 1999-2018 Un4seen Developments Ltd.
4 
5  See the BASS.CHM file for more detailed documentation
6 */
7 
8 #ifndef BASS_H
9 #define BASS_H
10 
11 #ifdef _WIN32
12 #include <wtypes.h>
13 typedef unsigned __int64 QWORD;
14 #else
15 #include <stdint.h>
16 #define WINAPI
17 #define CALLBACK
18 typedef uint8_t BYTE;
19 typedef uint16_t WORD;
20 typedef uint32_t DWORD;
21 typedef uint64_t QWORD;
22 #ifndef __OBJC__
23 typedef int BOOL;
24 #endif
25 #ifndef TRUE
26 #define TRUE 1
27 #define FALSE 0
28 #endif
29 #define LOBYTE(a) (BYTE)(a)
30 #define HIBYTE(a) (BYTE)((a)>>8)
31 #define LOWORD(a) (WORD)(a)
32 #define HIWORD(a) (WORD)((a)>>16)
33 #define MAKEWORD(a,b) (WORD)(((a)&0xff)|((b)<<8))
34 #define MAKELONG(a,b) (DWORD)(((a)&0xffff)|((b)<<16))
35 #endif
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 #define BASSVERSION 0x204 // API version
42 #define BASSVERSIONTEXT "2.4"
43 
44 #ifndef BASSDEF
45 #define BASSDEF(f) WINAPI f
46 #else
47 #define NOBASSOVERLOADS
48 #endif
49 
50 typedef DWORD HMUSIC; // MOD music handle
51 typedef DWORD HSAMPLE; // sample handle
52 typedef DWORD HCHANNEL; // playing sample's channel handle
53 typedef DWORD HSTREAM; // sample stream handle
54 typedef DWORD HRECORD; // recording handle
55 typedef DWORD HSYNC; // synchronizer handle
56 typedef DWORD HDSP; // DSP handle
57 typedef DWORD HFX; // DX8 effect handle
58 typedef DWORD HPLUGIN; // Plugin handle
59 
60 // Error codes returned by BASS_ErrorGetCode
61 #define BASS_OK 0 // all is OK
62 #define BASS_ERROR_MEM 1 // memory error
63 #define BASS_ERROR_FILEOPEN 2 // can't open the file
64 #define BASS_ERROR_DRIVER 3 // can't find a free/valid driver
65 #define BASS_ERROR_BUFLOST 4 // the sample buffer was lost
66 #define BASS_ERROR_HANDLE 5 // invalid handle
67 #define BASS_ERROR_FORMAT 6 // unsupported sample format
68 #define BASS_ERROR_POSITION 7 // invalid position
69 #define BASS_ERROR_INIT 8 // BASS_Init has not been successfully called
70 #define BASS_ERROR_START 9 // BASS_Start has not been successfully called
71 #define BASS_ERROR_SSL 10 // SSL/HTTPS support isn't available
72 #define BASS_ERROR_ALREADY 14 // already initialized/paused/whatever
73 #define BASS_ERROR_NOCHAN 18 // can't get a free channel
74 #define BASS_ERROR_ILLTYPE 19 // an illegal type was specified
75 #define BASS_ERROR_ILLPARAM 20 // an illegal parameter was specified
76 #define BASS_ERROR_NO3D 21 // no 3D support
77 #define BASS_ERROR_NOEAX 22 // no EAX support
78 #define BASS_ERROR_DEVICE 23 // illegal device number
79 #define BASS_ERROR_NOPLAY 24 // not playing
80 #define BASS_ERROR_FREQ 25 // illegal sample rate
81 #define BASS_ERROR_NOTFILE 27 // the stream is not a file stream
82 #define BASS_ERROR_NOHW 29 // no hardware voices available
83 #define BASS_ERROR_EMPTY 31 // the MOD music has no sequence data
84 #define BASS_ERROR_NONET 32 // no internet connection could be opened
85 #define BASS_ERROR_CREATE 33 // couldn't create the file
86 #define BASS_ERROR_NOFX 34 // effects are not available
87 #define BASS_ERROR_NOTAVAIL 37 // requested data/action is not available
88 #define BASS_ERROR_DECODE 38 // the channel is/isn't a "decoding channel"
89 #define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed
90 #define BASS_ERROR_TIMEOUT 40 // connection timedout
91 #define BASS_ERROR_FILEFORM 41 // unsupported file format
92 #define BASS_ERROR_SPEAKER 42 // unavailable speaker
93 #define BASS_ERROR_VERSION 43 // invalid BASS version (used by add-ons)
94 #define BASS_ERROR_CODEC 44 // codec is not available/supported
95 #define BASS_ERROR_ENDED 45 // the channel/file has ended
96 #define BASS_ERROR_BUSY 46 // the device is busy
97 #define BASS_ERROR_UNKNOWN -1 // some other mystery problem
98 
99 // BASS_SetConfig options
100 #define BASS_CONFIG_BUFFER 0
101 #define BASS_CONFIG_UPDATEPERIOD 1
102 #define BASS_CONFIG_GVOL_SAMPLE 4
103 #define BASS_CONFIG_GVOL_STREAM 5
104 #define BASS_CONFIG_GVOL_MUSIC 6
105 #define BASS_CONFIG_CURVE_VOL 7
106 #define BASS_CONFIG_CURVE_PAN 8
107 #define BASS_CONFIG_FLOATDSP 9
108 #define BASS_CONFIG_3DALGORITHM 10
109 #define BASS_CONFIG_NET_TIMEOUT 11
110 #define BASS_CONFIG_NET_BUFFER 12
111 #define BASS_CONFIG_PAUSE_NOPLAY 13
112 #define BASS_CONFIG_NET_PREBUF 15
113 #define BASS_CONFIG_NET_PASSIVE 18
114 #define BASS_CONFIG_REC_BUFFER 19
115 #define BASS_CONFIG_NET_PLAYLIST 21
116 #define BASS_CONFIG_MUSIC_VIRTUAL 22
117 #define BASS_CONFIG_VERIFY 23
118 #define BASS_CONFIG_UPDATETHREADS 24
119 #define BASS_CONFIG_DEV_BUFFER 27
120 #define BASS_CONFIG_VISTA_TRUEPOS 30
121 #define BASS_CONFIG_IOS_MIXAUDIO 34
122 #define BASS_CONFIG_DEV_DEFAULT 36
123 #define BASS_CONFIG_NET_READTIMEOUT 37
124 #define BASS_CONFIG_VISTA_SPEAKERS 38
125 #define BASS_CONFIG_IOS_SPEAKER 39
126 #define BASS_CONFIG_MF_DISABLE 40
127 #define BASS_CONFIG_HANDLES 41
128 #define BASS_CONFIG_UNICODE 42
129 #define BASS_CONFIG_SRC 43
130 #define BASS_CONFIG_SRC_SAMPLE 44
131 #define BASS_CONFIG_ASYNCFILE_BUFFER 45
132 #define BASS_CONFIG_OGG_PRESCAN 47
133 #define BASS_CONFIG_MF_VIDEO 48
134 #define BASS_CONFIG_AIRPLAY 49
135 #define BASS_CONFIG_DEV_NONSTOP 50
136 #define BASS_CONFIG_IOS_NOCATEGORY 51
137 #define BASS_CONFIG_VERIFY_NET 52
138 #define BASS_CONFIG_DEV_PERIOD 53
139 #define BASS_CONFIG_FLOAT 54
140 #define BASS_CONFIG_NET_SEEK 56
141 #define BASS_CONFIG_AM_DISABLE 58
142 #define BASS_CONFIG_NET_PLAYLIST_DEPTH 59
143 #define BASS_CONFIG_NET_PREBUF_WAIT 60
144 
145 // BASS_SetConfigPtr options
146 #define BASS_CONFIG_NET_AGENT 16
147 #define BASS_CONFIG_NET_PROXY 17
148 #define BASS_CONFIG_IOS_NOTIFY 46
149 
150 // BASS_Init flags
151 #define BASS_DEVICE_8BITS 1 // 8 bit
152 #define BASS_DEVICE_MONO 2 // mono
153 #define BASS_DEVICE_3D 4 // enable 3D functionality
154 #define BASS_DEVICE_16BITS 8 // limit output to 16 bit
155 #define BASS_DEVICE_LATENCY 0x100 // calculate device latency (BASS_INFO struct)
156 #define BASS_DEVICE_CPSPEAKERS 0x400 // detect speakers via Windows control panel
157 #define BASS_DEVICE_SPEAKERS 0x800 // force enabling of speaker assignment
158 #define BASS_DEVICE_NOSPEAKER 0x1000 // ignore speaker arrangement
159 #define BASS_DEVICE_DMIX 0x2000 // use ALSA "dmix" plugin
160 #define BASS_DEVICE_FREQ 0x4000 // set device sample rate
161 #define BASS_DEVICE_STEREO 0x8000 // limit output to stereo
162 #define BASS_DEVICE_HOG 0x10000 // hog/exclusive mode
163 #define BASS_DEVICE_AUDIOTRACK 0x20000 // use AudioTrack output
164 #define BASS_DEVICE_DSOUND 0x40000 // use DirectSound output
165 
166 // DirectSound interfaces (for use with BASS_GetDSoundObject)
167 #define BASS_OBJECT_DS 1 // IDirectSound
168 #define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener
169 
170 // Device info structure
171 typedef struct {
172 #if defined(_WIN32_WCE) || (WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP)
173  const wchar_t *name; // description
174  const wchar_t *driver; // driver
175 #else
176  const char *name; // description
177  const char *driver; // driver
178 #endif
181 
182 // BASS_DEVICEINFO flags
183 #define BASS_DEVICE_ENABLED 1
184 #define BASS_DEVICE_DEFAULT 2
185 #define BASS_DEVICE_INIT 4
186 #define BASS_DEVICE_LOOPBACK 8
187 
188 #define BASS_DEVICE_TYPE_MASK 0xff000000
189 #define BASS_DEVICE_TYPE_NETWORK 0x01000000
190 #define BASS_DEVICE_TYPE_SPEAKERS 0x02000000
191 #define BASS_DEVICE_TYPE_LINE 0x03000000
192 #define BASS_DEVICE_TYPE_HEADPHONES 0x04000000
193 #define BASS_DEVICE_TYPE_MICROPHONE 0x05000000
194 #define BASS_DEVICE_TYPE_HEADSET 0x06000000
195 #define BASS_DEVICE_TYPE_HANDSET 0x07000000
196 #define BASS_DEVICE_TYPE_DIGITAL 0x08000000
197 #define BASS_DEVICE_TYPE_SPDIF 0x09000000
198 #define BASS_DEVICE_TYPE_HDMI 0x0a000000
199 #define BASS_DEVICE_TYPE_DISPLAYPORT 0x40000000
200 
201 // BASS_GetDeviceInfo flags
202 #define BASS_DEVICES_AIRPLAY 0x1000000
203 
204 typedef struct {
205  DWORD flags; // device capabilities (DSCAPS_xxx flags)
206  DWORD hwsize; // size of total device hardware memory
207  DWORD hwfree; // size of free device hardware memory
208  DWORD freesam; // number of free sample slots in the hardware
209  DWORD free3d; // number of free 3D sample slots in the hardware
210  DWORD minrate; // min sample rate supported by the hardware
211  DWORD maxrate; // max sample rate supported by the hardware
212  BOOL eax; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used)
213  DWORD minbuf; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
214  DWORD dsver; // DirectSound version
215  DWORD latency; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
216  DWORD initflags; // BASS_Init "flags" parameter
217  DWORD speakers; // number of speakers available
218  DWORD freq; // current output rate
219 } BASS_INFO;
220 
221 // BASS_INFO flags (from DSOUND.H)
222 #define DSCAPS_CONTINUOUSRATE 0x00000010 // supports all sample rates between min/maxrate
223 #define DSCAPS_EMULDRIVER 0x00000020 // device does NOT have hardware DirectSound support
224 #define DSCAPS_CERTIFIED 0x00000040 // device driver has been certified by Microsoft
225 #define DSCAPS_SECONDARYMONO 0x00000100 // mono
226 #define DSCAPS_SECONDARYSTEREO 0x00000200 // stereo
227 #define DSCAPS_SECONDARY8BIT 0x00000400 // 8 bit
228 #define DSCAPS_SECONDARY16BIT 0x00000800 // 16 bit
229 
230 // Recording device info structure
231 typedef struct {
232  DWORD flags; // device capabilities (DSCCAPS_xxx flags)
233  DWORD formats; // supported standard formats (WAVE_FORMAT_xxx flags)
234  DWORD inputs; // number of inputs
235  BOOL singlein; // TRUE = only 1 input can be set at a time
236  DWORD freq; // current input rate
238 
239 // BASS_RECORDINFO flags (from DSOUND.H)
240 #define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER // device does NOT have hardware DirectSound recording support
241 #define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED // device driver has been certified by Microsoft
242 
243 // defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)
244 #ifndef WAVE_FORMAT_1M08
245 #define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
246 #define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
247 #define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
248 #define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
249 #define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
250 #define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
251 #define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
252 #define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
253 #define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
254 #define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
255 #define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
256 #define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */
257 #endif
258 
259 // Sample info structure
260 typedef struct {
261  DWORD freq; // default playback rate
262  float volume; // default volume (0-1)
263  float pan; // default pan (-1=left, 0=middle, 1=right)
264  DWORD flags; // BASS_SAMPLE_xxx flags
265  DWORD length; // length (in bytes)
266  DWORD max; // maximum simultaneous playbacks
267  DWORD origres; // original resolution
268  DWORD chans; // number of channels
269  DWORD mingap; // minimum gap (ms) between creating channels
270  DWORD mode3d; // BASS_3DMODE_xxx mode
271  float mindist; // minimum distance
272  float maxdist; // maximum distance
273  DWORD iangle; // angle of inside projection cone
274  DWORD oangle; // angle of outside projection cone
275  float outvol; // delta-volume outside the projection cone
276  DWORD vam; // voice allocation/management flags (BASS_VAM_xxx)
277  DWORD priority; // priority (0=lowest, 0xffffffff=highest)
278 } BASS_SAMPLE;
279 
280 #define BASS_SAMPLE_8BITS 1 // 8 bit
281 #define BASS_SAMPLE_FLOAT 256 // 32 bit floating-point
282 #define BASS_SAMPLE_MONO 2 // mono
283 #define BASS_SAMPLE_LOOP 4 // looped
284 #define BASS_SAMPLE_3D 8 // 3D functionality
285 #define BASS_SAMPLE_SOFTWARE 16 // not using hardware mixing
286 #define BASS_SAMPLE_MUTEMAX 32 // mute at max distance (3D only)
287 #define BASS_SAMPLE_VAM 64 // DX7 voice allocation & management
288 #define BASS_SAMPLE_FX 128 // old implementation of DX8 effects
289 #define BASS_SAMPLE_OVER_VOL 0x10000 // override lowest volume
290 #define BASS_SAMPLE_OVER_POS 0x20000 // override longest playing
291 #define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only)
292 
293 #define BASS_STREAM_PRESCAN 0x20000 // enable pin-point seeking/length (MP3/MP2/MP1)
294 #define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stop/ends
295 #define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file streams
296 #define BASS_STREAM_BLOCK 0x100000 // download/play internet file stream in small blocks
297 #define BASS_STREAM_DECODE 0x200000 // don't play the stream, only decode (BASS_ChannelGetData)
298 #define BASS_STREAM_STATUS 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC
299 
300 #define BASS_MP3_IGNOREDELAY 0x200 // ignore LAME/Xing/VBRI/iTunes delay & padding info
301 #define BASS_MP3_SETPOS BASS_STREAM_PRESCAN
302 
303 #define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT
304 #define BASS_MUSIC_MONO BASS_SAMPLE_MONO
305 #define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP
306 #define BASS_MUSIC_3D BASS_SAMPLE_3D
307 #define BASS_MUSIC_FX BASS_SAMPLE_FX
308 #define BASS_MUSIC_AUTOFREE BASS_STREAM_AUTOFREE
309 #define BASS_MUSIC_DECODE BASS_STREAM_DECODE
310 #define BASS_MUSIC_PRESCAN BASS_STREAM_PRESCAN // calculate playback length
311 #define BASS_MUSIC_CALCLEN BASS_MUSIC_PRESCAN
312 #define BASS_MUSIC_RAMP 0x200 // normal ramping
313 #define BASS_MUSIC_RAMPS 0x400 // sensitive ramping
314 #define BASS_MUSIC_SURROUND 0x800 // surround sound
315 #define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2)
316 #define BASS_MUSIC_FT2PAN 0x2000 // apply FastTracker 2 panning to XM files
317 #define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does
318 #define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does
319 #define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing
320 #define BASS_MUSIC_SINCINTER 0x800000 // sinc interpolated sample mixing
321 #define BASS_MUSIC_POSRESET 0x8000 // stop all notes when moving position
322 #define BASS_MUSIC_POSRESETEX 0x400000 // stop all notes and reset bmp/etc when moving position
323 #define BASS_MUSIC_STOPBACK 0x80000 // stop the music on a backwards jump effect
324 #define BASS_MUSIC_NOSAMPLE 0x100000 // don't load the samples
325 
326 // Speaker assignment flags
327 #define BASS_SPEAKER_FRONT 0x1000000 // front speakers
328 #define BASS_SPEAKER_REAR 0x2000000 // rear/side speakers
329 #define BASS_SPEAKER_CENLFE 0x3000000 // center & LFE speakers (5.1)
330 #define BASS_SPEAKER_REAR2 0x4000000 // rear center speakers (7.1)
331 #define BASS_SPEAKER_N(n) ((n)<<24) // n'th pair of speakers (max 15)
332 #define BASS_SPEAKER_LEFT 0x10000000 // modifier: left
333 #define BASS_SPEAKER_RIGHT 0x20000000 // modifier: right
334 #define BASS_SPEAKER_FRONTLEFT BASS_SPEAKER_FRONT|BASS_SPEAKER_LEFT
335 #define BASS_SPEAKER_FRONTRIGHT BASS_SPEAKER_FRONT|BASS_SPEAKER_RIGHT
336 #define BASS_SPEAKER_REARLEFT BASS_SPEAKER_REAR|BASS_SPEAKER_LEFT
337 #define BASS_SPEAKER_REARRIGHT BASS_SPEAKER_REAR|BASS_SPEAKER_RIGHT
338 #define BASS_SPEAKER_CENTER BASS_SPEAKER_CENLFE|BASS_SPEAKER_LEFT
339 #define BASS_SPEAKER_LFE BASS_SPEAKER_CENLFE|BASS_SPEAKER_RIGHT
340 #define BASS_SPEAKER_REAR2LEFT BASS_SPEAKER_REAR2|BASS_SPEAKER_LEFT
341 #define BASS_SPEAKER_REAR2RIGHT BASS_SPEAKER_REAR2|BASS_SPEAKER_RIGHT
342 
343 #define BASS_ASYNCFILE 0x40000000
344 #define BASS_UNICODE 0x80000000
345 
346 #define BASS_RECORD_PAUSE 0x8000 // start recording paused
347 #define BASS_RECORD_ECHOCANCEL 0x2000
348 #define BASS_RECORD_AGC 0x4000
349 
350 // DX7 voice allocation & management flags
351 #define BASS_VAM_HARDWARE 1
352 #define BASS_VAM_SOFTWARE 2
353 #define BASS_VAM_TERM_TIME 4
354 #define BASS_VAM_TERM_DIST 8
355 #define BASS_VAM_TERM_PRIO 16
356 
357 // Channel info structure
358 typedef struct {
359  DWORD freq; // default playback rate
360  DWORD chans; // channels
361  DWORD flags; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
362  DWORD ctype; // type of channel
363  DWORD origres; // original resolution
364  HPLUGIN plugin; // plugin
365  HSAMPLE sample; // sample
366  const char *filename; // filename
368 
369 #define BASS_ORIGRES_FLOAT 0x10000
370 
371 // BASS_CHANNELINFO types
372 #define BASS_CTYPE_SAMPLE 1
373 #define BASS_CTYPE_RECORD 2
374 #define BASS_CTYPE_STREAM 0x10000
375 #define BASS_CTYPE_STREAM_OGG 0x10002
376 #define BASS_CTYPE_STREAM_MP1 0x10003
377 #define BASS_CTYPE_STREAM_MP2 0x10004
378 #define BASS_CTYPE_STREAM_MP3 0x10005
379 #define BASS_CTYPE_STREAM_AIFF 0x10006
380 #define BASS_CTYPE_STREAM_CA 0x10007
381 #define BASS_CTYPE_STREAM_MF 0x10008
382 #define BASS_CTYPE_STREAM_AM 0x10009
383 #define BASS_CTYPE_STREAM_DUMMY 0x18000
384 #define BASS_CTYPE_STREAM_DEVICE 0x18001
385 #define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec
386 #define BASS_CTYPE_STREAM_WAV_PCM 0x50001
387 #define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003
388 #define BASS_CTYPE_MUSIC_MOD 0x20000
389 #define BASS_CTYPE_MUSIC_MTM 0x20001
390 #define BASS_CTYPE_MUSIC_S3M 0x20002
391 #define BASS_CTYPE_MUSIC_XM 0x20003
392 #define BASS_CTYPE_MUSIC_IT 0x20004
393 #define BASS_CTYPE_MUSIC_MO3 0x00100 // MO3 flag
394 
395 typedef struct {
396  DWORD ctype; // channel type
397 #if defined(_WIN32_WCE) || (WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP)
398  const wchar_t *name; // format description
399  const wchar_t *exts; // file extension filter (*.ext1;*.ext2;etc...)
400 #else
401  const char *name; // format description
402  const char *exts; // file extension filter (*.ext1;*.ext2;etc...)
403 #endif
405 
406 typedef struct {
407  DWORD version; // version (same form as BASS_GetVersion)
408  DWORD formatc; // number of formats
409  const BASS_PLUGINFORM *formats; // the array of formats
411 
412 // 3D vector (for 3D positions/velocities/orientations)
413 typedef struct BASS_3DVECTOR {
414 #ifdef __cplusplus
415  BASS_3DVECTOR() {};
416  BASS_3DVECTOR(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {};
417 #endif
418  float x; // +=right, -=left
419  float y; // +=up, -=down
420  float z; // +=front, -=behind
421 } BASS_3DVECTOR;
422 
423 // 3D channel modes
424 #define BASS_3DMODE_NORMAL 0 // normal 3D processing
425 #define BASS_3DMODE_RELATIVE 1 // position is relative to the listener
426 #define BASS_3DMODE_OFF 2 // no 3D processing
427 
428 // software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
429 #define BASS_3DALG_DEFAULT 0
430 #define BASS_3DALG_OFF 1
431 #define BASS_3DALG_FULL 2
432 #define BASS_3DALG_LIGHT 3
433 
434 // EAX environments, use with BASS_SetEAXParameters
435 enum
436 {
463 
464  EAX_ENVIRONMENT_COUNT // total number of environments
465 };
466 
467 // EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx)
468 #define EAX_PRESET_GENERIC EAX_ENVIRONMENT_GENERIC,0.5F,1.493F,0.5F
469 #define EAX_PRESET_PADDEDCELL EAX_ENVIRONMENT_PADDEDCELL,0.25F,0.1F,0.0F
470 #define EAX_PRESET_ROOM EAX_ENVIRONMENT_ROOM,0.417F,0.4F,0.666F
471 #define EAX_PRESET_BATHROOM EAX_ENVIRONMENT_BATHROOM,0.653F,1.499F,0.166F
472 #define EAX_PRESET_LIVINGROOM EAX_ENVIRONMENT_LIVINGROOM,0.208F,0.478F,0.0F
473 #define EAX_PRESET_STONEROOM EAX_ENVIRONMENT_STONEROOM,0.5F,2.309F,0.888F
474 #define EAX_PRESET_AUDITORIUM EAX_ENVIRONMENT_AUDITORIUM,0.403F,4.279F,0.5F
475 #define EAX_PRESET_CONCERTHALL EAX_ENVIRONMENT_CONCERTHALL,0.5F,3.961F,0.5F
476 #define EAX_PRESET_CAVE EAX_ENVIRONMENT_CAVE,0.5F,2.886F,1.304F
477 #define EAX_PRESET_ARENA EAX_ENVIRONMENT_ARENA,0.361F,7.284F,0.332F
478 #define EAX_PRESET_HANGAR EAX_ENVIRONMENT_HANGAR,0.5F,10.0F,0.3F
479 #define EAX_PRESET_CARPETEDHALLWAY EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153F,0.259F,2.0F
480 #define EAX_PRESET_HALLWAY EAX_ENVIRONMENT_HALLWAY,0.361F,1.493F,0.0F
481 #define EAX_PRESET_STONECORRIDOR EAX_ENVIRONMENT_STONECORRIDOR,0.444F,2.697F,0.638F
482 #define EAX_PRESET_ALLEY EAX_ENVIRONMENT_ALLEY,0.25F,1.752F,0.776F
483 #define EAX_PRESET_FOREST EAX_ENVIRONMENT_FOREST,0.111F,3.145F,0.472F
484 #define EAX_PRESET_CITY EAX_ENVIRONMENT_CITY,0.111F,2.767F,0.224F
485 #define EAX_PRESET_MOUNTAINS EAX_ENVIRONMENT_MOUNTAINS,0.194F,7.841F,0.472F
486 #define EAX_PRESET_QUARRY EAX_ENVIRONMENT_QUARRY,1.0F,1.499F,0.5F
487 #define EAX_PRESET_PLAIN EAX_ENVIRONMENT_PLAIN,0.097F,2.767F,0.224F
488 #define EAX_PRESET_PARKINGLOT EAX_ENVIRONMENT_PARKINGLOT,0.208F,1.652F,1.5F
489 #define EAX_PRESET_SEWERPIPE EAX_ENVIRONMENT_SEWERPIPE,0.652F,2.886F,0.25F
490 #define EAX_PRESET_UNDERWATER EAX_ENVIRONMENT_UNDERWATER,1.0F,1.499F,0.0F
491 #define EAX_PRESET_DRUGGED EAX_ENVIRONMENT_DRUGGED,0.875F,8.392F,1.388F
492 #define EAX_PRESET_DIZZY EAX_ENVIRONMENT_DIZZY,0.139F,17.234F,0.666F
493 #define EAX_PRESET_PSYCHOTIC EAX_ENVIRONMENT_PSYCHOTIC,0.486F,7.563F,0.806F
494 
495 typedef DWORD (CALLBACK STREAMPROC)(HSTREAM handle, void *buffer, DWORD length, void *user);
496 /* User stream callback function. NOTE: A stream function should obviously be as quick
497 as possible, other streams (and MOD musics) can't be mixed until it's finished.
498 handle : The stream that needs writing
499 buffer : Buffer to write the samples in
500 length : Number of bytes to write
501 user : The 'user' parameter value given when calling BASS_StreamCreate
502 RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end the stream. */
503 
504 #define BASS_STREAMPROC_END 0x80000000 // end of user stream flag
505 
506 // special STREAMPROCs
507 #define STREAMPROC_DUMMY (STREAMPROC*)0 // "dummy" stream
508 #define STREAMPROC_PUSH (STREAMPROC*)-1 // push stream
509 #define STREAMPROC_DEVICE (STREAMPROC*)-2 // device mix stream
510 
511 // BASS_StreamCreateFileUser file systems
512 #define STREAMFILE_NOBUFFER 0
513 #define STREAMFILE_BUFFER 1
514 #define STREAMFILE_BUFFERPUSH 2
515 
516 // User file stream callback functions
517 typedef void (CALLBACK FILECLOSEPROC)(void *user);
518 typedef QWORD (CALLBACK FILELENPROC)(void *user);
519 typedef DWORD (CALLBACK FILEREADPROC)(void *buffer, DWORD length, void *user);
520 typedef BOOL (CALLBACK FILESEEKPROC)(QWORD offset, void *user);
521 
522 typedef struct {
523  FILECLOSEPROC *close;
524  FILELENPROC *length;
525  FILEREADPROC *read;
526  FILESEEKPROC *seek;
528 
529 // BASS_StreamPutFileData options
530 #define BASS_FILEDATA_END 0 // end & close the file
531 
532 // BASS_StreamGetFilePosition modes
533 #define BASS_FILEPOS_CURRENT 0
534 #define BASS_FILEPOS_DECODE BASS_FILEPOS_CURRENT
535 #define BASS_FILEPOS_DOWNLOAD 1
536 #define BASS_FILEPOS_END 2
537 #define BASS_FILEPOS_START 3
538 #define BASS_FILEPOS_CONNECTED 4
539 #define BASS_FILEPOS_BUFFER 5
540 #define BASS_FILEPOS_SOCKET 6
541 #define BASS_FILEPOS_ASYNCBUF 7
542 #define BASS_FILEPOS_SIZE 8
543 #define BASS_FILEPOS_BUFFERING 9
544 
545 typedef void (CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, void *user);
546 /* Internet stream download callback function.
547 buffer : Buffer containing the downloaded data... NULL=end of download
548 length : Number of bytes in the buffer
549 user : The 'user' parameter value given when calling BASS_StreamCreateURL */
550 
551 // BASS_ChannelSetSync types
552 #define BASS_SYNC_POS 0
553 #define BASS_SYNC_END 2
554 #define BASS_SYNC_META 4
555 #define BASS_SYNC_SLIDE 5
556 #define BASS_SYNC_STALL 6
557 #define BASS_SYNC_DOWNLOAD 7
558 #define BASS_SYNC_FREE 8
559 #define BASS_SYNC_SETPOS 11
560 #define BASS_SYNC_MUSICPOS 10
561 #define BASS_SYNC_MUSICINST 1
562 #define BASS_SYNC_MUSICFX 3
563 #define BASS_SYNC_OGG_CHANGE 12
564 #define BASS_SYNC_MIXTIME 0x40000000 // flag: sync at mixtime, else at playtime
565 #define BASS_SYNC_ONETIME 0x80000000 // flag: sync only once, else continuously
566 
567 typedef void (CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void *user);
568 /* Sync callback function. NOTE: a sync callback function should be very
569 quick as other syncs can't be processed until it has finished. If the sync
570 is a "mixtime" sync, then other streams and MOD musics can't be mixed until
571 it's finished either.
572 handle : The sync that has occured
573 channel: Channel that the sync occured in
574 data : Additional data associated with the sync's occurance
575 user : The 'user' parameter given when calling BASS_ChannelSetSync */
576 
577 typedef void (CALLBACK DSPPROC)(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user);
578 /* DSP callback function. NOTE: A DSP function should obviously be as quick as
579 possible... other DSP functions, streams and MOD musics can not be processed
580 until it's finished.
581 handle : The DSP handle
582 channel: Channel that the DSP is being applied to
583 buffer : Buffer to apply the DSP to
584 length : Number of bytes in the buffer
585 user : The 'user' parameter given when calling BASS_ChannelSetDSP */
586 
587 typedef BOOL (CALLBACK RECORDPROC)(HRECORD handle, const void *buffer, DWORD length, void *user);
588 /* Recording callback function.
589 handle : The recording handle
590 buffer : Buffer containing the recorded sample data
591 length : Number of bytes
592 user : The 'user' parameter value given when calling BASS_RecordStart
593 RETURN : TRUE = continue recording, FALSE = stop */
594 
595 // BASS_ChannelIsActive return values
596 #define BASS_ACTIVE_STOPPED 0
597 #define BASS_ACTIVE_PLAYING 1
598 #define BASS_ACTIVE_STALLED 2
599 #define BASS_ACTIVE_PAUSED 3
600 
601 // Channel attributes
602 #define BASS_ATTRIB_FREQ 1
603 #define BASS_ATTRIB_VOL 2
604 #define BASS_ATTRIB_PAN 3
605 #define BASS_ATTRIB_EAXMIX 4
606 #define BASS_ATTRIB_NOBUFFER 5
607 #define BASS_ATTRIB_VBR 6
608 #define BASS_ATTRIB_CPU 7
609 #define BASS_ATTRIB_SRC 8
610 #define BASS_ATTRIB_NET_RESUME 9
611 #define BASS_ATTRIB_SCANINFO 10
612 #define BASS_ATTRIB_NORAMP 11
613 #define BASS_ATTRIB_BITRATE 12
614 #define BASS_ATTRIB_BUFFER 13
615 #define BASS_ATTRIB_MUSIC_AMPLIFY 0x100
616 #define BASS_ATTRIB_MUSIC_PANSEP 0x101
617 #define BASS_ATTRIB_MUSIC_PSCALER 0x102
618 #define BASS_ATTRIB_MUSIC_BPM 0x103
619 #define BASS_ATTRIB_MUSIC_SPEED 0x104
620 #define BASS_ATTRIB_MUSIC_VOL_GLOBAL 0x105
621 #define BASS_ATTRIB_MUSIC_ACTIVE 0x106
622 #define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel #
623 #define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument #
624 
625 // BASS_ChannelSlideAttribute flags
626 #define BASS_SLIDE_LOG 0x1000000
627 
628 // BASS_ChannelGetData flags
629 #define BASS_DATA_AVAILABLE 0 // query how much data is buffered
630 #define BASS_DATA_FIXED 0x20000000 // flag: return 8.24 fixed-point data
631 #define BASS_DATA_FLOAT 0x40000000 // flag: return floating-point sample data
632 #define BASS_DATA_FFT256 0x80000000 // 256 sample FFT
633 #define BASS_DATA_FFT512 0x80000001 // 512 FFT
634 #define BASS_DATA_FFT1024 0x80000002 // 1024 FFT
635 #define BASS_DATA_FFT2048 0x80000003 // 2048 FFT
636 #define BASS_DATA_FFT4096 0x80000004 // 4096 FFT
637 #define BASS_DATA_FFT8192 0x80000005 // 8192 FFT
638 #define BASS_DATA_FFT16384 0x80000006 // 16384 FFT
639 #define BASS_DATA_FFT32768 0x80000007 // 32768 FFT
640 #define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined
641 #define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window
642 #define BASS_DATA_FFT_REMOVEDC 0x40 // FFT flag: pre-remove DC bias
643 #define BASS_DATA_FFT_COMPLEX 0x80 // FFT flag: return complex data
644 
645 // BASS_ChannelGetLevelEx flags
646 #define BASS_LEVEL_MONO 1
647 #define BASS_LEVEL_STEREO 2
648 #define BASS_LEVEL_RMS 4
649 #define BASS_LEVEL_VOLPAN 8
650 
651 // BASS_ChannelGetTags types : what's returned
652 #define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure
653 #define BASS_TAG_ID3V2 1 // ID3v2 tags : variable length block
654 #define BASS_TAG_OGG 2 // OGG comments : series of null-terminated UTF-8 strings
655 #define BASS_TAG_HTTP 3 // HTTP headers : series of null-terminated ANSI strings
656 #define BASS_TAG_ICY 4 // ICY headers : series of null-terminated ANSI strings
657 #define BASS_TAG_META 5 // ICY metadata : ANSI string
658 #define BASS_TAG_APE 6 // APE tags : series of null-terminated UTF-8 strings
659 #define BASS_TAG_MP4 7 // MP4/iTunes metadata : series of null-terminated UTF-8 strings
660 #define BASS_TAG_WMA 8 // WMA tags : series of null-terminated UTF-8 strings
661 #define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string
662 #define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string
663 #define BASS_TAG_CA_CODEC 11 // CoreAudio codec info : TAG_CA_CODEC structure
664 #define BASS_TAG_MF 13 // Media Foundation tags : series of null-terminated UTF-8 strings
665 #define BASS_TAG_WAVEFORMAT 14 // WAVE format : WAVEFORMATEEX structure
666 #define BASS_TAG_AM_MIME 15 // Android Media MIME type : ASCII string
667 #define BASS_TAG_AM_NAME 16 // Android Media codec name : ASCII string
668 #define BASS_TAG_RIFF_INFO 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings
669 #define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF "bext" tags : TAG_BEXT structure
670 #define BASS_TAG_RIFF_CART 0x102 // RIFF/BWF "cart" tags : TAG_CART structure
671 #define BASS_TAG_RIFF_DISP 0x103 // RIFF "DISP" text tag : ANSI string
672 #define BASS_TAG_RIFF_CUE 0x104 // RIFF "cue " chunk : TAG_CUE structure
673 #define BASS_TAG_RIFF_SMPL 0x105 // RIFF "smpl" chunk : TAG_SMPL structure
674 #define BASS_TAG_APE_BINARY 0x1000 // + index #, binary APE tag : TAG_APE_BINARY structure
675 #define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string
676 #define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string
677 #define BASS_TAG_MUSIC_ORDERS 0x10002 // MOD order list : BYTE array of pattern numbers
678 #define BASS_TAG_MUSIC_AUTH 0x10003 // MOD author : UTF-8 string
679 #define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string
680 #define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string
681 
682 // ID3v1 tag structure
683 typedef struct {
684  char id[3];
685  char title[30];
686  char artist[30];
687  char album[30];
688  char year[4];
689  char comment[30];
691 } TAG_ID3;
692 
693 // Binary APE tag structure
694 typedef struct {
695  const char *key;
696  const void *data;
699 
700 // BWF "bext" tag structure
701 #ifdef _MSC_VER
702 #pragma warning(push)
703 #pragma warning(disable:4200)
704 #endif
705 #pragma pack(push,1)
706 typedef struct {
707  char Description[256]; // description
708  char Originator[32]; // name of the originator
709  char OriginatorReference[32]; // reference of the originator
710  char OriginationDate[10]; // date of creation (yyyy-mm-dd)
711  char OriginationTime[8]; // time of creation (hh-mm-ss)
712  QWORD TimeReference; // first sample count since midnight (little-endian)
713  WORD Version; // BWF version (little-endian)
714  BYTE UMID[64]; // SMPTE UMID
715  BYTE Reserved[190];
716 #if defined(__GNUC__) && __GNUC__<3
717  char CodingHistory[0]; // history
718 #elif 1 // change to 0 if compiler fails the following line
719  char CodingHistory[]; // history
720 #else
721  char CodingHistory[1]; // history
722 #endif
723 } TAG_BEXT;
724 #pragma pack(pop)
725 
726 // BWF "cart" tag structures
727 typedef struct
728 {
729  DWORD dwUsage; // FOURCC timer usage ID
730  DWORD dwValue; // timer value in samples from head
732 
733 typedef struct
734 {
735  char Version[4]; // version of the data structure
736  char Title[64]; // title of cart audio sequence
737  char Artist[64]; // artist or creator name
738  char CutID[64]; // cut number identification
739  char ClientID[64]; // client identification
740  char Category[64]; // category ID, PSA, NEWS, etc
741  char Classification[64]; // classification or auxiliary key
742  char OutCue[64]; // out cue text
743  char StartDate[10]; // yyyy-mm-dd
744  char StartTime[8]; // hh:mm:ss
745  char EndDate[10]; // yyyy-mm-dd
746  char EndTime[8]; // hh:mm:ss
747  char ProducerAppID[64]; // name of vendor or application
748  char ProducerAppVersion[64]; // version of producer application
749  char UserDef[64]; // user defined text
750  DWORD dwLevelReference; // sample value for 0 dB reference
751  TAG_CART_TIMER PostTimer[8]; // 8 time markers after head
752  char Reserved[276];
753  char URL[1024]; // uniform resource locator
754 #if defined(__GNUC__) && __GNUC__<3
755  char TagText[0]; // free form text for scripts or tags
756 #elif 1 // change to 0 if compiler fails the following line
757  char TagText[]; // free form text for scripts or tags
758 #else
759  char TagText[1]; // free form text for scripts or tags
760 #endif
761 } TAG_CART;
762 
763 // RIFF "cue " tag structures
764 typedef struct
765 {
772 } TAG_CUE_POINT;
773 
774 typedef struct
775 {
777 #if defined(__GNUC__) && __GNUC__<3
778  TAG_CUE_POINT CuePoints[0];
779 #elif 1 // change to 0 if compiler fails the following line
780  TAG_CUE_POINT CuePoints[];
781 #else
782  TAG_CUE_POINT CuePoints[1];
783 #endif
784 } TAG_CUE;
785 
786 // RIFF "smpl" tag structures
787 typedef struct
788 {
795 } TAG_SMPL_LOOP;
796 
797 typedef struct
798 {
808 #if defined(__GNUC__) && __GNUC__<3
809  TAG_SMPL_LOOP SampleLoops[0];
810 #elif 1 // change to 0 if compiler fails the following line
811  TAG_SMPL_LOOP SampleLoops[];
812 #else
813  TAG_SMPL_LOOP SampleLoops[1];
814 #endif
815 } TAG_SMPL;
816 #ifdef _MSC_VER
817 #pragma warning(pop)
818 #endif
819 
820 // CoreAudio codec info structure
821 typedef struct {
822  DWORD ftype; // file format
823  DWORD atype; // audio format
824  const char *name; // description
825 } TAG_CA_CODEC;
826 
827 #ifndef _WAVEFORMATEX_
828 #define _WAVEFORMATEX_
829 #pragma pack(push,1)
830 typedef struct tWAVEFORMATEX
831 {
841 #pragma pack(pop)
842 #endif
843 
844 // BASS_ChannelGetLength/GetPosition/SetPosition modes
845 #define BASS_POS_BYTE 0 // byte position
846 #define BASS_POS_MUSIC_ORDER 1 // order.row position, MAKELONG(order,row)
847 #define BASS_POS_OGG 3 // OGG bitstream number
848 #define BASS_POS_RESET 0x2000000 // flag: reset user file buffers
849 #define BASS_POS_RELATIVE 0x4000000 // flag: seek relative to the current position
850 #define BASS_POS_INEXACT 0x8000000 // flag: allow seeking to inexact position
851 #define BASS_POS_DECODE 0x10000000 // flag: get the decoding (not playing) position
852 #define BASS_POS_DECODETO 0x20000000 // flag: decode to the position instead of seeking
853 #define BASS_POS_SCAN 0x40000000 // flag: scan to the position
854 
855 // BASS_ChannelSetDevice/GetDevice option
856 #define BASS_NODEVICE 0x20000
857 
858 // BASS_RecordSetInput flags
859 #define BASS_INPUT_OFF 0x10000
860 #define BASS_INPUT_ON 0x20000
861 
862 #define BASS_INPUT_TYPE_MASK 0xff000000
863 #define BASS_INPUT_TYPE_UNDEF 0x00000000
864 #define BASS_INPUT_TYPE_DIGITAL 0x01000000
865 #define BASS_INPUT_TYPE_LINE 0x02000000
866 #define BASS_INPUT_TYPE_MIC 0x03000000
867 #define BASS_INPUT_TYPE_SYNTH 0x04000000
868 #define BASS_INPUT_TYPE_CD 0x05000000
869 #define BASS_INPUT_TYPE_PHONE 0x06000000
870 #define BASS_INPUT_TYPE_SPEAKER 0x07000000
871 #define BASS_INPUT_TYPE_WAVE 0x08000000
872 #define BASS_INPUT_TYPE_AUX 0x09000000
873 #define BASS_INPUT_TYPE_ANALOG 0x0a000000
874 
875 // BASS_ChannelSetFX effect types
876 #define BASS_FX_DX8_CHORUS 0
877 #define BASS_FX_DX8_COMPRESSOR 1
878 #define BASS_FX_DX8_DISTORTION 2
879 #define BASS_FX_DX8_ECHO 3
880 #define BASS_FX_DX8_FLANGER 4
881 #define BASS_FX_DX8_GARGLE 5
882 #define BASS_FX_DX8_I3DL2REVERB 6
883 #define BASS_FX_DX8_PARAMEQ 7
884 #define BASS_FX_DX8_REVERB 8
885 #define BASS_FX_VOLUME 9
886 
887 typedef struct {
888  float fWetDryMix;
889  float fDepth;
890  float fFeedback;
891  float fFrequency;
892  DWORD lWaveform; // 0=triangle, 1=sine
893  float fDelay;
894  DWORD lPhase; // BASS_DX8_PHASE_xxx
896 
897 typedef struct {
898  float fGain;
899  float fAttack;
900  float fRelease;
901  float fThreshold;
902  float fRatio;
903  float fPredelay;
905 
906 typedef struct {
907  float fGain;
908  float fEdge;
913 
914 typedef struct {
915  float fWetDryMix;
916  float fFeedback;
917  float fLeftDelay;
918  float fRightDelay;
920 } BASS_DX8_ECHO;
921 
922 typedef struct {
923  float fWetDryMix;
924  float fDepth;
925  float fFeedback;
926  float fFrequency;
927  DWORD lWaveform; // 0=triangle, 1=sine
928  float fDelay;
929  DWORD lPhase; // BASS_DX8_PHASE_xxx
931 
932 typedef struct {
933  DWORD dwRateHz; // Rate of modulation in hz
934  DWORD dwWaveShape; // 0=triangle, 1=square
936 
937 typedef struct {
938  int lRoom; // [-10000, 0] default: -1000 mB
939  int lRoomHF; // [-10000, 0] default: 0 mB
940  float flRoomRolloffFactor; // [0.0, 10.0] default: 0.0
941  float flDecayTime; // [0.1, 20.0] default: 1.49s
942  float flDecayHFRatio; // [0.1, 2.0] default: 0.83
943  int lReflections; // [-10000, 1000] default: -2602 mB
944  float flReflectionsDelay; // [0.0, 0.3] default: 0.007 s
945  int lReverb; // [-10000, 2000] default: 200 mB
946  float flReverbDelay; // [0.0, 0.1] default: 0.011 s
947  float flDiffusion; // [0.0, 100.0] default: 100.0 %
948  float flDensity; // [0.0, 100.0] default: 100.0 %
949  float flHFReference; // [20.0, 20000.0] default: 5000.0 Hz
951 
952 typedef struct {
953  float fCenter;
954  float fBandwidth;
955  float fGain;
957 
958 typedef struct {
959  float fInGain; // [-96.0,0.0] default: 0.0 dB
960  float fReverbMix; // [-96.0,0.0] default: 0.0 db
961  float fReverbTime; // [0.001,3000.0] default: 1000.0 ms
962  float fHighFreqRTRatio; // [0.001,0.999] default: 0.001
964 
965 #define BASS_DX8_PHASE_NEG_180 0
966 #define BASS_DX8_PHASE_NEG_90 1
967 #define BASS_DX8_PHASE_ZERO 2
968 #define BASS_DX8_PHASE_90 3
969 #define BASS_DX8_PHASE_180 4
970 
971 typedef struct {
972  float fTarget;
973  float fCurrent;
974  float fTime;
977 
978 typedef void (CALLBACK IOSNOTIFYPROC)(DWORD status);
979 /* iOS notification callback function.
980 status : The notification (BASS_IOSNOTIFY_xxx) */
981 
982 #define BASS_IOSNOTIFY_INTERRUPT 1 // interruption started
983 #define BASS_IOSNOTIFY_INTERRUPT_END 2 // interruption ended
984 
985 BOOL BASSDEF(BASS_SetConfig)(DWORD option, DWORD value);
987 BOOL BASSDEF(BASS_SetConfigPtr)(DWORD option, const void *value);
988 void *BASSDEF(BASS_GetConfigPtr)(DWORD option);
992 #if defined(_WIN32) && !defined(_WIN32_WCE) && !(WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP)
993 BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid);
994 #else
995 BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, void *win, void *dsguid);
996 #endif
1000 #if defined(_WIN32) && !defined(_WIN32_WCE) && !(WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP)
1001 void *BASSDEF(BASS_GetDSoundObject)(DWORD object);
1002 #endif
1005 float BASSDEF(BASS_GetCPU)();
1009 BOOL BASSDEF(BASS_SetVolume)(float volume);
1010 float BASSDEF(BASS_GetVolume)();
1011 
1012 HPLUGIN BASSDEF(BASS_PluginLoad)(const char *file, DWORD flags);
1015 
1016 BOOL BASSDEF(BASS_Set3DFactors)(float distf, float rollf, float doppf);
1017 BOOL BASSDEF(BASS_Get3DFactors)(float *distf, float *rollf, float *doppf);
1018 BOOL BASSDEF(BASS_Set3DPosition)(const BASS_3DVECTOR *pos, const BASS_3DVECTOR *vel, const BASS_3DVECTOR *front, const BASS_3DVECTOR *top);
1020 void BASSDEF(BASS_Apply3D)();
1021 #if defined(_WIN32) && !defined(_WIN32_WCE) && !(WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP)
1022 BOOL BASSDEF(BASS_SetEAXParameters)(int env, float vol, float decay, float damp);
1023 BOOL BASSDEF(BASS_GetEAXParameters)(DWORD *env, float *vol, float *decay, float *damp);
1024 #endif
1025 
1026 HMUSIC BASSDEF(BASS_MusicLoad)(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD flags, DWORD freq);
1028 
1029 HSAMPLE BASSDEF(BASS_SampleLoad)(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD max, DWORD flags);
1030 HSAMPLE BASSDEF(BASS_SampleCreate)(DWORD length, DWORD freq, DWORD chans, DWORD max, DWORD flags);
1032 BOOL BASSDEF(BASS_SampleSetData)(HSAMPLE handle, const void *buffer);
1033 BOOL BASSDEF(BASS_SampleGetData)(HSAMPLE handle, void *buffer);
1035 BOOL BASSDEF(BASS_SampleSetInfo)(HSAMPLE handle, const BASS_SAMPLE *info);
1039 
1040 HSTREAM BASSDEF(BASS_StreamCreate)(DWORD freq, DWORD chans, DWORD flags, STREAMPROC *proc, void *user);
1041 HSTREAM BASSDEF(BASS_StreamCreateFile)(BOOL mem, const void *file, QWORD offset, QWORD length, DWORD flags);
1042 HSTREAM BASSDEF(BASS_StreamCreateURL)(const char *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user);
1043 HSTREAM BASSDEF(BASS_StreamCreateFileUser)(DWORD system, DWORD flags, const BASS_FILEPROCS *proc, void *user);
1046 DWORD BASSDEF(BASS_StreamPutData)(HSTREAM handle, const void *buffer, DWORD length);
1048 
1050 BOOL BASSDEF(BASS_RecordInit)(int device);
1055 const char *BASSDEF(BASS_RecordGetInputName)(int input);
1056 BOOL BASSDEF(BASS_RecordSetInput)(int input, DWORD flags, float volume);
1057 DWORD BASSDEF(BASS_RecordGetInput)(int input, float *volume);
1058 HRECORD BASSDEF(BASS_RecordStart)(DWORD freq, DWORD chans, DWORD flags, RECORDPROC *proc, void *user);
1059 
1060 double BASSDEF(BASS_ChannelBytes2Seconds)(DWORD handle, QWORD pos);
1061 QWORD BASSDEF(BASS_ChannelSeconds2Bytes)(DWORD handle, double pos);
1063 BOOL BASSDEF(BASS_ChannelSetDevice)(DWORD handle, DWORD device);
1066 const char *BASSDEF(BASS_ChannelGetTags)(DWORD handle, DWORD tags);
1067 DWORD BASSDEF(BASS_ChannelFlags)(DWORD handle, DWORD flags, DWORD mask);
1069 BOOL BASSDEF(BASS_ChannelLock)(DWORD handle, BOOL lock);
1070 BOOL BASSDEF(BASS_ChannelPlay)(DWORD handle, BOOL restart);
1073 BOOL BASSDEF(BASS_ChannelSetAttribute)(DWORD handle, DWORD attrib, float value);
1074 BOOL BASSDEF(BASS_ChannelGetAttribute)(DWORD handle, DWORD attrib, float *value);
1075 BOOL BASSDEF(BASS_ChannelSlideAttribute)(DWORD handle, DWORD attrib, float value, DWORD time);
1076 BOOL BASSDEF(BASS_ChannelIsSliding)(DWORD handle, DWORD attrib);
1077 BOOL BASSDEF(BASS_ChannelSetAttributeEx)(DWORD handle, DWORD attrib, void *value, DWORD size);
1078 DWORD BASSDEF(BASS_ChannelGetAttributeEx)(DWORD handle, DWORD attrib, void *value, DWORD size);
1079 BOOL BASSDEF(BASS_ChannelSet3DAttributes)(DWORD handle, int mode, float min, float max, int iangle, int oangle, float outvol);
1080 BOOL BASSDEF(BASS_ChannelGet3DAttributes)(DWORD handle, DWORD *mode, float *min, float *max, DWORD *iangle, DWORD *oangle, float *outvol);
1081 BOOL BASSDEF(BASS_ChannelSet3DPosition)(DWORD handle, const BASS_3DVECTOR *pos, const BASS_3DVECTOR *orient, const BASS_3DVECTOR *vel);
1084 BOOL BASSDEF(BASS_ChannelSetPosition)(DWORD handle, QWORD pos, DWORD mode);
1087 BOOL BASSDEF(BASS_ChannelGetLevelEx)(DWORD handle, float *levels, float length, DWORD flags);
1089 HSYNC BASSDEF(BASS_ChannelSetSync)(DWORD handle, DWORD type, QWORD param, SYNCPROC *proc, void *user);
1091 HDSP BASSDEF(BASS_ChannelSetDSP)(DWORD handle, DSPPROC *proc, void *user, int priority);
1093 BOOL BASSDEF(BASS_ChannelSetLink)(DWORD handle, DWORD chan);
1095 HFX BASSDEF(BASS_ChannelSetFX)(DWORD handle, DWORD type, int priority);
1097 
1098 BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *params);
1099 BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *params);
1100 BOOL BASSDEF(BASS_FXReset)(HFX handle);
1101 BOOL BASSDEF(BASS_FXSetPriority)(HFX handle, int priority);
1102 
1103 #ifdef __cplusplus
1104 }
1105 
1106 #if defined(_WIN32) && !defined(NOBASSOVERLOADS)
1107 static inline HPLUGIN BASS_PluginLoad(const WCHAR *file, DWORD flags)
1108 {
1109  return BASS_PluginLoad((const char*)file, flags|BASS_UNICODE);
1110 }
1111 
1112 static inline HMUSIC BASS_MusicLoad(BOOL mem, const WCHAR *file, QWORD offset, DWORD length, DWORD flags, DWORD freq)
1113 {
1114  return BASS_MusicLoad(mem, (const void*)file, offset, length, flags|BASS_UNICODE, freq);
1115 }
1116 
1117 static inline HSAMPLE BASS_SampleLoad(BOOL mem, const WCHAR *file, QWORD offset, DWORD length, DWORD max, DWORD flags)
1118 {
1119  return BASS_SampleLoad(mem, (const void*)file, offset, length, max, flags|BASS_UNICODE);
1120 }
1121 
1122 static inline HSTREAM BASS_StreamCreateFile(BOOL mem, const WCHAR *file, QWORD offset, QWORD length, DWORD flags)
1123 {
1124  return BASS_StreamCreateFile(mem, (const void*)file, offset, length, flags|BASS_UNICODE);
1125 }
1126 
1127 static inline HSTREAM BASS_StreamCreateURL(const WCHAR *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user)
1128 {
1129  return BASS_StreamCreateURL((const char*)url, offset, flags|BASS_UNICODE, proc, user);
1130 }
1131 
1132 static inline BOOL BASS_SetConfigPtr(DWORD option, const WCHAR *value)
1133 {
1134  return BASS_SetConfigPtr(option|BASS_UNICODE, (const void*)value);
1135 }
1136 #endif
1137 #endif
1138 
1139 #endif
DWORD mode3d
Definition: bass.h:270
float outvol
Definition: bass.h:275
DWORD chans
Definition: bass.h:360
Definition: bass.h:733
float fPreLowpassCutoff
Definition: bass.h:911
float fWetDryMix
Definition: bass.h:923
struct BASS_3DVECTOR BASS_3DVECTOR
DWORD latency
Definition: bass.h:215
Definition: bass.h:455
DWORD formats
Definition: bass.h:233
const BASS_PLUGINFORM * formats
Definition: bass.h:409
DWORD BASSDEF() BASS_ChannelGetData(DWORD handle, void *buffer, DWORD length)
int lRoom
Definition: bass.h:938
DWORD HFX
Definition: bass.h:57
DWORD priority
Definition: bass.h:277
float fEdge
Definition: bass.h:908
Definition: bass.h:958
DWORD dwManufacturer
Definition: bass.h:799
FILELENPROC * length
Definition: bass.h:524
float fTarget
Definition: bass.h:972
HSTREAM BASSDEF() BASS_StreamCreateURL(const char *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user)
const void * data
Definition: bass.h:696
DWORD lWaveform
Definition: bass.h:927
BOOL BASSDEF() BASS_SetDevice(DWORD device)
float fFrequency
Definition: bass.h:926
#define BASSDEF(f)
Definition: bass.h:45
DWORD HSYNC
Definition: bass.h:55
float flDiffusion
Definition: bass.h:947
WORD nChannels
Definition: bass.h:833
Definition: bass.h:438
DWORD dwSamplePeriod
Definition: bass.h:801
BOOL BASSDEF() BASS_ChannelGet3DPosition(DWORD handle, BASS_3DVECTOR *pos, BASS_3DVECTOR *orient, BASS_3DVECTOR *vel)
BOOL BASSDEF() BASS_ChannelLock(DWORD handle, BOOL lock)
QWORD BASSDEF() BASS_ChannelSeconds2Bytes(DWORD handle, double pos)
Definition: bass.h:437
float z
Definition: bass.h:420
DWORD dwValue
Definition: bass.h:730
BOOL BASSDEF() BASS_Update(DWORD length)
float y
Definition: bass.h:419
QWORD BASSDEF() BASS_ChannelGetPosition(DWORD handle, DWORD mode)
struct tWAVEFORMATEX * PWAVEFORMATEX
DWORD dwWaveShape
Definition: bass.h:934
Definition: bass.h:683
DWORD HDSP
Definition: bass.h:56
const char * key
Definition: bass.h:695
FILEREADPROC * read
Definition: bass.h:525
float fDelay
Definition: bass.h:928
BOOL BASSDEF() BASS_ChannelSetAttributeEx(DWORD handle, DWORD attrib, void *value, DWORD size)
struct tWAVEFORMATEX * LPWAVEFORMATEX
HRECORD BASSDEF() BASS_RecordStart(DWORD freq, DWORD chans, DWORD flags, RECORDPROC *proc, void *user)
float BASSDEF() BASS_GetCPU()
float fCenter
Definition: bass.h:953
Definition: bass.h:462
DWORD nAvgBytesPerSec
Definition: bass.h:835
DWORD BASSDEF() BASS_ChannelFlags(DWORD handle, DWORD flags, DWORD mask)
Definition: bass.h:443
DWORD speakers
Definition: bass.h:217
Definition: bass.h:171
DWORD dwPosition
Definition: bass.h:767
DWORD lPhase
Definition: bass.h:894
HDSP BASSDEF() BASS_ChannelSetDSP(DWORD handle, DSPPROC *proc, void *user, int priority)
DWORD dwMIDIUnityNote
Definition: bass.h:802
Definition: bass.h:395
DWORD flags
Definition: bass.h:179
#define CALLBACK
Definition: bass.h:17
float flDensity
Definition: bass.h:948
BOOL BASSDEF() BASS_Set3DFactors(float distf, float rollf, float doppf)
Definition: bass.h:441
BOOL BASSDEF() BASS_RecordSetDevice(DWORD device)
DWORD flags
Definition: bass.h:205
float flRoomRolloffFactor
Definition: bass.h:940
DWORD cbSamplerData
Definition: bass.h:807
Definition: bass.h:440
BOOL BASSDEF() BASS_RecordSetInput(int input, DWORD flags, float volume)
BOOL lPanDelay
Definition: bass.h:919
DWORD formatc
Definition: bass.h:408
DWORD lWaveform
Definition: bass.h:892
Definition: bass.h:231
Definition: bass.h:448
Definition: bass.h:260
HSTREAM BASSDEF() BASS_StreamCreateFile(BOOL mem, const void *file, QWORD offset, QWORD length, DWORD flags)
float fFeedback
Definition: bass.h:890
float pan
Definition: bass.h:263
DWORD chans
Definition: bass.h:268
DWORD atype
Definition: bass.h:823
BOOL BASSDEF() BASS_ChannelSet3DPosition(DWORD handle, const BASS_3DVECTOR *pos, const BASS_3DVECTOR *orient, const BASS_3DVECTOR *vel)
DWORD dwPlayCount
Definition: bass.h:794
struct tWAVEFORMATEX WAVEFORMATEX
float flReverbDelay
Definition: bass.h:946
Definition: bass.h:887
DWORD HCHANNEL
Definition: bass.h:52
void DWORD void * user
Definition: bass.h:495
DWORD BASSDEF() BASS_GetConfig(DWORD option)
Definition: bass.h:452
float fTime
Definition: bass.h:974
BOOL BASSDEF() BASS_RecordGetInfo(BASS_RECORDINFO *info)
BOOL BASSDEF() BASS_ChannelPlay(DWORD handle, BOOL restart)
DWORD dwChunkStart
Definition: bass.h:769
const char * name
Definition: bass.h:401
DWORD dwType
Definition: bass.h:790
int lReflections
Definition: bass.h:943
DWORD length
Definition: bass.h:697
Definition: bass.h:906
DWORD dwSMPTEFormat
Definition: bass.h:804
DWORD DWORD data
Definition: bass.h:567
const char * driver
Definition: bass.h:177
Definition: bass.h:456
BOOL BASSDEF() BASS_SetVolume(float volume)
BOOL BASSDEF() BASS_ChannelSetLink(DWORD handle, DWORD chan)
BYTE genre
Definition: bass.h:690
float fThreshold
Definition: bass.h:901
DWORD max
Definition: bass.h:266
BOOL BASSDEF() BASS_GetInfo(BASS_INFO *info)
int lReverb
Definition: bass.h:945
BOOL BASSDEF() BASS_RecordGetDeviceInfo(DWORD device, BASS_DEVICEINFO *info)
DWORD HSTREAM
Definition: bass.h:53
Definition: bass.h:445
BOOL BASSDEF() BASS_PluginFree(HPLUGIN handle)
Definition: bass.h:461
float fWetDryMix
Definition: bass.h:888
BOOL BASSDEF() BASS_MusicFree(HMUSIC handle)
BOOL BASSDEF() BASS_RecordInit(int device)
float fCurrent
Definition: bass.h:973
Definition: bass.h:450
BOOL BASSDEF() BASS_Get3DFactors(float *distf, float *rollf, float *doppf)
BOOL BASSDEF() BASS_FXGetParameters(HFX handle, void *params)
float fLeftDelay
Definition: bass.h:917
Definition: bass.h:821
BOOL BASSDEF() BASS_Stop()
uint8_t BYTE
Definition: bass.h:18
Definition: bass.h:453
BOOL BASSDEF() BASS_ChannelGetAttribute(DWORD handle, DWORD attrib, float *value)
BOOL BASSDEF() BASS_ChannelSet3DAttributes(DWORD handle, int mode, float min, float max, int iangle, int oangle, float outvol)
DWORD freq
Definition: bass.h:261
HSAMPLE sample
Definition: bass.h:365
DWORD hwfree
Definition: bass.h:207
DWORD dwName
Definition: bass.h:766
FILECLOSEPROC * close
Definition: bass.h:523
float fDelay
Definition: bass.h:893
const char * name
Definition: bass.h:824
HPLUGIN BASSDEF() BASS_PluginLoad(const char *file, DWORD flags)
double BASSDEF() BASS_ChannelBytes2Seconds(DWORD handle, QWORD pos)
BOOL BASSDEF() BASS_RecordFree()
HSYNC BASSDEF() BASS_ChannelSetSync(DWORD handle, DWORD type, QWORD param, SYNCPROC *proc, void *user)
HSAMPLE BASSDEF() BASS_SampleCreate(DWORD length, DWORD freq, DWORD chans, DWORD max, DWORD flags)
int BOOL
Definition: bass.h:23
uint32_t DWORD
Definition: bass.h:20
float flDecayTime
Definition: bass.h:941
Definition: bass.h:522
BOOL BASSDEF() BASS_ChannelSetDevice(DWORD handle, DWORD device)
BOOL BASSDEF() BASS_ChannelRemoveLink(DWORD handle, DWORD chan)
Definition: bass.h:459
DWORD HRECORD
Definition: bass.h:54
DWORD dwStart
Definition: bass.h:791
BOOL BASSDEF() BASS_Pause()
DWORD BASSDEF() BASS_StreamPutFileData(HSTREAM handle, const void *buffer, DWORD length)
float flHFReference
Definition: bass.h:949
QWORD BASSDEF() BASS_ChannelGetLength(DWORD handle, DWORD mode)
DWORD dwRateHz
Definition: bass.h:933
float fPredelay
Definition: bass.h:903
DWORD dwEnd
Definition: bass.h:792
Definition: bass.h:830
BOOL BASSDEF() BASS_FXSetParameters(HFX handle, const void *params)
void * buffer
Definition: bass.h:495
DWORD dwProduct
Definition: bass.h:800
Definition: bass.h:204
DWORD vam
Definition: bass.h:276
DWORD dwMIDIPitchFraction
Definition: bass.h:803
DWORD ctype
Definition: bass.h:396
DWORD minrate
Definition: bass.h:210
DWORD dwBlockStart
Definition: bass.h:770
BOOL BASSDEF() BASS_SampleGetData(HSAMPLE handle, void *buffer)
Definition: bass.h:764
DWORD BASSDEF() BASS_SampleGetChannels(HSAMPLE handle, HCHANNEL *channels)
float fReverbMix
Definition: bass.h:960
Definition: bass.h:787
float fBandwidth
Definition: bass.h:954
const char *BASSDEF() BASS_RecordGetInputName(int input)
Definition: bass.h:914
DWORD fccChunk
Definition: bass.h:768
float fAttack
Definition: bass.h:899
BOOL BASSDEF() BASS_Set3DPosition(const BASS_3DVECTOR *pos, const BASS_3DVECTOR *vel, const BASS_3DVECTOR *front, const BASS_3DVECTOR *top)
DWORD freq
Definition: bass.h:359
DWORD BASSDEF() BASS_ChannelGetLevel(DWORD handle)
QWORD TimeReference
Definition: bass.h:712
int lRoomHF
Definition: bass.h:939
float fInGain
Definition: bass.h:959
WORD nBlockAlign
Definition: bass.h:836
BOOL BASSDEF() BASS_SampleGetInfo(HSAMPLE handle, BASS_SAMPLE *info)
BOOL BASSDEF() BASS_ChannelSetAttribute(DWORD handle, DWORD attrib, float value)
Definition: bass.h:458
DWORD dwLevelReference
Definition: bass.h:750
BOOL BASSDEF() BASS_SetConfigPtr(DWORD option, const void *value)
DWORD BASSDEF() BASS_StreamPutData(HSTREAM handle, const void *buffer, DWORD length)
BOOL eax
Definition: bass.h:212
DWORD dwIdentifier
Definition: bass.h:789
DWORD ctype
Definition: bass.h:362
float fRightDelay
Definition: bass.h:918
DWORD free3d
Definition: bass.h:209
BOOL BASSDEF() BASS_ChannelPause(DWORD handle)
const char * name
Definition: bass.h:176
const WAVEFORMATEX * LPCWAVEFORMATEX
Definition: bass.h:840
float fFrequency
Definition: bass.h:891
float maxdist
Definition: bass.h:272
BOOL BASSDEF() BASS_ChannelRemoveSync(DWORD handle, HSYNC sync)
Definition: bass.h:797
DWORD version
Definition: bass.h:407
HSTREAM BASSDEF() BASS_StreamCreate(DWORD freq, DWORD chans, DWORD flags, STREAMPROC *proc, void *user)
Definition: bass.h:454
float fRatio
Definition: bass.h:902
HFX BASSDEF() BASS_ChannelSetFX(DWORD handle, DWORD type, int priority)
DWORD origres
Definition: bass.h:267
float mindist
Definition: bass.h:271
Definition: bass.h:444
DWORD nSamplesPerSec
Definition: bass.h:834
float fFeedback
Definition: bass.h:925
float fPostEQBandwidth
Definition: bass.h:910
DWORD cSampleLoops
Definition: bass.h:806
DWORD dsver
Definition: bass.h:214
BOOL BASSDEF() BASS_Get3DPosition(BASS_3DVECTOR *pos, BASS_3DVECTOR *vel, BASS_3DVECTOR *front, BASS_3DVECTOR *top)
Definition: bass.h:460
void *BASSDEF() BASS_GetConfigPtr(DWORD option)
DWORD lPhase
Definition: bass.h:929
void BASSDEF() BASS_Apply3D()
float fGain
Definition: bass.h:907
const char * exts
Definition: bass.h:402
DWORD freq
Definition: bass.h:236
float fDepth
Definition: bass.h:889
BOOL BASSDEF() BASS_ChannelGetInfo(DWORD handle, BASS_CHANNELINFO *info)
BOOL BASSDEF() BASS_Start()
Definition: bass.h:447
DWORD BASSDEF() BASS_GetDevice()
DWORD origres
Definition: bass.h:363
HSAMPLE BASSDEF() BASS_SampleLoad(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD max, DWORD flags)
Definition: bass.h:952
Definition: bass.h:464
HPLUGIN plugin
Definition: bass.h:364
DWORD freq
Definition: bass.h:218
Definition: bass.h:897
DWORD flags
Definition: bass.h:232
DWORD channel
Definition: bass.h:567
const BASS_PLUGININFO *BASSDEF() BASS_PluginGetInfo(HPLUGIN handle)
BOOL BASSDEF() BASS_ChannelGet3DAttributes(DWORD handle, DWORD *mode, float *min, float *max, DWORD *iangle, DWORD *oangle, float *outvol)
float fDepth
Definition: bass.h:924
WORD wBitsPerSample
Definition: bass.h:837
WORD Version
Definition: bass.h:713
float fRelease
Definition: bass.h:900
FILESEEKPROC * seek
Definition: bass.h:526
Definition: bass.h:727
BOOL BASSDEF() BASS_FXSetPriority(HFX handle, int priority)
Definition: bass.h:442
DWORD dwFraction
Definition: bass.h:793
BOOL BASSDEF() BASS_ChannelRemoveFX(DWORD handle, HFX fx)
const char *BASSDEF() BASS_ChannelGetTags(DWORD handle, DWORD tags)
DWORD dwSMPTEOffset
Definition: bass.h:805
Definition: bass.h:694
Definition: bass.h:706
Definition: bass.h:451
float fFeedback
Definition: bass.h:916
WORD wFormatTag
Definition: bass.h:832
BOOL BASSDEF() BASS_SampleSetInfo(HSAMPLE handle, const BASS_SAMPLE *info)
BOOL BASSDEF() BASS_ChannelIsSliding(DWORD handle, DWORD attrib)
BOOL BASSDEF() BASS_ChannelUpdate(DWORD handle, DWORD length)
typedef void(CALLBACK FILECLOSEPROC)(void *user)
Definition: bass.h:457
float volume
Definition: bass.h:262
float fHighFreqRTRatio
Definition: bass.h:962
float fGain
Definition: bass.h:898
DWORD freesam
Definition: bass.h:208
DWORD mingap
Definition: bass.h:269
int BASSDEF() BASS_ErrorGetCode()
float flReflectionsDelay
Definition: bass.h:944
HMUSIC BASSDEF() BASS_MusicLoad(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD flags, DWORD freq)
HCHANNEL BASSDEF() BASS_SampleGetChannel(HSAMPLE handle, BOOL onlynew)
Definition: bass.h:413
void DWORD length
Definition: bass.h:495
DWORD HPLUGIN
Definition: bass.h:58
QWORD BASSDEF() BASS_StreamGetFilePosition(HSTREAM handle, DWORD mode)
Definition: bass.h:446
uint64_t QWORD
Definition: bass.h:21
BOOL BASSDEF() BASS_ChannelGetLevelEx(DWORD handle, float *levels, float length, DWORD flags)
DWORD minbuf
Definition: bass.h:213
DWORD BASSDEF() BASS_RecordGetDevice()
BOOL BASSDEF() BASS_ChannelSlideAttribute(DWORD handle, DWORD attrib, float value, DWORD time)
DWORD flags
Definition: bass.h:264
BOOL BASSDEF() BASS_StreamFree(HSTREAM handle)
Definition: bass.h:358
DWORD iangle
Definition: bass.h:273
BOOL BASSDEF() BASS_ChannelStop(DWORD handle)
DWORD inputs
Definition: bass.h:234
Definition: bass.h:922
DWORD lCurve
Definition: bass.h:975
DWORD BASSDEF() BASS_GetVersion()
float fReverbTime
Definition: bass.h:961
DWORD initflags
Definition: bass.h:216
WORD cbSize
Definition: bass.h:838
Definition: bass.h:932
DWORD HSAMPLE
Definition: bass.h:51
DWORD BASSDEF() BASS_ChannelIsActive(DWORD handle)
DWORD HMUSIC
Definition: bass.h:50
DWORD maxrate
Definition: bass.h:211
HSTREAM BASSDEF() BASS_StreamCreateFileUser(DWORD system, DWORD flags, const BASS_FILEPROCS *proc, void *user)
BOOL BASSDEF() BASS_SetConfig(DWORD option, DWORD value)
BOOL BASSDEF() BASS_Free()
DWORD hwsize
Definition: bass.h:206
BOOL BASSDEF() BASS_SampleStop(HSAMPLE handle)
Definition: bass.h:406
DWORD dwCuePoints
Definition: bass.h:776
float fWetDryMix
Definition: bass.h:915
DWORD dwUsage
Definition: bass.h:729
Definition: bass.h:774
uint16_t WORD
Definition: bass.h:19
Definition: bass.h:439
float BASSDEF() BASS_GetVolume()
DWORD oangle
Definition: bass.h:274
DWORD ftype
Definition: bass.h:822
const char * filename
Definition: bass.h:366
DWORD flags
Definition: bass.h:361
BOOL BASSDEF() BASS_ChannelSetPosition(DWORD handle, QWORD pos, DWORD mode)
float x
Definition: bass.h:418
DWORD length
Definition: bass.h:265
float flDecayHFRatio
Definition: bass.h:942
float fPostEQCenterFrequency
Definition: bass.h:909
Definition: bass.h:449
DWORD BASSDEF() BASS_ChannelGetDevice(DWORD handle)
BOOL BASSDEF() BASS_ChannelRemoveDSP(DWORD handle, HDSP dsp)
BOOL singlein
Definition: bass.h:235
BOOL BASSDEF() BASS_FXReset(HFX handle)
DWORD dwSampleOffset
Definition: bass.h:771
#define BASS_UNICODE
Definition: bass.h:344
BOOL BASSDEF() BASS_SampleFree(HSAMPLE handle)
Definition: bass.h:971
BOOL BASSDEF() BASS_Init(int device, DWORD freq, DWORD flags, void *win, void *dsguid)
Definition: bass.h:937
DWORD BASSDEF() BASS_RecordGetInput(int input, float *volume)
BOOL BASSDEF() BASS_SampleSetData(HSAMPLE handle, const void *buffer)
DWORD BASSDEF() BASS_ChannelGetAttributeEx(DWORD handle, DWORD attrib, void *value, DWORD size)
float fGain
Definition: bass.h:955
BOOL BASSDEF() BASS_GetDeviceInfo(DWORD device, BASS_DEVICEINFO *info)