bass.h
上传用户:maxiaolivb
上传日期:2022-06-07
资源大小:915k
文件大小:37k
源码类别:

游戏引擎

开发平台:

Visual C++

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