Fmod.h
上传用户:lygtks
上传日期:2022-06-08
资源大小:874k
文件大小:43k
源码类别:

射击游戏

开发平台:

Visual C++

  1. /* ========================================================================================== */
  2. /* FMOD Main header file. Copyright (c), FireLight Multimedia 1999-2001.                      */
  3. /* ========================================================================================== */
  4. #ifndef _FMOD_H_
  5. #define _FMOD_H_
  6. /* ========================================================================================== */
  7. /* DEFINITIONS                                                                                */
  8. /* ========================================================================================== */
  9. #if defined(PLATFORM_LINUX) || defined(__linux__) || (defined(__GNUC__) && defined(WIN32))
  10.     #ifndef _cdecl
  11.         #define _cdecl 
  12.     #endif
  13.     #ifndef _stdcall
  14.         #define _stdcall
  15.     #endif
  16.     #define __PS __attribute__((packed)) /* gcc packed */
  17. #else 
  18.     #define __PS /*dummy*/
  19. #endif 
  20. #define F_API _stdcall
  21. #ifdef DLL_EXPORTS
  22. #define DLL_API __declspec(dllexport)
  23. #else
  24. #ifdef __LCC__
  25. #define DLL_API F_API
  26. #else
  27. #define DLL_API
  28. #endif /* __LCC__ */
  29. #endif /* DLL_EXPORTS */
  30. #define FMOD_VERSION 3.4f
  31. /* 
  32.     FMOD defined types 
  33. */
  34. typedef struct FSOUND_SAMPLE FSOUND_SAMPLE;
  35. typedef struct FSOUND_STREAM FSOUND_STREAM;
  36. typedef struct FSOUND_DSPUNIT FSOUND_DSPUNIT;
  37. typedef struct FMUSIC_MODULE FMUSIC_MODULE;
  38. typedef struct FSOUND_MATERIAL  FSOUND_MATERIAL;
  39. typedef struct FSOUND_GEOMLIST  FSOUND_GEOMLIST;
  40. /* 
  41.     Callback types
  42. */
  43. typedef signed char (_cdecl *FSOUND_STREAMCALLBACK) (FSOUND_STREAM *stream, void *buff, int len, int param);
  44. typedef void * (_cdecl *FSOUND_DSPCALLBACK) (void *originalbuffer, void *newbuffer, int length, int param);
  45. typedef void (_cdecl *FMUSIC_CALLBACK) (FMUSIC_MODULE *mod, unsigned char param);
  46. /*
  47. [ENUM]
  48. [
  49. [DESCRIPTION]
  50. On failure of commands in FMOD, use FSOUND_GetError to attain what happened.
  51. [SEE_ALSO]
  52. FSOUND_GetError
  53. ]
  54. */
  55. enum FMOD_ERRORS 
  56. {
  57. FMOD_ERR_NONE,    /* No errors */
  58. FMOD_ERR_BUSY,             /* Cannot call this command after FSOUND_Init.  Call FSOUND_Close first. */
  59. FMOD_ERR_UNINITIALIZED,    /* This command failed because FSOUND_Init or FSOUND_SetOutput was not called */
  60. FMOD_ERR_INIT,    /* Error initializing output device. */
  61. FMOD_ERR_ALLOCATED,    /* Error initializing output device, but more specifically, the output device is already in use and cannot be reused. */
  62. FMOD_ERR_PLAY,    /* Playing the sound failed. */
  63. FMOD_ERR_OUTPUT_FORMAT,    /* Soundcard does not support the features needed for this soundsystem (16bit stereo output) */
  64. FMOD_ERR_COOPERATIVELEVEL, /* Error setting cooperative level for hardware. */
  65. FMOD_ERR_CREATEBUFFER,    /* Error creating hardware sound buffer. */
  66. FMOD_ERR_FILE_NOTFOUND,    /* File not found */
  67. FMOD_ERR_FILE_FORMAT,    /* Unknown file format */
  68. FMOD_ERR_FILE_BAD,    /* Error loading file */
  69. FMOD_ERR_MEMORY,           /* Not enough memory  */
  70. FMOD_ERR_VERSION,    /* The version number of this file format is not supported */
  71. FMOD_ERR_INVALID_PARAM,    /* An invalid parameter was passed to this function */
  72. FMOD_ERR_NO_EAX,    /* Tried to use an EAX command on a non EAX enabled channel or output. */
  73. FMOD_ERR_NO_EAX2,    /* Tried to use an advanced EAX2 command on a non EAX2 enabled channel or output. */
  74. FMOD_ERR_CHANNEL_ALLOC,    /* Failed to allocate a new channel */
  75. FMOD_ERR_RECORD,    /* Recording is not supported on this machine */
  76. FMOD_ERR_MEDIAPLAYER,    /* Windows Media Player not installed so cannot play wma or use internet streaming. */
  77. };
  78. /*
  79. [ENUM]
  80. [
  81. [DESCRIPTION]
  82. These output types are used with FSOUND_SetOutput, to choose which output driver to use.
  83. FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver 
  84. does not support DirectX 6 Voice Manager Extensions.
  85.     FSOUND_OUTPUT_WINMM is recommended for NT and CE.
  86. [SEE_ALSO]
  87. FSOUND_SetOutput
  88. FSOUND_GetOutput
  89. ]
  90. */
  91. enum FSOUND_OUTPUTTYPES
  92. {
  93. FSOUND_OUTPUT_NOSOUND,    /* NoSound driver, all calls to this succeed but do noaward. */
  94. FSOUND_OUTPUT_WINMM,      /* Windows Multimedia driver. */
  95. FSOUND_OUTPUT_DSOUND,     /* DirectSound driver.  You need this to get EAX or EAX2 support. */
  96. FSOUND_OUTPUT_A3D,        /* A3D driver.  You need this to get geometry support. */
  97.     FSOUND_OUTPUT_OSS,        /* Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers. */
  98.     FSOUND_OUTPUT_ESD,        /* Linux/Unix ESD (Enlightment Sound Daemon) driver. */
  99.     FSOUND_OUTPUT_ALSA        /* Linux Alsa driver. */
  100. };
  101. /*
  102. [ENUM]
  103. [
  104. [DESCRIPTION]
  105. These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act 
  106. upon for other reasons using FSOUND_GetMixer.
  107. [SEE_ALSO]
  108. FSOUND_SetMixer
  109. FSOUND_GetMixer
  110. ]
  111. */
  112. enum FSOUND_MIXERTYPES
  113. {
  114. FSOUND_MIXER_AUTODETECT, /* Enables autodetection of the fastest mixer based on your cpu. */
  115. FSOUND_MIXER_BLENDMODE, /* Enables the standard non mmx, blendmode mixer. */
  116. FSOUND_MIXER_MMXP5, /* Enables the mmx, pentium optimized blendmode mixer. */
  117. FSOUND_MIXER_MMXP6, /* Enables the mmx, ppro/p2/p3 optimized mixer. */
  118. FSOUND_MIXER_QUALITY_AUTODETECT,/* Enables autodetection of the fastest quality mixer based on your cpu. */
  119. FSOUND_MIXER_QUALITY_FPU, /* Enables the interpolating/volume ramping FPU mixer.  */
  120. FSOUND_MIXER_QUALITY_MMXP5, /* Enables the interpolating/volume ramping p5 MMX mixer.  */
  121. FSOUND_MIXER_QUALITY_MMXP6, /* Enables the interpolating/volume ramping ppro/p2/p3+ MMX mixer.  */
  122. };
  123. /*
  124. [ENUM]
  125. [
  126. [DESCRIPTION]
  127. These definitions describe the type of song being played.
  128. [SEE_ALSO]
  129. FMUSIC_GetType
  130. ]
  131. */
  132. enum FMUSIC_TYPES
  133. {
  134. FMUSIC_TYPE_NONE,
  135. FMUSIC_TYPE_MOD, /* Protracker / Fasttracker */
  136. FMUSIC_TYPE_S3M, /* ScreamTracker 3 */
  137. FMUSIC_TYPE_XM, /* FastTracker 2 */
  138. FMUSIC_TYPE_IT, /* Impulse Tracker. */
  139. FMUSIC_TYPE_MIDI, /* MIDI file */
  140. };
  141. /*
  142. [DEFINE_START] 
  143. [
  144.   [NAME] 
  145. FSOUND_DSP_PRIORITIES
  146. [DESCRIPTION]
  147. These default priorities are 
  148. [SEE_ALSO]
  149. FSOUND_DSP_Create
  150. FSOUND_DSP_SetPriority
  151.     FSOUND_DSP_GetSpectrum
  152. ]
  153. */
  154. #define FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT        0       /* DSP CLEAR unit - done first */
  155. #define FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT          100     /* DSP SFX unit - done second */
  156. #define FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT        200     /* DSP MUSIC unit - done third */
  157. #define FSOUND_DSP_DEFAULTPRIORITY_USER             300     /* User priority, use this as reference */
  158. #define FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT          900     /* This reads data for FSOUND_DSP_GetSpectrum, so it comes after user units */
  159. #define FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT 1000    /* DSP CLIP AND COPY unit - last */
  160. /* [DEFINE_END] */
  161. /*
  162. [DEFINE_START] 
  163. [
  164.   [NAME] 
  165. FSOUND_CAPS
  166. [DESCRIPTION]
  167. Driver description bitfields.  Use FSOUND_Driver_GetCaps to determine if a driver enumerated
  168. has the settings you are after.  The enumerated driver depends on the output mode, see
  169. FSOUND_OUTPUTTYPES
  170. [SEE_ALSO]
  171. FSOUND_GetDriverCaps
  172. FSOUND_OUTPUTTYPES
  173. ]
  174. */
  175. #define FSOUND_CAPS_HARDWARE 0x1 /* This driver supports hardware accelerated 3d sound. */
  176. #define FSOUND_CAPS_EAX 0x2 /* This driver supports EAX reverb */
  177. #define FSOUND_CAPS_GEOMETRY_OCCLUSIONS 0x4 /* This driver supports (A3D) geometry occlusions */
  178. #define FSOUND_CAPS_GEOMETRY_REFLECTIONS 0x8 /* This driver supports (A3D) geometry reflections */
  179. #define FSOUND_CAPS_EAX2 0x10 /* This driver supports EAX2/A3D3 reverb */
  180. /* [DEFINE_END] */
  181. /*
  182. [DEFINE_START] 
  183. [
  184.   [NAME] 
  185. FSOUND_MODES
  186. [DESCRIPTION]
  187. Sample description bitfields, OR them together for loading and describing samples.
  188.     NOTE.  If the file format being loaded already has a defined format, such as WAV or MP3, then 
  189.     trying to override the pre-defined format with a new set of format flags will not work.  For
  190.     example, an 8 bit WAV file will not load as 16bit if you specify FSOUND_16BITS.  It will just
  191.     ignore the flag and go ahead loading it as 8bits.  For these type of formats the only flags
  192.     you can specify that will really alter the behaviour of how it is loaded, are the following.
  193.     FSOUND_LOOP_OFF
  194.     FSOUND_LOOP_NORMAL
  195.     FSOUND_LOOP_BIDI
  196.     FSOUND_HW3D
  197.     FSOUND_2D
  198.     FSOUND_STREAMABLE
  199.     FSOUND_LOADMEMORY
  200.     FSOUND_LOADRAW          
  201.     FSOUND_MPEGACCURATE     
  202.     See flag descriptions for what these do.
  203. ]
  204. */
  205. #define FSOUND_LOOP_OFF 0x00000001 /* For non looping samples. */
  206. #define FSOUND_LOOP_NORMAL 0x00000002 /* For forward looping samples. */
  207. #define FSOUND_LOOP_BIDI 0x00000004 /* For bidirectional looping samples.  (no effect if in hardware). */
  208. #define FSOUND_8BITS 0x00000008 /* For 8 bit samples. */
  209. #define FSOUND_16BITS 0x00000010 /* For 16 bit samples. */
  210. #define FSOUND_MONO 0x00000020 /* For mono samples. */
  211. #define FSOUND_STEREO 0x00000040 /* For stereo samples. */
  212. #define FSOUND_UNSIGNED 0x00000080 /* For source data containing unsigned samples. */
  213. #define FSOUND_SIGNED 0x00000100 /* For source data containing signed data. */
  214. #define FSOUND_DELTA 0x00000200 /* For source data stored as delta values. */
  215. #define FSOUND_IT214 0x00000400 /* For source data stored using IT214 compression. */
  216. #define FSOUND_IT215 0x00000800 /* For source data stored using IT215 compression. */
  217. #define FSOUND_HW3D 0x00001000 /* Attempts to make samples use 3d hardware acceleration. (if the card supports it) */
  218. #define FSOUND_2D 0x00002000 /* Ignores any 3d processing.  Overrides FSOUND_HW3D.  Located in software. */
  219. #define FSOUND_STREAMABLE 0x00004000 /* For a streamomg sound where you feed the data to it.  If you dont supply this sound may come out corrupted.  (only affects a3d output) */
  220. #define FSOUND_LOADMEMORY 0x00008000 /* "name" will be interpreted as a pointer to data for streaming and samples. */
  221. #define FSOUND_LOADRAW 0x00010000 /* Will ignore file format and treat as raw pcm. */
  222. #define FSOUND_MPEGACCURATE 0x00020000 /* For FSOUND_Stream_OpenFile - for accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime.  WARNING, see FSOUNDStream_OpenFile for inital opening time performance issues. */
  223. #define FSOUND_FORCEMONO    0x00040000  /* For forcing stereo streams and samples to be mono - needed with FSOUND_HW3D - incurs speed hit */
  224. #define FSOUND_HW2D         0x00080000  /* 2D hardware sounds.  allows hardware specific effects */
  225. #define FSOUND_ENABLEFX     0x00100000  /* Allows DX8 FX to be played back on a sound.  Requires DirectX 8 - Note these sounds cannot be played more than once, be 8 bit, be less than a certain size, or have a changing frequency */
  226. /* 
  227.     FSOUND_NORMAL is a default sample type.  Loop off, 8bit mono, signed, not hardware 
  228.     accelerated.  Some API functions ignore 8bits and mono, as it may be an mpeg/wav/etc which 
  229.     has its format predetermined.
  230. */
  231. #define FSOUND_NORMAL (FSOUND_LOOP_OFF | FSOUND_8BITS | FSOUND_MONO)
  232. /* [DEFINE_END] */
  233. /*
  234. [DEFINE_START] 
  235. [
  236.   [NAME] 
  237. FSOUND_CDPLAYMODES
  238. [DESCRIPTION]
  239. Playback method for a CD Audio track, using FSOUND_CD_Play
  240. [SEE_ALSO]
  241. FSOUND_CD_Play
  242. ]
  243. */
  244. #define FSOUND_CD_PLAYCONTINUOUS 0 /* Starts from the current track and plays to end of CD. */
  245. #define FSOUND_CD_PLAYONCE 1 /* Plays the specified track then stops. */
  246. #define FSOUND_CD_PLAYLOOPED 2 /* Plays the specified track looped, forever until stopped manually. */
  247. #define FSOUND_CD_PLAYRANDOM 3 /* Plays tracks in random order */
  248. /* [DEFINE_END] */
  249. /*
  250. [DEFINE_START] 
  251. [
  252.   [NAME] 
  253. FSOUND_MISC_VALUES
  254. [DESCRIPTION]
  255. Miscellaneous values for FMOD functions.
  256. [SEE_ALSO]
  257. FSOUND_PlaySound
  258. FSOUND_PlaySoundEx
  259. FSOUND_Sample_Alloc
  260. FSOUND_Sample_Load
  261. FSOUND_SetPan
  262. ]
  263. */
  264. #define FSOUND_FREE     -1     /* value to play on any free channel, or to allocate a sample in a free sample slot. */
  265. #define FSOUND_UNMANAGED     -2     /* value to allocate a sample that is NOT managed by FSOUND or placed in a sample slot. */
  266. #define FSOUND_ALL     -3     /* for a channel index , this flag will affect ALL channels available!  Not supported by every function. */
  267. #define FSOUND_STEREOPAN     -1     /* value for FSOUND_SetPan so that stereo sounds are not played at half volume.  See FSOUND_SetPan for more on this. */
  268. #define FSOUND_SYSTEMCHANNEL    -1000   /* special channel ID for channel based functions that want to alter the global FSOUND software mixing output channel */
  269. /* [DEFINE_END] */
  270. /*
  271. [ENUM]
  272. [
  273. [DESCRIPTION]
  274. These are environment types defined for use with the FSOUND_Reverb API.
  275. [SEE_ALSO]
  276. FSOUND_Reverb_SetEnvironment
  277. FSOUND_Reverb_SetEnvironmentAdvanced
  278. ]
  279. */
  280. enum FSOUND_REVERB_ENVIRONMENTS
  281. {
  282.     FSOUND_ENVIRONMENT_GENERIC,
  283.     FSOUND_ENVIRONMENT_PADDEDCELL,
  284.     FSOUND_ENVIRONMENT_ROOM,
  285.     FSOUND_ENVIRONMENT_BATHROOM,
  286.     FSOUND_ENVIRONMENT_LIVINGROOM,
  287.     FSOUND_ENVIRONMENT_STONEROOM,
  288.     FSOUND_ENVIRONMENT_AUDITORIUM,
  289.     FSOUND_ENVIRONMENT_CONCERTHALL,
  290.     FSOUND_ENVIRONMENT_CAVE,
  291.     FSOUND_ENVIRONMENT_ARENA,
  292.     FSOUND_ENVIRONMENT_HANGAR,
  293.     FSOUND_ENVIRONMENT_CARPETEDHALLWAY,
  294.     FSOUND_ENVIRONMENT_HALLWAY,
  295.     FSOUND_ENVIRONMENT_STONECORRIDOR,
  296.     FSOUND_ENVIRONMENT_ALLEY,
  297.     FSOUND_ENVIRONMENT_FOREST,
  298.     FSOUND_ENVIRONMENT_CITY,
  299.     FSOUND_ENVIRONMENT_MOUNTAINS,
  300.     FSOUND_ENVIRONMENT_QUARRY,
  301.     FSOUND_ENVIRONMENT_PLAIN,
  302.     FSOUND_ENVIRONMENT_PARKINGLOT,
  303.     FSOUND_ENVIRONMENT_SEWERPIPE,
  304.     FSOUND_ENVIRONMENT_UNDERWATER,
  305.     FSOUND_ENVIRONMENT_DRUGGED,
  306.     FSOUND_ENVIRONMENT_DIZZY,
  307.     FSOUND_ENVIRONMENT_PSYCHOTIC,
  308.     FSOUND_ENVIRONMENT_COUNT
  309. };
  310. /*
  311. [DEFINE_START] 
  312. [
  313.   [NAME] 
  314. FSOUND_REVERBMIX_USEDISTANCE
  315. [DESCRIPTION]
  316. Used with FSOUND_Reverb_SetMix, this setting allows reverb to attenuate based on distance from the listener.
  317. Instead of hard coding a value with FSOUND_Reverb_SetMix, this value can be used instead, for a more natural
  318. reverb dropoff.
  319. [SEE_ALSO]
  320. FSOUND_Reverb_SetMix
  321. ]
  322. */
  323. #define FSOUND_REVERBMIX_USEDISTANCE -1.0f /* used with FSOUND_Reverb_SetMix to scale reverb by distance */
  324. /* [DEFINE_END] */
  325. /*
  326. [DEFINE_START] 
  327. [
  328.   [NAME] 
  329. FSOUND_REVERB_IGNOREPARAM
  330. [DESCRIPTION]
  331. Used with FSOUND_Reverb_SetEnvironment and FSOUND_Reverb_SetEnvironmentAdvanced, this can
  332. be placed in the place of a specific parameter for the reverb setting.  It allows you to 
  333. not set any parameters except the ones you are interested in .. and example would be this.
  334. FSOUND_Reverb_SetEnvironment(FSOUND_REVERB_IGNOREPARAM,
  335.  FSOUND_REVERB_IGNOREPARAM,
  336.  FSOUND_REVERB_IGNOREPARAM,  
  337.  0.0f);
  338. This means env, vol and decay are left alone, but damp is set to 0.
  339. [SEE_ALSO]
  340. FSOUND_Reverb_SetEnvironment
  341. FSOUND_Reverb_SetEnvironmentAdvanced
  342. ]
  343. */
  344. #define FSOUND_REVERB_IGNOREPARAM -9999999 /* used with FSOUND_Reverb_SetEnvironmentAdvanced to ignore certain parameters by choice. */
  345. /* [DEFINE_END] */
  346. /*
  347. [DEFINE_START] 
  348. [
  349.   [NAME] 
  350. FSOUND_REVERB_PRESETS
  351. [DESCRIPTION]
  352. A set of predefined environment PARAMETERS, created by Creative Labs
  353. These can be placed directly into the FSOUND_Reverb_SetEnvironment call
  354. [SEE_ALSO]
  355. FSOUND_Reverb_SetEnvironment
  356. ]
  357. */
  358. #define FSOUND_PRESET_OFF   FSOUND_ENVIRONMENT_GENERIC,0.0f,0.0f,0.0f
  359. #define FSOUND_PRESET_GENERIC         FSOUND_ENVIRONMENT_GENERIC,0.5f,1.493f,0.5f
  360. #define FSOUND_PRESET_PADDEDCELL      FSOUND_ENVIRONMENT_PADDEDCELL,0.25f,0.1f,0.0f
  361. #define FSOUND_PRESET_ROOM            FSOUND_ENVIRONMENT_ROOM,0.417f,0.4f,0.666f
  362. #define FSOUND_PRESET_BATHROOM        FSOUND_ENVIRONMENT_BATHROOM,0.653f,1.499f,0.166f
  363. #define FSOUND_PRESET_LIVINGROOM      FSOUND_ENVIRONMENT_LIVINGROOM,0.208f,0.478f,0.0f
  364. #define FSOUND_PRESET_STONEROOM       FSOUND_ENVIRONMENT_STONEROOM,0.5f,2.309f,0.888f
  365. #define FSOUND_PRESET_AUDITORIUM      FSOUND_ENVIRONMENT_AUDITORIUM,0.403f,4.279f,0.5f
  366. #define FSOUND_PRESET_CONCERTHALL     FSOUND_ENVIRONMENT_CONCERTHALL,0.5f,3.961f,0.5f
  367. #define FSOUND_PRESET_CAVE            FSOUND_ENVIRONMENT_CAVE,0.5f,2.886f,1.304f
  368. #define FSOUND_PRESET_ARENA           FSOUND_ENVIRONMENT_ARENA,0.361f,7.284f,0.332f
  369. #define FSOUND_PRESET_HANGAR          FSOUND_ENVIRONMENT_HANGAR,0.5f,10.0f,0.3f
  370. #define FSOUND_PRESET_CARPETEDHALLWAY FSOUND_ENVIRONMENT_CARPETEDHALLWAY,0.153f,0.259f,2.0f
  371. #define FSOUND_PRESET_HALLWAY         FSOUND_ENVIRONMENT_HALLWAY,0.361f,1.493f,0.0f
  372. #define FSOUND_PRESET_STONECORRIDOR   FSOUND_ENVIRONMENT_STONECORRIDOR,0.444f,2.697f,0.638f
  373. #define FSOUND_PRESET_ALLEY           FSOUND_ENVIRONMENT_ALLEY,0.25f,1.752f,0.776f
  374. #define FSOUND_PRESET_FOREST          FSOUND_ENVIRONMENT_FOREST,0.111f,3.145f,0.472f
  375. #define FSOUND_PRESET_CITY            FSOUND_ENVIRONMENT_CITY,0.111f,2.767f,0.224f
  376. #define FSOUND_PRESET_MOUNTAINS       FSOUND_ENVIRONMENT_MOUNTAINS,0.194f,7.841f,0.472f
  377. #define FSOUND_PRESET_QUARRY          FSOUND_ENVIRONMENT_QUARRY,1.0f,1.499f,0.5f
  378. #define FSOUND_PRESET_PLAIN           FSOUND_ENVIRONMENT_PLAIN,0.097f,2.767f,0.224f
  379. #define FSOUND_PRESET_PARKINGLOT      FSOUND_ENVIRONMENT_PARKINGLOT,0.208f,1.652f,1.5f
  380. #define FSOUND_PRESET_SEWERPIPE       FSOUND_ENVIRONMENT_SEWERPIPE,0.652f,2.886f,0.25f
  381. #define FSOUND_PRESET_UNDERWATER      FSOUND_ENVIRONMENT_UNDERWATER,1.0f,1.499f,0.0f
  382. #define FSOUND_PRESET_DRUGGED         FSOUND_ENVIRONMENT_DRUGGED,0.875f, 8.392f,1.388f
  383. #define FSOUND_PRESET_DIZZY           FSOUND_ENVIRONMENT_DIZZY,0.139f,17.234f,0.666f
  384. #define FSOUND_PRESET_PSYCHOTIC       FSOUND_ENVIRONMENT_PSYCHOTIC,0.486f,7.563f,0.806f
  385. /* [DEFINE_END] */
  386. /*
  387. [DEFINE_START] 
  388. [
  389.   [NAME] 
  390. FSOUND_GEOMETRY_MODES
  391. [DESCRIPTION]
  392. Geometry flags, used as the mode flag in FSOUND_Geometry_AddPolygon
  393. [SEE_ALSO]
  394. FSOUND_Geometry_AddPolygon
  395. ]
  396. */
  397. #define FSOUND_GEOMETRY_NORMAL 0x00 /* Default geometry type.  Occluding polygon */
  398. #define FSOUND_GEOMETRY_REFLECTIVE 0x01 /* This polygon is reflective */
  399. #define FSOUND_GEOMETRY_OPENING 0x02 /* Overlays a transparency over the previous polygon.  The openingfactor value supplied is copied internally. */
  400. #define FSOUND_GEOMETRY_OPENING_REFERENCE 0x04 /* Overlays a transparency over the previous polygon.  The openingfactor supplied is pointed to (for access when building a list) */
  401. /* [DEFINE_END] */
  402. /*
  403. [DEFINE_START] 
  404. [
  405.   [NAME] 
  406. FSOUND_FX_MODES
  407. [DESCRIPTION]
  408.     These flags are used with FSOUND_FX_Enable to enable or disable DirectX 8 FX for a channel.
  409. [SEE_ALSO]
  410.     FSOUND_FX_Enable
  411.     FSOUND_FX_SetChorus
  412.     FSOUND_FX_SetCompressor
  413.     FSOUND_FX_SetDistortion
  414.     FSOUND_FX_SetEcho
  415.     FSOUND_FX_SetFlanger
  416.     FSOUND_FX_SetGargle
  417.     FSOUND_FX_SetI3DL2Reverb
  418.     FSOUND_FX_SetParamEQ
  419.     FSOUND_FX_SetWavesReverb
  420. ]
  421. */
  422. #define FSOUND_FX_CHORUS                    0x001
  423. #define FSOUND_FX_COMPRESSOR                0x002
  424. #define FSOUND_FX_DISTORTION                0x004
  425. #define FSOUND_FX_ECHO                      0x008
  426. #define FSOUND_FX_FLANGER                   0x010
  427. #define FSOUND_FX_GARGLE                    0x020
  428. #define FSOUND_FX_I3DL2REVERB               0x040
  429. #define FSOUND_FX_PARAMEQ                   0x080
  430. #define FSOUND_FX_WAVES_REVERB              0x100
  431. /* [DEFINE_END] */
  432. /*
  433. [ENUM]
  434. [
  435. [DESCRIPTION]
  436. These are speaker types defined for use with the FSOUND_SetSpeakerMode command.
  437.     Note that this only works with FSOUND_OUTPUT_DSOUND output mode.
  438. [SEE_ALSO]
  439.     FSOUND_SetSpeakerMode
  440. ]
  441. */
  442. enum FSOUND_SPEAKERMODES
  443. {
  444.     FSOUND_SPEAKERMODE_5POINT1,       /* The audio is played through a speaker arrangement of surround speakers with a subwoofer. */
  445.     FSOUND_SPEAKERMODE_HEADPHONE,     /* The speakers are headphones. */
  446.     FSOUND_SPEAKERMODE_MONO,          /* The speakers are monaural. */
  447.     FSOUND_SPEAKERMODE_QUAD,          /* The speakers are quadraphonic.  */
  448.     FSOUND_SPEAKERMODE_STEREO,        /* The speakers are stereo (default value). */
  449.     FSOUND_SPEAKERMODE_SURROUND       /* The speakers are surround sound. */
  450. };
  451. /*
  452. [DEFINE_START] 
  453. [
  454.   [NAME] 
  455. FSOUND_INIT_FLAGS
  456. [DESCRIPTION]
  457. Initialization flags.  Use them with FSOUND_Init in the flags parameter to change various behaviour.
  458.     
  459.     FSOUND_INIT_ENABLEOUTPUTFX Is an init mode which enables the FSOUND mixer buffer to be affected by DirectX 8 effects.
  460.     Note that due to limitations of DirectSound, FSOUND_Init may fail if this is enabled because the buffersize is too small.
  461.     This can be fixed with FSOUND_SetBufferSize.  Increase the BufferSize until it works.
  462.     When it is enabled you can use the FSOUND_FX api, and use FSOUND
  463. [SEE_ALSO]
  464. FSOUND_Init
  465. ]
  466. */
  467. #define FSOUND_INIT_USEDEFAULTMIDISYNTH 0x01 /* Causes MIDI playback to force software decoding. */
  468. #define FSOUND_INIT_GLOBALFOCUS 0x02 /* For DirectSound output - sound is not muted when window is out of focus. */
  469. #define FSOUND_INIT_ENABLEOUTPUTFX          0x04    /* For DirectSound output - Allows FSOUND_FX api to be used on global software mixer output! */
  470. /* [DEFINE_END] */
  471. /* ========================================================================================== */
  472. /* FUNCTION PROTOTYPES                                                                        */
  473. /* ========================================================================================== */
  474. #ifdef __cplusplus
  475. extern "C" {
  476. #endif
  477. /* ================================== */
  478. /* Initialization / Global functions. */
  479. /* ================================== */
  480. /* 
  481.     PRE - FSOUND_Init functions. These can't be called after FSOUND_Init is 
  482.     called (they will fail). They set up FMOD system functionality. 
  483. */
  484. DLL_API signed char F_API FSOUND_SetOutput(int outputtype);
  485. DLL_API signed char F_API FSOUND_SetDriver(int driver);
  486. DLL_API signed char F_API FSOUND_SetMixer(int mixer);
  487. DLL_API signed char F_API FSOUND_SetBufferSize(int len_ms);
  488. DLL_API signed char F_API FSOUND_SetHWND(void *hwnd);
  489. DLL_API signed char F_API FSOUND_SetMinHardwareChannels(int min);
  490. DLL_API signed char F_API FSOUND_SetMaxHardwareChannels(int max);
  491. /* 
  492.     Main initialization / closedown functions.
  493.     Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override 
  494.            with MIDI playback.
  495.          : Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible no matter 
  496.            which window is in focus.
  497. */
  498. DLL_API signed char F_API FSOUND_Init(int mixrate, int maxsoftwarechannels, unsigned int flags);
  499. DLL_API void F_API FSOUND_Close();
  500. /* 
  501.     Runtime system level functions 
  502. */
  503. DLL_API void F_API FSOUND_SetSpeakerMode(unsigned int speakermode);
  504. DLL_API void F_API FSOUND_SetSFXMasterVolume(int volume);
  505. DLL_API void F_API FSOUND_SetPanSeperation(float pansep);
  506. DLL_API void F_API FSOUND_File_SetCallbacks(
  507.              unsigned int (_cdecl *OpenCallback)(const char *name),
  508.              void         (_cdecl *CloseCallback)(unsigned int handle),
  509.              int          (_cdecl *ReadCallback)(void *buffer, int size, unsigned int handle),
  510.              int          (_cdecl *SeekCallback)(unsigned int handle, int pos, signed char mode),
  511.              int          (_cdecl *TellCallback)(unsigned int handle));
  512. /* 
  513.     System information functions. 
  514. */
  515. DLL_API int F_API FSOUND_GetError();
  516. DLL_API float F_API FSOUND_GetVersion();
  517. DLL_API int F_API FSOUND_GetOutput();
  518. DLL_API void *          F_API FSOUND_GetOutputHandle();
  519. DLL_API int F_API FSOUND_GetDriver();
  520. DLL_API int F_API FSOUND_GetMixer();
  521. DLL_API int F_API FSOUND_GetNumDrivers();
  522. DLL_API signed char * F_API FSOUND_GetDriverName(int id);
  523. DLL_API signed char  F_API FSOUND_GetDriverCaps(int id, unsigned int *caps);
  524. DLL_API int F_API FSOUND_GetOutputRate();
  525. DLL_API int F_API FSOUND_GetMaxChannels();
  526. DLL_API int F_API FSOUND_GetMaxSamples();
  527. DLL_API int F_API FSOUND_GetSFXMasterVolume();
  528. DLL_API int F_API FSOUND_GetNumHardwareChannels();
  529. DLL_API int F_API FSOUND_GetChannelsPlaying();
  530. DLL_API float F_API FSOUND_GetCPUUsage();
  531. /* =================================== */
  532. /* Sample management / load functions. */
  533. /* =================================== */
  534. /* 
  535.     Sample creation and management functions
  536.     Note : Use FSOUND_LOADMEMORY   flag with FSOUND_Sample_Load to load from memory.
  537.            Use FSOUND_LOADRAW      flag with FSOUND_Sample_Load to treat as as raw pcm data.
  538. */
  539. DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Load(int index, const char *name, unsigned int mode, int memlength);
  540. DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Alloc(int index, int length, unsigned int mode, int deffreq, int defvol, int defpan, int defpri);
  541. DLL_API void F_API FSOUND_Sample_Free(FSOUND_SAMPLE *sptr);
  542. DLL_API signed char F_API FSOUND_Sample_Upload(FSOUND_SAMPLE *sptr, void *srcdata, unsigned int mode);
  543. DLL_API signed char F_API FSOUND_Sample_Lock(FSOUND_SAMPLE *sptr, int offset, int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2);
  544. DLL_API signed char F_API FSOUND_Sample_Unlock(FSOUND_SAMPLE *sptr, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2);
  545. /*
  546.     Sample control functions
  547. */
  548. DLL_API signed char F_API FSOUND_Sample_SetLoopMode(FSOUND_SAMPLE *sptr, unsigned int loopmode);
  549. DLL_API signed char F_API FSOUND_Sample_SetLoopPoints(FSOUND_SAMPLE *sptr, int loopstart, int loopend);
  550. DLL_API signed char F_API FSOUND_Sample_SetDefaults(FSOUND_SAMPLE *sptr, int deffreq, int defvol, int defpan, int defpri);
  551. DLL_API signed char F_API FSOUND_Sample_SetMinMaxDistance(FSOUND_SAMPLE *sptr, float min, float max);
  552. /* 
  553.     Sample information functions
  554. */
  555. DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Get(int sampno);
  556. DLL_API char * F_API FSOUND_Sample_GetName(FSOUND_SAMPLE *sptr);
  557. DLL_API unsigned int F_API FSOUND_Sample_GetLength(FSOUND_SAMPLE *sptr);
  558. DLL_API signed char F_API FSOUND_Sample_GetLoopPoints(FSOUND_SAMPLE *sptr, int *loopstart, int *loopend);
  559. DLL_API signed char F_API FSOUND_Sample_GetDefaults(FSOUND_SAMPLE *sptr, int *deffreq, int *defvol, int *defpan, int *defpri);
  560. DLL_API unsigned int F_API FSOUND_Sample_GetMode(FSOUND_SAMPLE *sptr);
  561.   
  562. /* ============================ */
  563. /* Channel control functions.   */
  564. /* ============================ */
  565. /* 
  566.     Playing and stopping sounds.  
  567. */
  568. DLL_API int F_API FSOUND_PlaySound(int channel, FSOUND_SAMPLE *sptr);
  569. DLL_API int F_API FSOUND_PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
  570. DLL_API signed char F_API FSOUND_StopSound(int channel);
  571. /* 
  572.     Functions to control playback of a channel.
  573. */
  574. DLL_API signed char F_API FSOUND_SetFrequency(int channel, int freq);
  575. DLL_API signed char F_API FSOUND_SetVolume(int channel, int vol);
  576. DLL_API signed char  F_API FSOUND_SetVolumeAbsolute(int channel, int vol);
  577. DLL_API signed char F_API FSOUND_SetPan(int channel, int pan);
  578. DLL_API signed char F_API FSOUND_SetSurround(int channel, signed char surround);
  579. DLL_API signed char F_API FSOUND_SetMute(int channel, signed char mute);
  580. DLL_API signed char F_API FSOUND_SetPriority(int channel, int priority);
  581. DLL_API signed char F_API FSOUND_SetReserved(int channel, signed char reserved);
  582. DLL_API signed char F_API FSOUND_SetPaused(int channel, signed char paused);
  583. DLL_API signed char F_API FSOUND_SetLoopMode(int channel, unsigned int loopmode);
  584. DLL_API signed char     F_API FSOUND_SetCurrentPosition(int channel, unsigned int offset);
  585. /* 
  586.     Functions to control DX8 only effects processing.
  587.     Note that FX enabled samples can only be played once at a time.
  588. */
  589. DLL_API signed char     F_API FSOUND_FX_Enable(int channel, unsigned int fx);    /* Set bits to enable following fx */
  590. DLL_API signed char     F_API FSOUND_FX_SetChorus(int channel, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase);
  591. DLL_API signed char     F_API FSOUND_FX_SetCompressor(int channel, float Gain, float Attack, float Release, float Threshold, float Ratio, float Predelay);
  592. DLL_API signed char     F_API FSOUND_FX_SetDistortion(int channel, float Gain, float Edge, float PostEQCenterFrequency, float PostEQBandwidth, float PreLowpassCutoff);
  593. DLL_API signed char     F_API FSOUND_FX_SetEcho(int channel, float WetDryMix, float Feedback, float LeftDelay, float RightDelay, int PanDelay);
  594. DLL_API signed char     F_API FSOUND_FX_SetFlanger(int channel, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase);
  595. DLL_API signed char     F_API FSOUND_FX_SetGargle(int channel, int RateHz, int WaveShape);
  596. DLL_API signed char     F_API FSOUND_FX_SetI3DL2Reverb(int channel, int Room, int RoomHF, float RoomRolloffFactor, float DecayTime, float DecayHFRatio, int Reflections, float ReflectionsDelay, int Reverb, float ReverbDelay, float Diffusion, float Density, float HFReference);
  597. DLL_API signed char     F_API FSOUND_FX_SetParamEQ(int channel, float Center, float Bandwidth, float Gain);
  598. DLL_API signed char     F_API FSOUND_FX_SetWavesReverb(int channel, float InGain, float ReverbMix, float ReverbTime, float HighFreqRTRatio);  
  599. /* 
  600.     Channel information functions.
  601. */
  602. DLL_API signed char F_API FSOUND_IsPlaying(int channel);
  603. DLL_API int F_API FSOUND_GetFrequency(int channel);
  604. DLL_API int F_API FSOUND_GetVolume(int channel);
  605. DLL_API int F_API FSOUND_GetPan(int channel);
  606. DLL_API signed char F_API FSOUND_GetSurround(int channel);
  607. DLL_API signed char F_API FSOUND_GetMute(int channel);
  608. DLL_API int F_API FSOUND_GetPriority(int channel);
  609. DLL_API signed char F_API FSOUND_GetReserved(int channel);
  610. DLL_API signed char F_API FSOUND_GetPaused(int channel);
  611. DLL_API unsigned int F_API FSOUND_GetCurrentPosition(int channel);
  612. DLL_API FSOUND_SAMPLE * F_API FSOUND_GetCurrentSample(int channel);
  613. DLL_API float F_API FSOUND_GetCurrentVU(int channel);
  614.  
  615. /* =================== */
  616. /* 3D sound functions. */
  617. /* =================== */
  618. /* 
  619.     See also FSOUND_Sample_SetMinMaxDistance (above)
  620. */
  621. DLL_API void F_API FSOUND_3D_Update();
  622. DLL_API signed char F_API FSOUND_3D_SetAttributes(int channel, float *pos, float *vel);
  623. DLL_API signed char F_API FSOUND_3D_GetAttributes(int channel, float *pos, float *vel);
  624. DLL_API void F_API FSOUND_3D_Listener_SetAttributes(float *pos, float *vel, float fx, float fy, float fz, float tx, float ty, float tz);
  625. DLL_API void F_API FSOUND_3D_Listener_GetAttributes(float *pos, float *vel, float *fx, float *fy, float *fz, float *tx, float *ty, float *tz);
  626. DLL_API void F_API FSOUND_3D_Listener_SetDopplerFactor(float scale);
  627. DLL_API void F_API FSOUND_3D_Listener_SetDistanceFactor(float scale);
  628. DLL_API void F_API FSOUND_3D_Listener_SetRolloffFactor(float scale);
  629.  
  630. /* ========================= */
  631. /* File Streaming functions. */
  632. /* ========================= */
  633. /*
  634.     Note : Use FSOUND_LOADMEMORY   flag with FSOUND_Stream_OpenFile to stream from memory.
  635.            Use FSOUND_LOADRAW      flag with FSOUND_Stream_OpenFile to treat stream as raw pcm data.
  636.            Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_OpenFile to open mpegs in 'accurate mode' for settime/gettime/getlengthms.
  637. */
  638. DLL_API FSOUND_STREAM * F_API FSOUND_Stream_OpenFile(const char *filename, unsigned int mode, int memlength);
  639. DLL_API FSOUND_STREAM * F_API FSOUND_Stream_Create(FSOUND_STREAMCALLBACK callback, int length, unsigned int mode, int samplerate, int userdata);
  640. DLL_API int  F_API FSOUND_Stream_Play(int channel, FSOUND_STREAM *stream);
  641. DLL_API int F_API FSOUND_Stream_PlayEx(int channel, FSOUND_STREAM *stream, FSOUND_DSPUNIT *dsp, signed char startpaused);
  642. DLL_API signed char F_API FSOUND_Stream_Stop(FSOUND_STREAM *stream);
  643. DLL_API signed char F_API FSOUND_Stream_Close(FSOUND_STREAM *stream);
  644. DLL_API signed char F_API FSOUND_Stream_SetEndCallback(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata);
  645. DLL_API signed char F_API FSOUND_Stream_SetSynchCallback(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata);
  646. DLL_API FSOUND_SAMPLE * F_API FSOUND_Stream_GetSample(FSOUND_STREAM *stream);   /* every stream contains a sample to playback on */
  647. DLL_API FSOUND_DSPUNIT *F_API FSOUND_Stream_CreateDSP(FSOUND_STREAM *stream, FSOUND_DSPCALLBACK callback, int priority, int param);
  648. DLL_API signed char F_API FSOUND_Stream_SetPosition(FSOUND_STREAM *stream, unsigned int position);
  649. DLL_API unsigned int F_API FSOUND_Stream_GetPosition(FSOUND_STREAM *stream);
  650. DLL_API signed char F_API FSOUND_Stream_SetTime(FSOUND_STREAM *stream, int ms);
  651. DLL_API int F_API FSOUND_Stream_GetTime(FSOUND_STREAM *stream);
  652. DLL_API int F_API FSOUND_Stream_GetLength(FSOUND_STREAM *stream);
  653. DLL_API int F_API FSOUND_Stream_GetLengthMs(FSOUND_STREAM *stream);
  654. /* =================== */
  655. /* CD audio functions. */
  656. /* =================== */
  657. DLL_API signed char F_API FSOUND_CD_Play(int track);
  658. DLL_API void F_API FSOUND_CD_SetPlayMode(signed char mode);
  659. DLL_API signed char F_API FSOUND_CD_Stop();
  660. DLL_API signed char F_API FSOUND_CD_SetPaused(signed char paused);
  661. DLL_API signed char F_API FSOUND_CD_SetVolume(int volume);
  662. DLL_API signed char F_API FSOUND_CD_Eject();
  663. DLL_API signed char F_API FSOUND_CD_GetPaused();
  664. DLL_API int F_API FSOUND_CD_GetTrack();
  665. DLL_API int F_API FSOUND_CD_GetNumTracks();
  666. DLL_API int F_API FSOUND_CD_GetVolume();
  667. DLL_API int F_API FSOUND_CD_GetTrackLength(int track); 
  668. DLL_API int F_API FSOUND_CD_GetTrackTime();
  669. /*
  670.  ==============
  671.  DSP functions.
  672.  ==============
  673. */
  674. /* 
  675.     DSP Unit control and information functions. 
  676. */
  677. DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_Create(FSOUND_DSPCALLBACK callback, int priority, int param);
  678. DLL_API void F_API FSOUND_DSP_Free(FSOUND_DSPUNIT *unit);
  679. DLL_API void F_API FSOUND_DSP_SetPriority(FSOUND_DSPUNIT *unit, int priority);
  680. DLL_API int F_API FSOUND_DSP_GetPriority(FSOUND_DSPUNIT *unit);
  681. DLL_API void F_API FSOUND_DSP_SetActive(FSOUND_DSPUNIT *unit, signed char active);
  682. DLL_API signed char F_API FSOUND_DSP_GetActive(FSOUND_DSPUNIT *unit);
  683. /* 
  684.     Functions to get hold of FSOUND 'system DSP unit' handles. 
  685. */
  686. DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetClearUnit();
  687. DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetSFXUnit();
  688. DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetMusicUnit();
  689. DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetClipAndCopyUnit();
  690. DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetFFTUnit();
  691. /* 
  692.     Miscellaneous DSP functions 
  693. */
  694. DLL_API signed char F_API FSOUND_DSP_MixBuffers(void *destbuffer, void *srcbuffer, int len, int freq, int vol, int pan, unsigned int mode);
  695. DLL_API void F_API FSOUND_DSP_ClearMixBuffer();
  696. DLL_API int F_API FSOUND_DSP_GetBufferLength();         /* Length of each DSP update */
  697. DLL_API int F_API FSOUND_DSP_GetBufferLengthTotal();    /* Total buffer length due to FSOUND_SetBufferSize */
  698. DLL_API float *         F_API FSOUND_DSP_GetSpectrum();             /* Array of 512 floats */
  699. /* ================================================ */
  700. /* Geometry functions.  (NOT SUPPORTED IN LINUX/CE) */
  701. /* ================================================ */
  702. /* 
  703.     Scene/Polygon functions 
  704. */
  705. DLL_API signed char       F_API FSOUND_Geometry_AddPolygon(float *p1, float *p2, float *p3, float *p4, float *normal, unsigned int mode, float *openingfactor);
  706. DLL_API int   F_API FSOUND_Geometry_AddList(FSOUND_GEOMLIST *geomlist);
  707. /* 
  708.     Polygon list functions 
  709. */
  710. DLL_API FSOUND_GEOMLIST * F_API FSOUND_Geometry_List_Create(signed char boundingvolume);
  711. DLL_API signed char   F_API FSOUND_Geometry_List_Free(FSOUND_GEOMLIST *geomlist);
  712. DLL_API signed char   F_API FSOUND_Geometry_List_Begin(FSOUND_GEOMLIST *geomlist);
  713. DLL_API signed char   F_API FSOUND_Geometry_List_End(FSOUND_GEOMLIST *geomlist);
  714. /* 
  715.     Material functions 
  716. */
  717. DLL_API FSOUND_MATERIAL * F_API FSOUND_Geometry_Material_Create();
  718. DLL_API signed char       F_API FSOUND_Geometry_Material_Free(FSOUND_MATERIAL *material);
  719. DLL_API signed char       F_API FSOUND_Geometry_Material_SetAttributes(FSOUND_MATERIAL *material, float reflectancegain, float reflectancefreq, float transmittancegain, float transmittancefreq);
  720. DLL_API signed char   F_API FSOUND_Geometry_Material_GetAttributes(FSOUND_MATERIAL *material, float *reflectancegain, float *reflectancefreq, float *transmittancegain, float *transmittancefreq);
  721. DLL_API signed char   F_API FSOUND_Geometry_Material_Set(FSOUND_MATERIAL *material);
  722. /* ========================================================================== */
  723. /* Reverb functions. (eax, eax2, a3d 3.0 reverb)  (NOT SUPPORTED IN LINUX/CE) */
  724. /* ========================================================================== */
  725. /* 
  726.     Supporing EAX1, EAX2, A3D 3.0 (use FSOUND_REVERB_PRESETS if you like), 
  727.     (EAX2 support through emulation/parameter conversion) 
  728. */
  729. DLL_API signed char F_API FSOUND_Reverb_SetEnvironment(int env, float vol, float decay, float damp);
  730. /* 
  731.     Supporting EAX2, A3D 3.0 only.  Has no effect on EAX1
  732. */
  733. DLL_API signed char F_API FSOUND_Reverb_SetEnvironmentAdvanced(
  734. int   env,
  735. int   Room, /* [-10000, 0]     default: -10000 mB or use FSOUND_REVERB_IGNOREPARAM */
  736. int   RoomHF, /* [-10000, 0]     default: 0 mB or use FSOUND_REVERB_IGNOREPARAM */
  737. float RoomRolloffFactor, /* [0.0, 10.0]     default: 0.0 or use FSOUND_REVERB_IGNOREPARAM */
  738. float DecayTime, /* [0.1, 20.0]     default: 1.0 s or use FSOUND_REVERB_IGNOREPARAM */
  739. float DecayHFRatio, /* [0.1, 2.0]      default: 0.5 or use FSOUND_REVERB_IGNOREPARAM */
  740. int   Reflections, /* [-10000, 1000]  default: -10000 mB or use FSOUND_REVERB_IGNOREPARAM */
  741. float ReflectionsDelay, /* [0.0, 0.3]      default: 0.02 s or use FSOUND_REVERB_IGNOREPARAM */
  742. int   Reverb, /* [-10000, 2000]  default: -10000 mB or use FSOUND_REVERB_IGNOREPARAM */
  743. float ReverbDelay, /* [0.0, 0.1]      default: 0.04 s or use FSOUND_REVERB_IGNOREPARAM */
  744. float EnvironmentSize, /* [0.0, 100.0]    default: 100.0 % or use FSOUND_REVERB_IGNOREPARAM */
  745. float EnvironmentDiffusion, /* [0.0, 100.0]    default: 100.0 % or use FSOUND_REVERB_IGNOREPARAM */
  746. float AirAbsorptionHF); /* [20.0, 20000.0] default: 5000.0 Hz or use FSOUND_REVERB_IGNOREPARAM */
  747. DLL_API signed char F_API FSOUND_Reverb_SetMix(int channel, float mix);
  748. /*
  749.     Reverb information functions.
  750. */
  751. DLL_API signed char F_API FSOUND_Reverb_GetEnvironment(int *env, float *vol, float *decay, float *damp);
  752. DLL_API signed char F_API FSOUND_Reverb_GetEnvironmentAdvanced(
  753. int   *env,
  754. int   *Room,
  755. int   *RoomHF,
  756. float *RoomRolloffFactor,
  757. float *DecayTime,
  758. float *DecayHFRatio,
  759. int   *Reflections,
  760. float *ReflectionsDelay,
  761. int   *Reverb,
  762. float *ReverbDelay,
  763. float *EnvironmentSize,
  764. float *EnvironmentDiffusion,
  765. float *AirAbsorptionHF);
  766. DLL_API signed char F_API FSOUND_Reverb_GetMix(int channel, float *mix);
  767. /* ================================================ */
  768. /* Recording functions  (NOT SUPPORTED IN LINUX/CE) */
  769. /* ================================================ */
  770. /*
  771.     Recording initialization functions
  772. */
  773. DLL_API signed char F_API FSOUND_Record_SetDriver(int outputtype);
  774. DLL_API int F_API FSOUND_Record_GetNumDrivers();
  775. DLL_API signed char * F_API FSOUND_Record_GetDriverName(int id);
  776. DLL_API int F_API FSOUND_Record_GetDriver();
  777. /*
  778.     Recording functionality.  Only one recording session will work at a time.
  779. */
  780. DLL_API signed char F_API FSOUND_Record_StartSample(FSOUND_SAMPLE *sptr, signed char loop);
  781. DLL_API signed char F_API FSOUND_Record_Stop();
  782. DLL_API int F_API FSOUND_Record_GetPosition();
  783. /* ========================================================================================== */
  784. /* FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK)                                                   */
  785. /* ========================================================================================== */
  786. /* 
  787.     Song management / playback functions.
  788. */
  789. DLL_API FMUSIC_MODULE * F_API FMUSIC_LoadSong(const char *name);
  790. DLL_API FMUSIC_MODULE * F_API FMUSIC_LoadSongMemory(void *data, int length);
  791. DLL_API signed char F_API FMUSIC_FreeSong(FMUSIC_MODULE *mod);
  792. DLL_API signed char F_API FMUSIC_PlaySong(FMUSIC_MODULE *mod);
  793. DLL_API signed char F_API FMUSIC_StopSong(FMUSIC_MODULE *mod);
  794. DLL_API void F_API FMUSIC_StopAllSongs();
  795. DLL_API signed char F_API FMUSIC_SetZxxCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback);
  796. DLL_API signed char F_API FMUSIC_SetRowCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int rowstep);
  797. DLL_API signed char F_API FMUSIC_SetOrderCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int orderstep);
  798. DLL_API signed char F_API FMUSIC_SetInstCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int instrument);
  799. DLL_API signed char F_API FMUSIC_SetSample(FMUSIC_MODULE *mod, int sampno, FSOUND_SAMPLE *sptr);
  800. DLL_API signed char F_API FMUSIC_OptimizeChannels(FMUSIC_MODULE *mod, int maxchannels, int minvolume);
  801. /*
  802.     Runtime song functions. 
  803. */
  804. DLL_API signed char F_API FMUSIC_SetReverb(signed char reverb); /* MIDI only */
  805. DLL_API signed char F_API FMUSIC_SetOrder(FMUSIC_MODULE *mod, int order);
  806. DLL_API signed char F_API FMUSIC_SetPaused(FMUSIC_MODULE *mod, signed char pause);
  807. DLL_API signed char F_API FMUSIC_SetMasterVolume(FMUSIC_MODULE *mod, int volume);
  808. DLL_API signed char F_API FMUSIC_SetPanSeperation(FMUSIC_MODULE *mod, float pansep);
  809.  
  810. /* 
  811.     Static song information functions.
  812. */
  813. DLL_API char * F_API FMUSIC_GetName(FMUSIC_MODULE *mod);
  814. DLL_API int             F_API FMUSIC_GetType(FMUSIC_MODULE *mod);
  815. DLL_API int F_API FMUSIC_GetNumOrders(FMUSIC_MODULE *mod);
  816. DLL_API int F_API FMUSIC_GetNumPatterns(FMUSIC_MODULE *mod);
  817. DLL_API int F_API FMUSIC_GetNumInstruments(FMUSIC_MODULE *mod);
  818. DLL_API int F_API FMUSIC_GetNumSamples(FMUSIC_MODULE *mod);
  819. DLL_API int F_API FMUSIC_GetNumChannels(FMUSIC_MODULE *mod);
  820. DLL_API FSOUND_SAMPLE * F_API FMUSIC_GetSample(FMUSIC_MODULE *mod, int sampno);
  821. DLL_API int F_API FMUSIC_GetPatternLength(FMUSIC_MODULE *mod, int orderno);
  822.  
  823. /* 
  824.     Runtime song information.
  825. */
  826. DLL_API signed char F_API FMUSIC_IsFinished(FMUSIC_MODULE *mod);
  827. DLL_API signed char F_API FMUSIC_IsPlaying(FMUSIC_MODULE *mod);
  828. DLL_API int F_API FMUSIC_GetMasterVolume(FMUSIC_MODULE *mod);
  829. DLL_API int F_API FMUSIC_GetGlobalVolume(FMUSIC_MODULE *mod);
  830. DLL_API int F_API FMUSIC_GetOrder(FMUSIC_MODULE *mod);
  831. DLL_API int F_API FMUSIC_GetPattern(FMUSIC_MODULE *mod);
  832. DLL_API int F_API FMUSIC_GetSpeed(FMUSIC_MODULE *mod);
  833. DLL_API int F_API FMUSIC_GetBPM(FMUSIC_MODULE *mod);
  834. DLL_API int F_API FMUSIC_GetRow(FMUSIC_MODULE *mod);
  835. DLL_API signed char F_API FMUSIC_GetPaused(FMUSIC_MODULE *mod);
  836. DLL_API int F_API FMUSIC_GetTime(FMUSIC_MODULE *mod);
  837. #ifdef __cplusplus
  838. }
  839. #endif
  840. #endif