Commit | Line | Data |
---|---|---|
21c4e167 H |
1 | /* BASS 2.3 C/C++ header file, copyright (c) 1999-2007 Ian Luck. |
2 | Please report bugs/suggestions/etc... to bass@un4seen.com | |
3 | ||
4 | See the BASS.CHM file for more complete documentation */ | |
5 | ||
6 | #ifndef BASS_H | |
7 | #define BASS_H | |
8 | ||
9 | #ifdef _WIN32 // Windows | |
10 | #include <wtypes.h> | |
11 | typedef unsigned __int64 QWORD; | |
12 | #else // OSX | |
13 | #include <stdint.h> | |
14 | #define WINAPI | |
15 | #define CALLBACK | |
16 | typedef uint8_t BYTE; | |
17 | typedef uint16_t WORD; | |
18 | typedef uint32_t DWORD; | |
19 | typedef uint64_t QWORD; | |
20 | typedef int BOOL; | |
21 | #define TRUE 1 | |
22 | #define FALSE 0 | |
23 | #define LOBYTE(a) (BYTE)(a)\r | |
24 | #define LOWORD(a) (WORD)(a) | |
25 | #define HIWORD(a) (WORD)((a)>>16) | |
26 | #define MAKELONG(a,b) (DWORD)(((a)&0xffff)|((b)<<16)) | |
27 | #endif | |
28 | ||
29 | #ifdef __cplusplus | |
30 | extern "C" { | |
31 | #endif | |
32 | ||
33 | #define BASSVERSION 0x203 // API version | |
34 | ||
35 | #ifndef BASSDEF | |
36 | #define BASSDEF(f) WINAPI f | |
37 | #endif | |
38 | ||
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 | |
48 | ||
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)\r | |
84 | #define BASS_ERROR_CODEC 44 // codec is not available/supported | |
85 | #define BASS_ERROR_UNKNOWN -1 // some other mystery error | |
86 | ||
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 | |
97 | ||
98 | // DirectSound interfaces (for use with BASS_GetDSoundObject) | |
99 | #define BASS_OBJECT_DS 1 // IDirectSound | |
100 | #define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener | |
101 | ||
102 | typedef struct { | |
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) | |
118 | } BASS_INFO; | |
119 | ||
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 | |
133 | ||
134 | typedef struct { | |
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)\r | |
141 | } BASS_RECORDINFO; | |
142 | ||
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 | |
146 | ||
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 */ | |
161 | #endif | |
162 | ||
163 | // Sample info structure & flags | |
164 | typedef struct { | |
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) | |
186 | } BASS_SAMPLE; | |
187 | ||
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) | |
200 | ||
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 | |
208 | ||
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 | |
229 | ||
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 | |
246 | ||
247 | #define BASS_UNICODE 0x80000000 | |
248 | ||
249 | #define BASS_RECORD_PAUSE 0x8000 // start recording paused | |
250 | ||
251 | #define MAKEMUSICPOS(order,row) (0x80000000|MAKELONG(order,row)) | |
252 | ||
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. */ | |
260 | ||
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. */ | |
277 | ||
278 | typedef struct { | |
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 | |
285 | } BASS_CHANNELINFO; | |
286 | ||
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 | |
306 | ||
307 | typedef struct { | |
308 | DWORD ctype; // channel type | |
309 | const char *name; // format description | |
310 | const char *exts; // file extension filter (*.ext1;*.ext2;etc...) | |
311 | } BASS_PLUGINFORM; | |
312 | ||
313 | typedef struct { | |
314 | DWORD version; // version (same form as BASS_GetVersion) | |
315 | DWORD formatc; // number of formats | |
316 | const BASS_PLUGINFORM *formats; // the array of formats | |
317 | } BASS_PLUGININFO; | |
318 | ||
319 | // 3D vector (for 3D positions/velocities/orientations) | |
320 | typedef struct BASS_3DVECTOR { | |
321 | #ifdef __cplusplus | |
322 | BASS_3DVECTOR() {}; | |
323 | BASS_3DVECTOR(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}; | |
324 | #endif | |
325 | float x; // +=right, -=left | |
326 | float y; // +=up, -=down | |
327 | float z; // +=front, -=behind | |
328 | } BASS_3DVECTOR; | |
329 | ||
330 | // 3D channel modes | |
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 | |
337 | not change. */ | |
338 | #define BASS_3DMODE_OFF 2 | |
339 | /* Turn off 3D processing on the channel, the sound will be played | |
340 | in the center. */ | |
341 | ||
342 | #ifdef _WIN32 | |
343 | // EAX environments, use with BASS_SetEAXParameters | |
344 | enum | |
345 | { | |
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, | |
372 | ||
373 | EAX_ENVIRONMENT_COUNT // total number of environments | |
374 | }; | |
375 | ||
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 | |
403 | #endif | |
404 | ||
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. */ | |
424 | ||
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 | |
433 | the stream. */ | |
434 | ||
435 | #define BASS_STREAMPROC_END 0x80000000 // end of user stream flag | |
436 | ||
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 | |
443 | ||
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 | |
449 | ||
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" */ | |
457 | ||
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 */ | |
463 | ||
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 | |
469 | data : not used */ | |
470 | #define BASS_SYNC_END 2 | |
471 | /* Sync when a channel reaches the end. | |
472 | param: not used | |
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. | |
476 | param: not used | |
477 | data : pointer to the metadata */ | |
478 | #define BASS_SYNC_SLIDE 5 | |
479 | /* Sync when an attribute slide is completed. | |
480 | param: not used | |
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. | |
484 | param: not used | |
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. | |
488 | param: not used | |
489 | data : not used */ | |
490 | #define BASS_SYNC_FREE 8 | |
491 | /* Sync when a channel is freed. | |
492 | param: not used | |
493 | data : not used */ | |
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 | |
513 | ||
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 */ | |
523 | ||
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 | |
527 | until it's finished. | |
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 */ | |
533 | ||
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 */ | |
541 | ||
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\r | |
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 | |
552 | ||
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 | |
566 | ||
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 # | |
576 | ||
577 | #ifdef _WIN32 | |
578 | // DX8 effect types, use with BASS_ChannelSetFX | |
579 | enum | |
580 | { | |
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 | |
590 | }; | |
591 | ||
592 | typedef struct { | |
593 | float fWetDryMix; | |
594 | float fDepth; | |
595 | float fFeedback; | |
596 | float fFrequency; | |
597 | DWORD lWaveform; // 0=triangle, 1=sine | |
598 | float fDelay; | |
599 | DWORD lPhase; // BASS_FX_PHASE_xxx | |
600 | } BASS_FXCHORUS; // DSFXChorus | |
601 | ||
602 | typedef struct { | |
603 | float fGain; | |
604 | float fAttack; | |
605 | float fRelease; | |
606 | float fThreshold; | |
607 | float fRatio; | |
608 | float fPredelay; | |
609 | } BASS_FXCOMPRESSOR; // DSFXCompressor | |
610 | ||
611 | typedef struct { | |
612 | float fGain; | |
613 | float fEdge; | |
614 | float fPostEQCenterFrequency; | |
615 | float fPostEQBandwidth; | |
616 | float fPreLowpassCutoff; | |
617 | } BASS_FXDISTORTION; // DSFXDistortion | |
618 | ||
619 | typedef struct { | |
620 | float fWetDryMix; | |
621 | float fFeedback; | |
622 | float fLeftDelay; | |
623 | float fRightDelay; | |
624 | BOOL lPanDelay; | |
625 | } BASS_FXECHO; // DSFXEcho | |
626 | ||
627 | typedef struct { | |
628 | float fWetDryMix; | |
629 | float fDepth; | |
630 | float fFeedback; | |
631 | float fFrequency; | |
632 | DWORD lWaveform; // 0=triangle, 1=sine | |
633 | float fDelay; | |
634 | DWORD lPhase; // BASS_FX_PHASE_xxx | |
635 | } BASS_FXFLANGER; // DSFXFlanger | |
636 | ||
637 | typedef struct { | |
638 | DWORD dwRateHz; // Rate of modulation in hz | |
639 | DWORD dwWaveShape; // 0=triangle, 1=square | |
640 | } BASS_FXGARGLE; // DSFXGargle | |
641 | ||
642 | typedef struct { | |
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 | |
656 | ||
657 | typedef struct { | |
658 | float fCenter; | |
659 | float fBandwidth; | |
660 | float fGain; | |
661 | } BASS_FXPARAMEQ; // DSFXParamEq | |
662 | ||
663 | typedef struct { | |
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 | |
669 | ||
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 | |
675 | #endif | |
676 | ||
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 | |
682 | ||
683 | // BASS_ChannelIsSliding return flags | |
684 | #define BASS_SLIDE_FREQ 1 | |
685 | #define BASS_SLIDE_VOL 2 | |
686 | #define BASS_SLIDE_PAN 4 | |
687 | ||
688 | // BASS_RecordSetInput flags | |
689 | #define BASS_INPUT_OFF 0x10000 | |
690 | #define BASS_INPUT_ON 0x20000 | |
691 | #define BASS_INPUT_LEVEL 0x40000 | |
692 | ||
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 | |
705 | ||
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\r | |
725 | ||
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)(); | |
731 | #ifdef _WIN32 | |
732 | BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid); | |
733 | #else | |
734 | BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, void *win, void *dsguid); | |
735 | #endif | |
736 | BOOL BASSDEF(BASS_SetDevice)(DWORD device); | |
737 | DWORD BASSDEF(BASS_GetDevice)(); | |
738 | BOOL BASSDEF(BASS_Free)(); | |
739 | #ifdef _WIN32 | |
740 | void *BASSDEF(BASS_GetDSoundObject)(DWORD object); | |
741 | #endif | |
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)(); | |
750 | ||
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); | |
754 | ||
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)(); | |
760 | #ifdef _WIN32 | |
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); | |
763 | #endif | |
764 | ||
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); | |
771 | ||
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);\r | |
780 | BOOL BASSDEF(BASS_SampleStop)(HSAMPLE handle); | |
781 | ||
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); | |
788 | ||
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); | |
799 | ||
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);\r | |
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); | |
831 | #ifdef _WIN32 | |
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); | |
836 | ||
837 | BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *par); | |
838 | BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *par); | |
839 | #endif | |
840 | ||
841 | #ifdef __cplusplus | |
842 | } | |
843 | #endif | |
844 | ||
845 | #endif |