absence_thelab
diff libs/fmod/fmod.h @ 0:1cffe3409164
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 23 Oct 2014 01:46:07 +0300 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/libs/fmod/fmod.h Thu Oct 23 01:46:07 2014 +0300 1.3 @@ -0,0 +1,802 @@ 1.4 +//========================================================================================== 1.5 +// FMOD Main header file. Copyright (c), FireLight Multimedia 1999-2000. 1.6 +//========================================================================================== 1.7 + 1.8 +#ifndef _FMOD_H_ 1.9 +#define _FMOD_H_ 1.10 + 1.11 +//=============================================================================================== 1.12 +// DEFINITIONS 1.13 +//=============================================================================================== 1.14 + 1.15 +#if defined(__GNUC__) && defined(WIN32) 1.16 + #define _cdecl 1.17 +#endif /* defined(__GNUC__) && defined(WIN32) */ 1.18 + 1.19 +#if defined(PLATFORM_LINUX) 1.20 + #define _cdecl 1.21 + #define _stdcall 1.22 + #define __cdecl 1.23 + #define __stdcall 1.24 + #define __declspec(x) 1.25 + #define __PS __attribute__((packed)) /* gcc packed */ 1.26 +#else 1.27 + #define __PS /*dummy*/ 1.28 +#endif 1.29 + 1.30 +#define F_API _stdcall 1.31 + 1.32 +#ifdef DLL_EXPORTS 1.33 + #define DLL_API __declspec(dllexport) 1.34 +#else 1.35 + #ifdef __LCC__ 1.36 + #define DLL_API F_API 1.37 + #else 1.38 + #define DLL_API 1.39 + #endif // __LCC__ 1.40 +#endif //DLL_EXPORTS 1.41 + 1.42 + 1.43 +#define FMOD_VERSION 3.32f 1.44 + 1.45 + 1.46 +// fmod defined types 1.47 +typedef struct FSOUND_MATERIAL FSOUND_MATERIAL; 1.48 +typedef struct FSOUND_GEOMLIST FSOUND_GEOMLIST; 1.49 +typedef struct FSOUND_SAMPLE FSOUND_SAMPLE; 1.50 +typedef struct FSOUND_STREAM FSOUND_STREAM; 1.51 +typedef struct FSOUND_DSPUNIT FSOUND_DSPUNIT; 1.52 +typedef struct FMUSIC_MODULE FMUSIC_MODULE; 1.53 + 1.54 +// callback types 1.55 +typedef signed char (_cdecl *FSOUND_STREAMCALLBACK) (FSOUND_STREAM *stream, void *buff, int len, int param); 1.56 +typedef void * (_cdecl *FSOUND_DSPCALLBACK) (void *originalbuffer, void *newbuffer, int length, int param); 1.57 +typedef void (_cdecl *FMUSIC_CALLBACK) (FMUSIC_MODULE *mod, unsigned char param); 1.58 + 1.59 + 1.60 +/* 1.61 +[ENUM] 1.62 +[ 1.63 + [DESCRIPTION] 1.64 + On failure of commands in FMOD, use FSOUND_GetError to attain what happened. 1.65 + 1.66 + [SEE_ALSO] 1.67 + FSOUND_GetError 1.68 +] 1.69 +*/ 1.70 +enum FMOD_ERRORS 1.71 +{ 1.72 + FMOD_ERR_NONE, // No errors 1.73 + FMOD_ERR_BUSY, // Cannot call this command after FSOUND_Init. Call FSOUND_Close first. 1.74 + FMOD_ERR_UNINITIALIZED, // This command failed because FSOUND_Init or FSOUND_SetOutput was not called 1.75 + FMOD_ERR_INIT, // Error initializing output device. 1.76 + FMOD_ERR_ALLOCATED, // Error initializing output device, but more specifically, the output device is already in use and cannot be reused. 1.77 + FMOD_ERR_PLAY, // Playing the sound failed. 1.78 + FMOD_ERR_OUTPUT_FORMAT, // Soundcard does not support the features needed for this soundsystem (16bit stereo output) 1.79 + FMOD_ERR_COOPERATIVELEVEL, // Error setting cooperative level for hardware. 1.80 + FMOD_ERR_CREATEBUFFER, // Error creating hardware sound buffer. 1.81 + FMOD_ERR_FILE_NOTFOUND, // File not found 1.82 + FMOD_ERR_FILE_FORMAT, // Unknown file format 1.83 + FMOD_ERR_FILE_BAD, // Error loading file 1.84 + FMOD_ERR_MEMORY, // Not enough memory 1.85 + FMOD_ERR_VERSION, // The version number of this file format is not supported 1.86 + FMOD_ERR_INVALID_PARAM, // An invalid parameter was passed to this function 1.87 + FMOD_ERR_NO_EAX, // Tried to use an EAX command on a non EAX enabled channel or output. 1.88 + FMOD_ERR_NO_EAX2, // Tried to use an advanced EAX2 command on a non EAX2 enabled channel or output. 1.89 + FMOD_ERR_CHANNEL_ALLOC, // Failed to allocate a new channel 1.90 + FMOD_ERR_RECORD, // Recording is not supported on this machine 1.91 + FMOD_ERR_MEDIAPLAYER, // Windows Media Player not installed so cant play wma or use internet streaming. 1.92 +}; 1.93 + 1.94 + 1.95 +/* 1.96 +[ENUM] 1.97 +[ 1.98 + [DESCRIPTION] 1.99 + These output types are used with FSOUND_SetOutput, to choose which output driver to use. 1.100 + 1.101 + FSOUND_OUTPUT_A3D will cause FSOUND_Init to FAIL if you have not got a vortex 1.102 + based A3D card. The suggestion for this is to immediately try and reinitialize FMOD with 1.103 + FSOUND_OUTPUT_DSOUND, and if this fails, try initializing FMOD with FSOUND_OUTPUT_WAVEOUT. 1.104 + 1.105 + FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver 1.106 + does not support DirectX 6 Voice Manager Extensions. 1.107 + 1.108 + [SEE_ALSO] 1.109 + FSOUND_SetOutput 1.110 + FSOUND_GetOutput 1.111 +] 1.112 +*/ 1.113 +enum FSOUND_OUTPUTTYPES 1.114 +{ 1.115 + FSOUND_OUTPUT_NOSOUND, // NoSound driver, all calls to this succeed but do nothing. 1.116 + FSOUND_OUTPUT_WINMM, // Windows Multimedia driver. 1.117 + FSOUND_OUTPUT_DSOUND, // DirectSound driver. You need this to get EAX or EAX2 support. 1.118 + FSOUND_OUTPUT_A3D, // A3D driver. You need this to get geometry support. 1.119 + FSOUND_OUTPUT_OSS, // Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers. 1.120 + FSOUND_OUTPUT_ESD, // Linux/Unix ESD (Enlightment Sound Daemon) driver. 1.121 + FSOUND_OUTPUT_ALSA // Linux Alsa driver. 1.122 +}; 1.123 + 1.124 + 1.125 +/* 1.126 +[ENUM] 1.127 +[ 1.128 + [DESCRIPTION] 1.129 + These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act 1.130 + upon for other reasons using FSOUND_GetMixer. 1.131 + 1.132 + [SEE_ALSO] 1.133 + FSOUND_SetMixer 1.134 + FSOUND_GetMixer 1.135 +] 1.136 +*/ 1.137 +enum FSOUND_MIXERTYPES 1.138 +{ 1.139 + FSOUND_MIXER_AUTODETECT, // Enables autodetection of the fastest mixer based on your cpu. 1.140 + FSOUND_MIXER_BLENDMODE, // Enables the standard non mmx, blendmode mixer. 1.141 + FSOUND_MIXER_MMXP5, // Enables the mmx, pentium optimized blendmode mixer. 1.142 + FSOUND_MIXER_MMXP6, // Enables the mmx, ppro/p2/p3 optimized mixer. 1.143 + 1.144 + FSOUND_MIXER_QUALITY_AUTODETECT,// Enables autodetection of the fastest quality mixer based on your cpu. 1.145 + FSOUND_MIXER_QUALITY_FPU, // Enables the interpolating/volume ramping FPU mixer. 1.146 + FSOUND_MIXER_QUALITY_MMXP5, // Enables the interpolating/volume ramping p5 MMX mixer. 1.147 + FSOUND_MIXER_QUALITY_MMXP6, // Enables the interpolating/volume ramping ppro/p2/p3+ MMX mixer. 1.148 +}; 1.149 + 1.150 +/* 1.151 +[ENUM] 1.152 +[ 1.153 + [DESCRIPTION] 1.154 + These definitions describe the type of song being played. 1.155 + 1.156 + [SEE_ALSO] 1.157 + FMUSIC_GetType 1.158 +] 1.159 +*/ 1.160 +enum FMUSIC_TYPES 1.161 +{ 1.162 + FMUSIC_TYPE_NONE, 1.163 + FMUSIC_TYPE_MOD, // Protracker / Fasttracker 1.164 + FMUSIC_TYPE_S3M, // ScreamTracker 3 1.165 + FMUSIC_TYPE_XM, // FastTracker 2 1.166 + FMUSIC_TYPE_IT, // Impulse Tracker. 1.167 + FMUSIC_TYPE_MIDI, // MIDI file 1.168 +}; 1.169 + 1.170 + 1.171 +/* 1.172 +[DEFINE_START] 1.173 +[ 1.174 + [NAME] 1.175 + FSOUND_DSP_PRIORITIES 1.176 + 1.177 + [DESCRIPTION] 1.178 + These default priorities are 1.179 + 1.180 + [SEE_ALSO] 1.181 + FSOUND_DSP_Create 1.182 + FSOUND_DSP_SetPriority 1.183 +] 1.184 +*/ 1.185 +#define FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT 0 // DSP CLEAR unit - done first 1.186 +#define FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT 100 // DSP SFX unit - done second 1.187 +#define FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT 200 // DSP MUSIC unit - done third 1.188 +#define FSOUND_DSP_DEFAULTPRIORITY_USER 300 // User priority, use this as reference 1.189 +#define FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT 1000 // DSP CLIP AND COPY unit - last 1.190 +// [DEFINE_END] 1.191 + 1.192 + 1.193 +/* 1.194 +[DEFINE_START] 1.195 +[ 1.196 + [NAME] 1.197 + FSOUND_CAPS 1.198 + 1.199 + [DESCRIPTION] 1.200 + Driver description bitfields. Use FSOUND_Driver_GetCaps to determine if a driver enumerated 1.201 + has the settings you are after. The enumerated driver depends on the output mode, see 1.202 + FSOUND_OUTPUTTYPES 1.203 + 1.204 + [SEE_ALSO] 1.205 + FSOUND_GetDriverCaps 1.206 + FSOUND_OUTPUTTYPES 1.207 +] 1.208 +*/ 1.209 +#define FSOUND_CAPS_HARDWARE 0x1 // This driver supports hardware accelerated 3d sound. 1.210 +#define FSOUND_CAPS_EAX 0x2 // This driver supports EAX reverb 1.211 +#define FSOUND_CAPS_GEOMETRY_OCCLUSIONS 0x4 // This driver supports (A3D) geometry occlusions 1.212 +#define FSOUND_CAPS_GEOMETRY_REFLECTIONS 0x8 // This driver supports (A3D) geometry reflections 1.213 +#define FSOUND_CAPS_EAX2 0x10 // This driver supports EAX2/A3D3 reverb 1.214 +// [DEFINE_END] 1.215 + 1.216 + 1.217 +/* 1.218 +[DEFINE_START] 1.219 +[ 1.220 + [NAME] 1.221 + FSOUND_MODES 1.222 + 1.223 + [DESCRIPTION] 1.224 + Sample description bitfields, OR them together for loading and describing samples. 1.225 +] 1.226 +*/ 1.227 +#define FSOUND_LOOP_OFF 0x00000001 // For non looping samples. 1.228 +#define FSOUND_LOOP_NORMAL 0x00000002 // For forward looping samples. 1.229 +#define FSOUND_LOOP_BIDI 0x00000004 // For bidirectional looping samples. (no effect if in hardware). 1.230 +#define FSOUND_8BITS 0x00000008 // For 8 bit samples. 1.231 +#define FSOUND_16BITS 0x00000010 // For 16 bit samples. 1.232 +#define FSOUND_MONO 0x00000020 // For mono samples. 1.233 +#define FSOUND_STEREO 0x00000040 // For stereo samples. 1.234 +#define FSOUND_UNSIGNED 0x00000080 // For source data containing unsigned samples. 1.235 +#define FSOUND_SIGNED 0x00000100 // For source data containing signed data. 1.236 +#define FSOUND_DELTA 0x00000200 // For source data stored as delta values. 1.237 +#define FSOUND_IT214 0x00000400 // For source data stored using IT214 compression. 1.238 +#define FSOUND_IT215 0x00000800 // For source data stored using IT215 compression. 1.239 +#define FSOUND_HW3D 0x00001000 // Attempts to make samples use 3d hardware acceleration. (if the card supports it) 1.240 +#define FSOUND_2D 0x00002000 // Ignores any 3d processing. overrides FSOUND_HW3D. Located in software. 1.241 +#define FSOUND_STREAMABLE 0x00004000 // For a streamable sound where you feed the data to it. If you dont supply this sound may come out corrupted. (only affects a3d output) 1.242 +#define FSOUND_LOADMEMORY 0x00008000 // 'name' will be interpreted as a pointer to data for streaming and samples. 1.243 +#define FSOUND_LOADRAW 0x00010000 // For will ignore file format and treat as raw pcm. 1.244 +#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. 1.245 + 1.246 +// Default sample type. Loop off, 8bit mono, signed, not hardware accelerated. 1.247 +// Some API functions ignore 8bits and mono, as it may be an mpeg/wav/etc which has its format predetermined. 1.248 +#define FSOUND_NORMAL (FSOUND_LOOP_OFF | FSOUND_8BITS | FSOUND_MONO) 1.249 +// [DEFINE_END] 1.250 + 1.251 + 1.252 +/* 1.253 +[DEFINE_START] 1.254 +[ 1.255 + [NAME] 1.256 + FSOUND_CDPLAYMODES 1.257 + 1.258 + [DESCRIPTION] 1.259 + Playback method for a CD Audio track, using FSOUND_CD_Play 1.260 + 1.261 + [SEE_ALSO] 1.262 + FSOUND_CD_Play 1.263 +] 1.264 +*/ 1.265 +#define FSOUND_CD_PLAYCONTINUOUS 0 // Starts from the current track and plays to end of CD. 1.266 +#define FSOUND_CD_PLAYONCE 1 // Plays the specified track then stops. 1.267 +#define FSOUND_CD_PLAYLOOPED 2 // Plays the specified track looped, forever until stopped manually. 1.268 +#define FSOUND_CD_PLAYRANDOM 3 // Plays tracks in random order 1.269 +// [DEFINE_END] 1.270 + 1.271 + 1.272 +/* 1.273 +[DEFINE_START] 1.274 +[ 1.275 + [NAME] 1.276 + FSOUND_CHANNELSAMPLEMODE 1.277 + 1.278 + [DESCRIPTION] 1.279 + Miscellaneous values for FMOD functions. 1.280 + 1.281 + [SEE_ALSO] 1.282 + FSOUND_PlaySound 1.283 + FSOUND_PlaySound3DAttrib 1.284 + 1.285 + FSOUND_Sample_Alloc 1.286 + FSOUND_Sample_Load 1.287 + FSOUND_SetPan 1.288 +] 1.289 +*/ 1.290 +#define FSOUND_FREE -1 // value to play on any free channel, or to allocate a sample in a free sample slot. 1.291 +#define FSOUND_UNMANAGED -2 // value to allocate a sample that is NOT managed by FSOUND or placed in a sample slot. 1.292 +#define FSOUND_ALL -3 // for a channel index , this flag will affect ALL channels available! Not supported by every function. 1.293 +#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. 1.294 +// [DEFINE_END] 1.295 + 1.296 + 1.297 +/* 1.298 +[ENUM] 1.299 +[ 1.300 + [DESCRIPTION] 1.301 + These are environment types defined for use with the FSOUND_Reverb API. 1.302 + 1.303 + [SEE_ALSO] 1.304 + FSOUND_Reverb_SetEnvironment 1.305 + FSOUND_Reverb_SetEnvironmentAdvanced 1.306 +] 1.307 +*/ 1.308 +enum FSOUND_REVERB_ENVIRONMENTS 1.309 +{ 1.310 + FSOUND_ENVIRONMENT_GENERIC, 1.311 + FSOUND_ENVIRONMENT_PADDEDCELL, 1.312 + FSOUND_ENVIRONMENT_ROOM, 1.313 + FSOUND_ENVIRONMENT_BATHROOM, 1.314 + FSOUND_ENVIRONMENT_LIVINGROOM, 1.315 + FSOUND_ENVIRONMENT_STONEROOM, 1.316 + FSOUND_ENVIRONMENT_AUDITORIUM, 1.317 + FSOUND_ENVIRONMENT_CONCERTHALL, 1.318 + FSOUND_ENVIRONMENT_CAVE, 1.319 + FSOUND_ENVIRONMENT_ARENA, 1.320 + FSOUND_ENVIRONMENT_HANGAR, 1.321 + FSOUND_ENVIRONMENT_CARPETEDHALLWAY, 1.322 + FSOUND_ENVIRONMENT_HALLWAY, 1.323 + FSOUND_ENVIRONMENT_STONECORRIDOR, 1.324 + FSOUND_ENVIRONMENT_ALLEY, 1.325 + FSOUND_ENVIRONMENT_FOREST, 1.326 + FSOUND_ENVIRONMENT_CITY, 1.327 + FSOUND_ENVIRONMENT_MOUNTAINS, 1.328 + FSOUND_ENVIRONMENT_QUARRY, 1.329 + FSOUND_ENVIRONMENT_PLAIN, 1.330 + FSOUND_ENVIRONMENT_PARKINGLOT, 1.331 + FSOUND_ENVIRONMENT_SEWERPIPE, 1.332 + FSOUND_ENVIRONMENT_UNDERWATER, 1.333 + FSOUND_ENVIRONMENT_DRUGGED, 1.334 + FSOUND_ENVIRONMENT_DIZZY, 1.335 + FSOUND_ENVIRONMENT_PSYCHOTIC, 1.336 + 1.337 + FSOUND_ENVIRONMENT_COUNT 1.338 +}; 1.339 + 1.340 +/* 1.341 +[DEFINE_START] 1.342 +[ 1.343 + [NAME] 1.344 + FSOUND_REVERBMIX_USEDISTANCE 1.345 + 1.346 + [DESCRIPTION] 1.347 + Used with FSOUND_Reverb_SetMix, this setting allows reverb to attenuate based on distance from the listener. 1.348 + Instead of hard coding a value with FSOUND_Reverb_SetMix, this value can be used instead, for a more natural 1.349 + reverb dropoff. 1.350 + 1.351 + [SEE_ALSO] 1.352 + FSOUND_Reverb_SetMix 1.353 +] 1.354 +*/ 1.355 +#define FSOUND_REVERBMIX_USEDISTANCE -1.0f // used with FSOUND_Reverb_SetMix to scale reverb by distance 1.356 +// [DEFINE_END] 1.357 + 1.358 + 1.359 +/* 1.360 +[DEFINE_START] 1.361 +[ 1.362 + [NAME] 1.363 + FSOUND_REVERB_IGNOREPARAM 1.364 + 1.365 + [DESCRIPTION] 1.366 + Used with FSOUND_Reverb_SetEnvironment and FSOUND_Reverb_SetEnvironmentAdvanced, this can 1.367 + be placed in the place of a specific parameter for the reverb setting. It allows you to 1.368 + not set any parameters except the ones you are interested in .. and example would be this. 1.369 + FSOUND_Reverb_SetEnvironment(FSOUND_REVERB_IGNOREPARAM, 1.370 + FSOUND_REVERB_IGNOREPARAM, 1.371 + FSOUND_REVERB_IGNOREPARAM, 1.372 + 0.0f); 1.373 + This means env, vol and decay are left alone, but 'damp' is set to 0. 1.374 + 1.375 + [SEE_ALSO] 1.376 + FSOUND_Reverb_SetEnvironment 1.377 + FSOUND_Reverb_SetEnvironmentAdvanced 1.378 +] 1.379 +*/ 1.380 +#define FSOUND_REVERB_IGNOREPARAM -9999999 // used with FSOUND_Reverb_SetEnvironmentAdvanced to ignore certain parameters by choice. 1.381 +// [DEFINE_END] 1.382 + 1.383 + 1.384 +/* 1.385 +[DEFINE_START] 1.386 +[ 1.387 + [NAME] 1.388 + FSOUND_REVERB_PRESETS 1.389 + 1.390 + [DESCRIPTION] 1.391 + A set of predefined environment PARAMETERS, created by Creative Labs 1.392 + These can be placed directly into the FSOUND_Reverb_SetEnvironment call 1.393 + 1.394 + [SEE_ALSO] 1.395 + FSOUND_Reverb_SetEnvironment 1.396 +] 1.397 +*/ 1.398 +#define FSOUND_PRESET_OFF FSOUND_ENVIRONMENT_GENERIC,0.0f,0.0f,0.0f 1.399 +#define FSOUND_PRESET_GENERIC FSOUND_ENVIRONMENT_GENERIC,0.5f,1.493f,0.5f 1.400 +#define FSOUND_PRESET_PADDEDCELL FSOUND_ENVIRONMENT_PADDEDCELL,0.25f,0.1f,0.0f 1.401 +#define FSOUND_PRESET_ROOM FSOUND_ENVIRONMENT_ROOM,0.417f,0.4f,0.666f 1.402 +#define FSOUND_PRESET_BATHROOM FSOUND_ENVIRONMENT_BATHROOM,0.653f,1.499f,0.166f 1.403 +#define FSOUND_PRESET_LIVINGROOM FSOUND_ENVIRONMENT_LIVINGROOM,0.208f,0.478f,0.0f 1.404 +#define FSOUND_PRESET_STONEROOM FSOUND_ENVIRONMENT_STONEROOM,0.5f,2.309f,0.888f 1.405 +#define FSOUND_PRESET_AUDITORIUM FSOUND_ENVIRONMENT_AUDITORIUM,0.403f,4.279f,0.5f 1.406 +#define FSOUND_PRESET_CONCERTHALL FSOUND_ENVIRONMENT_CONCERTHALL,0.5f,3.961f,0.5f 1.407 +#define FSOUND_PRESET_CAVE FSOUND_ENVIRONMENT_CAVE,0.5f,2.886f,1.304f 1.408 +#define FSOUND_PRESET_ARENA FSOUND_ENVIRONMENT_ARENA,0.361f,7.284f,0.332f 1.409 +#define FSOUND_PRESET_HANGAR FSOUND_ENVIRONMENT_HANGAR,0.5f,10.0f,0.3f 1.410 +#define FSOUND_PRESET_CARPETEDHALLWAY FSOUND_ENVIRONMENT_CARPETEDHALLWAY,0.153f,0.259f,2.0f 1.411 +#define FSOUND_PRESET_HALLWAY FSOUND_ENVIRONMENT_HALLWAY,0.361f,1.493f,0.0f 1.412 +#define FSOUND_PRESET_STONECORRIDOR FSOUND_ENVIRONMENT_STONECORRIDOR,0.444f,2.697f,0.638f 1.413 +#define FSOUND_PRESET_ALLEY FSOUND_ENVIRONMENT_ALLEY,0.25f,1.752f,0.776f 1.414 +#define FSOUND_PRESET_FOREST FSOUND_ENVIRONMENT_FOREST,0.111f,3.145f,0.472f 1.415 +#define FSOUND_PRESET_CITY FSOUND_ENVIRONMENT_CITY,0.111f,2.767f,0.224f 1.416 +#define FSOUND_PRESET_MOUNTAINS FSOUND_ENVIRONMENT_MOUNTAINS,0.194f,7.841f,0.472f 1.417 +#define FSOUND_PRESET_QUARRY FSOUND_ENVIRONMENT_QUARRY,1.0f,1.499f,0.5f 1.418 +#define FSOUND_PRESET_PLAIN FSOUND_ENVIRONMENT_PLAIN,0.097f,2.767f,0.224f 1.419 +#define FSOUND_PRESET_PARKINGLOT FSOUND_ENVIRONMENT_PARKINGLOT,0.208f,1.652f,1.5f 1.420 +#define FSOUND_PRESET_SEWERPIPE FSOUND_ENVIRONMENT_SEWERPIPE,0.652f,2.886f,0.25f 1.421 +#define FSOUND_PRESET_UNDERWATER FSOUND_ENVIRONMENT_UNDERWATER,1.0f,1.499f,0.0f 1.422 +#define FSOUND_PRESET_DRUGGED FSOUND_ENVIRONMENT_DRUGGED,0.875f, 8.392f,1.388f 1.423 +#define FSOUND_PRESET_DIZZY FSOUND_ENVIRONMENT_DIZZY,0.139f,17.234f,0.666f 1.424 +#define FSOUND_PRESET_PSYCHOTIC FSOUND_ENVIRONMENT_PSYCHOTIC,0.486f,7.563f,0.806f 1.425 +// [DEFINE_END] 1.426 + 1.427 + 1.428 +/* 1.429 +[DEFINE_START] 1.430 +[ 1.431 + [NAME] 1.432 + FSOUND_GEOMETRY_MODES 1.433 + 1.434 + [DESCRIPTION] 1.435 + Geometry flags, used as the mode flag in FSOUND_Geometry_AddPolygon 1.436 + 1.437 + [SEE_ALSO] 1.438 + FSOUND_Geometry_AddPolygon 1.439 +] 1.440 +*/ 1.441 +#define FSOUND_GEOMETRY_NORMAL 0x0 // Default geometry type. Occluding polygon 1.442 +#define FSOUND_GEOMETRY_REFLECTIVE 0x01 // This polygon is reflective 1.443 +#define FSOUND_GEOMETRY_OPENING 0x02 // Overlays a transparency over the previous polygon. The 'openingfactor' value supplied is copied internally. 1.444 +#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) 1.445 +// [DEFINE_END] 1.446 + 1.447 +/* 1.448 +[DEFINE_START] 1.449 +[ 1.450 + [NAME] 1.451 + FSOUND_INIT_FLAGS 1.452 + 1.453 + [DESCRIPTION] 1.454 + Initialization flags. Use them with FSOUND_Init in the flags parameter to change various behaviour. 1.455 + 1.456 + [SEE_ALSO] 1.457 + FSOUND_Init 1.458 +] 1.459 +*/ 1.460 +#define FSOUND_INIT_USEDEFAULTMIDISYNTH 0x01 // Causes MIDI playback to force software decoding. 1.461 +#define FSOUND_INIT_GLOBALFOCUS 0x02 // For DirectSound output - sound is not muted when window is out of focus. 1.462 +// [DEFINE_END] 1.463 + 1.464 + 1.465 + 1.466 + 1.467 +//=============================================================================================== 1.468 +// FUNCTION PROTOTYPES 1.469 +//=============================================================================================== 1.470 + 1.471 +#ifdef __cplusplus 1.472 +extern "C" { 1.473 +#endif 1.474 + 1.475 +// ================================== 1.476 +// Initialization / Global functions. 1.477 +// ================================== 1.478 + 1.479 +// *Pre* FSOUND_Init functions. These can't be called after FSOUND_Init is 1.480 +// called (they will fail). They set up FMOD system functionality. 1.481 +DLL_API signed char F_API FSOUND_SetOutput(int outputtype); 1.482 +DLL_API signed char F_API FSOUND_SetDriver(int driver); 1.483 +DLL_API signed char F_API FSOUND_SetMixer(int mixer); 1.484 +DLL_API signed char F_API FSOUND_SetBufferSize(int len_ms); 1.485 +DLL_API signed char F_API FSOUND_SetHWND(void *hwnd); 1.486 +DLL_API signed char F_API FSOUND_SetMinHardwareChannels(int min); 1.487 +DLL_API signed char F_API FSOUND_SetMaxHardwareChannels(int max); 1.488 + 1.489 +// Main initialization / closedown functions. 1.490 +// Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override with MIDI playback. 1.491 +// : Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible no matter which window is in focus. 1.492 +DLL_API signed char F_API FSOUND_Init(int mixrate, int maxsoftwarechannels, unsigned int flags); 1.493 +DLL_API void F_API FSOUND_Close(); 1.494 + 1.495 +// Runtime 1.496 +DLL_API void F_API FSOUND_SetSFXMasterVolume(int volume); 1.497 +DLL_API void F_API FSOUND_SetPanSeperation(float pansep); 1.498 + 1.499 +// System information. 1.500 +DLL_API int F_API FSOUND_GetError(); 1.501 +DLL_API float F_API FSOUND_GetVersion(); 1.502 +DLL_API int F_API FSOUND_GetOutput(); 1.503 +DLL_API int F_API FSOUND_GetDriver(); 1.504 +DLL_API int F_API FSOUND_GetMixer(); 1.505 +DLL_API int F_API FSOUND_GetNumDrivers(); 1.506 +DLL_API signed char * F_API FSOUND_GetDriverName(int id); 1.507 +DLL_API signed char F_API FSOUND_GetDriverCaps(int id, unsigned int *caps); 1.508 +DLL_API int F_API FSOUND_GetOutputRate(); 1.509 +DLL_API int F_API FSOUND_GetMaxChannels(); 1.510 +DLL_API int F_API FSOUND_GetMaxSamples(); 1.511 +DLL_API int F_API FSOUND_GetSFXMasterVolume(); 1.512 +DLL_API int F_API FSOUND_GetNumHardwareChannels(); 1.513 +DLL_API int F_API FSOUND_GetChannelsPlaying(); 1.514 +DLL_API float F_API FSOUND_GetCPUUsage(); 1.515 + 1.516 +// =================================== 1.517 +// Sample management / load functions. 1.518 +// =================================== 1.519 + 1.520 +// Note : Use FSOUND_LOADMEMORY flag with FSOUND_Sample_Load to load from memory. 1.521 +// Use FSOUND_LOADRAW flag with FSOUND_Sample_Load to treat as as raw pcm data. 1.522 + 1.523 +// Sample creation and management functions 1.524 +DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Load(int index, const char *name, unsigned int mode, int memlength); 1.525 +DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Alloc(int index, int length, unsigned int mode, int deffreq, int defvol, int defpan, int defpri); 1.526 +DLL_API void F_API FSOUND_Sample_Free(FSOUND_SAMPLE *sptr); 1.527 +DLL_API signed char F_API FSOUND_Sample_Upload(FSOUND_SAMPLE *sptr, void *srcdata, unsigned int mode); 1.528 +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); 1.529 +DLL_API signed char F_API FSOUND_Sample_Unlock(FSOUND_SAMPLE *sptr, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); 1.530 + 1.531 +// Sample control functions 1.532 +DLL_API signed char F_API FSOUND_Sample_SetLoopMode(FSOUND_SAMPLE *sptr, unsigned int loopmode); 1.533 +DLL_API signed char F_API FSOUND_Sample_SetLoopPoints(FSOUND_SAMPLE *sptr, int loopstart, int loopend); 1.534 +DLL_API signed char F_API FSOUND_Sample_SetDefaults(FSOUND_SAMPLE *sptr, int deffreq, int defvol, int defpan, int defpri); 1.535 +DLL_API signed char F_API FSOUND_Sample_SetMinMaxDistance(FSOUND_SAMPLE *sptr, float min, float max); 1.536 + 1.537 +// Sample information 1.538 +DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Get(int sampno); 1.539 +DLL_API char * F_API FSOUND_Sample_GetName(FSOUND_SAMPLE *sptr); 1.540 +DLL_API unsigned int F_API FSOUND_Sample_GetLength(FSOUND_SAMPLE *sptr); 1.541 +DLL_API signed char F_API FSOUND_Sample_GetLoopPoints(FSOUND_SAMPLE *sptr, int *loopstart, int *loopend); 1.542 +DLL_API signed char F_API FSOUND_Sample_GetDefaults(FSOUND_SAMPLE *sptr, int *deffreq, int *defvol, int *defpan, int *defpri); 1.543 +DLL_API unsigned int F_API FSOUND_Sample_GetMode(FSOUND_SAMPLE *sptr); 1.544 + 1.545 +// ============================ 1.546 +// Channel control functions. 1.547 +// ============================ 1.548 + 1.549 +// Playing and stopping sounds. 1.550 +DLL_API int F_API FSOUND_PlaySound(int channel, FSOUND_SAMPLE *sptr); 1.551 +DLL_API int F_API FSOUND_PlaySound3DAttrib(int channel, FSOUND_SAMPLE *sptr, int freq, int vol, int pan, float *pos, float *vel); 1.552 +DLL_API signed char F_API FSOUND_StopSound(int channel); 1.553 + 1.554 +// Functions to control playback of a channel. 1.555 +DLL_API signed char F_API FSOUND_SetFrequency(int channel, int freq); 1.556 +DLL_API signed char F_API FSOUND_SetVolume(int channel, int vol); 1.557 +DLL_API signed char F_API FSOUND_SetVolumeAbsolute(int channel, int vol); 1.558 +DLL_API signed char F_API FSOUND_SetPan(int channel, int pan); 1.559 +DLL_API signed char F_API FSOUND_SetSurround(int channel, signed char surround); 1.560 +DLL_API signed char F_API FSOUND_SetMute(int channel, signed char mute); 1.561 +DLL_API signed char F_API FSOUND_SetPriority(int channel, int priority); 1.562 +DLL_API signed char F_API FSOUND_SetReserved(int channel, signed char reserved); 1.563 +DLL_API signed char F_API FSOUND_SetPaused(int channel, signed char paused); 1.564 +DLL_API signed char F_API FSOUND_SetLoopMode(int channel, unsigned int loopmode); 1.565 + 1.566 +// Channel information 1.567 +DLL_API signed char F_API FSOUND_IsPlaying(int channel); 1.568 +DLL_API int F_API FSOUND_GetFrequency(int channel); 1.569 +DLL_API int F_API FSOUND_GetVolume(int channel); 1.570 +DLL_API int F_API FSOUND_GetPan(int channel); 1.571 +DLL_API signed char F_API FSOUND_GetSurround(int channel); 1.572 +DLL_API signed char F_API FSOUND_GetMute(int channel); 1.573 +DLL_API int F_API FSOUND_GetPriority(int channel); 1.574 +DLL_API signed char F_API FSOUND_GetReserved(int channel); 1.575 +DLL_API signed char F_API FSOUND_GetPaused(int channel); 1.576 +DLL_API unsigned int F_API FSOUND_GetCurrentPosition(int channel); 1.577 +DLL_API FSOUND_SAMPLE * F_API FSOUND_GetCurrentSample(int channel); 1.578 +DLL_API float F_API FSOUND_GetCurrentVU(int channel); 1.579 + 1.580 +// =================== 1.581 +// 3D sound functions. 1.582 +// =================== 1.583 +// see also FSOUND_PlaySound3DAttrib (above) 1.584 +// see also FSOUND_Sample_SetMinMaxDistance (above) 1.585 +DLL_API void F_API FSOUND_3D_Update(); 1.586 +DLL_API signed char F_API FSOUND_3D_SetAttributes(int channel, float *pos, float *vel); 1.587 +DLL_API signed char F_API FSOUND_3D_GetAttributes(int channel, float *pos, float *vel); 1.588 +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); 1.589 +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); 1.590 +DLL_API void F_API FSOUND_3D_Listener_SetDopplerFactor(float scale); 1.591 +DLL_API void F_API FSOUND_3D_Listener_SetDistanceFactor(float scale); 1.592 +DLL_API void F_API FSOUND_3D_Listener_SetRolloffFactor(float scale); 1.593 + 1.594 +// ========================= 1.595 +// File Streaming functions. 1.596 +// ========================= 1.597 + 1.598 +// Note : Use FSOUND_LOADMEMORY flag with FSOUND_Stream_OpenFile to stream from memory. 1.599 +// Use FSOUND_LOADRAW flag with FSOUND_Stream_OpenFile to treat stream as raw pcm data. 1.600 +// Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_OpenFile to open mpegs in 'accurate mode' for seeking etc. 1.601 + 1.602 +DLL_API FSOUND_STREAM * F_API FSOUND_Stream_OpenFile(const char *filename, unsigned int mode, int memlength); 1.603 +DLL_API FSOUND_STREAM * F_API FSOUND_Stream_Create(FSOUND_STREAMCALLBACK callback, int length, unsigned int mode, int samplerate, int userdata); 1.604 +DLL_API int F_API FSOUND_Stream_Play(int channel, FSOUND_STREAM *stream); 1.605 +DLL_API int F_API FSOUND_Stream_Play3DAttrib(int channel, FSOUND_STREAM *stream, int freq, int vol, int pan, float *pos, float *vel); 1.606 +DLL_API signed char F_API FSOUND_Stream_Stop(FSOUND_STREAM *stream); 1.607 +DLL_API signed char F_API FSOUND_Stream_Close(FSOUND_STREAM *stream); 1.608 +DLL_API signed char F_API FSOUND_Stream_SetEndCallback(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata); 1.609 +DLL_API signed char F_API FSOUND_Stream_SetSynchCallback(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata); 1.610 +DLL_API FSOUND_SAMPLE * F_API FSOUND_Stream_GetSample(FSOUND_STREAM *stream); 1.611 +DLL_API FSOUND_DSPUNIT *F_API FSOUND_Stream_CreateDSP(FSOUND_STREAM *stream, FSOUND_DSPCALLBACK callback, int priority, int param); 1.612 + 1.613 +DLL_API signed char F_API FSOUND_Stream_SetPaused(FSOUND_STREAM *stream, signed char paused); 1.614 +DLL_API signed char F_API FSOUND_Stream_GetPaused(FSOUND_STREAM *stream); 1.615 +DLL_API signed char F_API FSOUND_Stream_SetPosition(FSOUND_STREAM *stream, int position); 1.616 +DLL_API int F_API FSOUND_Stream_GetPosition(FSOUND_STREAM *stream); 1.617 +DLL_API signed char F_API FSOUND_Stream_SetTime(FSOUND_STREAM *stream, int ms); 1.618 +DLL_API int F_API FSOUND_Stream_GetTime(FSOUND_STREAM *stream); 1.619 +DLL_API int F_API FSOUND_Stream_GetLength(FSOUND_STREAM *stream); 1.620 +DLL_API int F_API FSOUND_Stream_GetLengthMs(FSOUND_STREAM *stream); 1.621 + 1.622 +// =================== 1.623 +// CD audio functions. 1.624 +// =================== 1.625 + 1.626 +DLL_API signed char F_API FSOUND_CD_Play(int track); 1.627 +DLL_API void F_API FSOUND_CD_SetPlayMode(signed char mode); 1.628 +DLL_API signed char F_API FSOUND_CD_Stop(); 1.629 +DLL_API signed char F_API FSOUND_CD_SetPaused(signed char paused); 1.630 +DLL_API signed char F_API FSOUND_CD_SetVolume(int volume); 1.631 +DLL_API signed char F_API FSOUND_CD_Eject(); 1.632 + 1.633 +DLL_API signed char F_API FSOUND_CD_GetPaused(); 1.634 +DLL_API int F_API FSOUND_CD_GetTrack(); 1.635 +DLL_API int F_API FSOUND_CD_GetNumTracks(); 1.636 +DLL_API int F_API FSOUND_CD_GetVolume(); 1.637 +DLL_API int F_API FSOUND_CD_GetTrackLength(int track); 1.638 +DLL_API int F_API FSOUND_CD_GetTrackTime(); 1.639 + 1.640 + 1.641 +// ============== 1.642 +// DSP functions. 1.643 +// ============== 1.644 + 1.645 +// DSP Unit control and information functions. 1.646 +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_Create(FSOUND_DSPCALLBACK callback, int priority, int param); 1.647 +DLL_API void F_API FSOUND_DSP_Free(FSOUND_DSPUNIT *unit); 1.648 +DLL_API void F_API FSOUND_DSP_SetPriority(FSOUND_DSPUNIT *unit, int priority); 1.649 +DLL_API int F_API FSOUND_DSP_GetPriority(FSOUND_DSPUNIT *unit); 1.650 +DLL_API void F_API FSOUND_DSP_SetActive(FSOUND_DSPUNIT *unit, signed char active); 1.651 +DLL_API signed char F_API FSOUND_DSP_GetActive(FSOUND_DSPUNIT *unit); 1.652 + 1.653 +// Functions to get hold of FSOUND 'system DSP unit' handles. 1.654 +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetClearUnit(); 1.655 +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetSFXUnit(); 1.656 +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetMusicUnit(); 1.657 +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetClipAndCopyUnit(); 1.658 + 1.659 +// misc DSP functions 1.660 +DLL_API signed char F_API FSOUND_DSP_MixBuffers(void *destbuffer, void *srcbuffer, int len, int freq, int vol, int pan, unsigned int mode); 1.661 +DLL_API void F_API FSOUND_DSP_ClearMixBuffer(); 1.662 +DLL_API int F_API FSOUND_DSP_GetBufferLength(); 1.663 + 1.664 +// ============================================= 1.665 +// Geometry functions. (NOT SUPPORTED IN LINUX) 1.666 +// ============================================= 1.667 + 1.668 +// scene/polygon functions 1.669 +DLL_API signed char F_API FSOUND_Geometry_AddPolygon(float *p1, float *p2, float *p3, float *p4, float *normal, unsigned int mode, float *openingfactor); 1.670 +DLL_API int F_API FSOUND_Geometry_AddList(FSOUND_GEOMLIST *geomlist); 1.671 + 1.672 +// polygon list functions 1.673 +DLL_API FSOUND_GEOMLIST * F_API FSOUND_Geometry_List_Create(signed char boundingvolume); 1.674 +DLL_API signed char F_API FSOUND_Geometry_List_Free(FSOUND_GEOMLIST *geomlist); 1.675 +DLL_API signed char F_API FSOUND_Geometry_List_Begin(FSOUND_GEOMLIST *geomlist); 1.676 +DLL_API signed char F_API FSOUND_Geometry_List_End(FSOUND_GEOMLIST *geomlist); 1.677 + 1.678 +// material functions 1.679 +DLL_API FSOUND_MATERIAL * F_API FSOUND_Geometry_Material_Create(); 1.680 +DLL_API signed char F_API FSOUND_Geometry_Material_Free(FSOUND_MATERIAL *material); 1.681 +DLL_API signed char F_API FSOUND_Geometry_Material_SetAttributes(FSOUND_MATERIAL *material, float reflectancegain, float reflectancefreq, float transmittancegain, float transmittancefreq); 1.682 +DLL_API signed char F_API FSOUND_Geometry_Material_GetAttributes(FSOUND_MATERIAL *material, float *reflectancegain, float *reflectancefreq, float *transmittancegain, float *transmittancefreq); 1.683 +DLL_API signed char F_API FSOUND_Geometry_Material_Set(FSOUND_MATERIAL *material); 1.684 + 1.685 +// ======================================================================== 1.686 +// Reverb functions. (eax, eax2, a3d 3.0 reverb) (NOT SUPPORTED IN LINUX) 1.687 +// ======================================================================== 1.688 + 1.689 +// eax1, eax2, a3d 3.0 (use FSOUND_REVERB_PRESETS if you like), (eax2 support through emulation/parameter conversion) 1.690 +DLL_API signed char F_API FSOUND_Reverb_SetEnvironment(int env, float vol, float decay, float damp); 1.691 +// eax2, a3d 3.0 only, does not work on eax1 1.692 +DLL_API signed char F_API FSOUND_Reverb_SetEnvironmentAdvanced( 1.693 + int env, 1.694 + int Room, // [-10000, 0] default: -10000 mB or use FSOUND_REVERB_IGNOREPARAM 1.695 + int RoomHF, // [-10000, 0] default: 0 mB or use FSOUND_REVERB_IGNOREPARAM 1.696 + float RoomRolloffFactor, // [0.0, 10.0] default: 0.0 or use FSOUND_REVERB_IGNOREPARAM 1.697 + float DecayTime, // [0.1, 20.0] default: 1.0 s or use FSOUND_REVERB_IGNOREPARAM 1.698 + float DecayHFRatio, // [0.1, 2.0] default: 0.5 or use FSOUND_REVERB_IGNOREPARAM 1.699 + int Reflections, // [-10000, 1000] default: -10000 mB or use FSOUND_REVERB_IGNOREPARAM 1.700 + float ReflectionsDelay, // [0.0, 0.3] default: 0.02 s or use FSOUND_REVERB_IGNOREPARAM 1.701 + int Reverb, // [-10000, 2000] default: -10000 mB or use FSOUND_REVERB_IGNOREPARAM 1.702 + float ReverbDelay, // [0.0, 0.1] default: 0.04 s or use FSOUND_REVERB_IGNOREPARAM 1.703 + float EnvironmentSize, // [0.0, 100.0] default: 100.0 % or use FSOUND_REVERB_IGNOREPARAM 1.704 + float EnvironmentDiffusion, // [0.0, 100.0] default: 100.0 % or use FSOUND_REVERB_IGNOREPARAM 1.705 + float AirAbsorptionHF); // [20.0, 20000.0] default: 5000.0 Hz or use FSOUND_REVERB_IGNOREPARAM 1.706 + 1.707 +DLL_API signed char F_API FSOUND_Reverb_SetMix(int channel, float mix); 1.708 + 1.709 +// information functions 1.710 +DLL_API signed char F_API FSOUND_Reverb_GetEnvironment(int *env, float *vol, float *decay, float *damp); 1.711 +DLL_API signed char F_API FSOUND_Reverb_GetEnvironmentAdvanced( 1.712 + int *env, 1.713 + int *Room, 1.714 + int *RoomHF, 1.715 + float *RoomRolloffFactor, 1.716 + float *DecayTime, 1.717 + float *DecayHFRatio, 1.718 + int *Reflections, 1.719 + float *ReflectionsDelay, 1.720 + int *Reverb, 1.721 + float *ReverbDelay, 1.722 + float *EnvironmentSize, 1.723 + float *EnvironmentDiffusion, 1.724 + float *AirAbsorptionHF); 1.725 +DLL_API signed char F_API FSOUND_Reverb_GetMix(int channel, float *mix); 1.726 + 1.727 +// ============================================= 1.728 +// Recording functions (NOT SUPPORTED IN LINUX) 1.729 +// ============================================= 1.730 + 1.731 +// recording initialization functions 1.732 +DLL_API signed char F_API FSOUND_Record_SetDriver(int outputtype); 1.733 +DLL_API int F_API FSOUND_Record_GetNumDrivers(); 1.734 +DLL_API signed char * F_API FSOUND_Record_GetDriverName(int id); 1.735 +DLL_API int F_API FSOUND_Record_GetDriver(); 1.736 + 1.737 +// recording functionality. Only one recording session will work at a time 1.738 +DLL_API signed char F_API FSOUND_Record_StartSample(FSOUND_SAMPLE *sptr, signed char loop);// record to sample 1.739 +DLL_API signed char F_API FSOUND_Record_Stop(); // stop recording 1.740 +DLL_API int F_API FSOUND_Record_GetPosition(); // offset in sample, or wav file 1.741 + 1.742 +// ========================= 1.743 +// File system override 1.744 +// ========================= 1.745 + 1.746 +DLL_API void F_API FSOUND_File_SetCallbacks(unsigned int (_cdecl *OpenCallback)(const char *name), 1.747 + void (_cdecl *CloseCallback)(unsigned int handle), 1.748 + int (_cdecl *ReadCallback)(void *buffer, int size, unsigned int handle), 1.749 + int (_cdecl *SeekCallback)(unsigned int handle, int pos, signed char mode), 1.750 + int (_cdecl *TellCallback)(unsigned int handle)); 1.751 + 1.752 +// ============================================================================================= 1.753 +// FMUSIC API 1.754 +// ============================================================================================= 1.755 + 1.756 +// Song management / playback functions. 1.757 +DLL_API FMUSIC_MODULE * F_API FMUSIC_LoadSong(const char *name); 1.758 +DLL_API FMUSIC_MODULE * F_API FMUSIC_LoadSongMemory(void *data, int length); 1.759 +DLL_API signed char F_API FMUSIC_FreeSong(FMUSIC_MODULE *mod); 1.760 +DLL_API signed char F_API FMUSIC_PlaySong(FMUSIC_MODULE *mod); 1.761 +DLL_API signed char F_API FMUSIC_StopSong(FMUSIC_MODULE *mod); 1.762 +DLL_API void F_API FMUSIC_StopAllSongs(); 1.763 +DLL_API signed char F_API FMUSIC_SetZxxCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback); 1.764 +DLL_API signed char F_API FMUSIC_SetRowCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int rowstep); 1.765 +DLL_API signed char F_API FMUSIC_SetOrderCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int orderstep); 1.766 +DLL_API signed char F_API FMUSIC_SetInstCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int instrument); 1.767 +DLL_API signed char F_API FMUSIC_SetSample(FMUSIC_MODULE *mod, int sampno, FSOUND_SAMPLE *sptr); 1.768 +DLL_API signed char F_API FMUSIC_OptimizeChannels(FMUSIC_MODULE *mod, int maxchannels, int minvolume); 1.769 + 1.770 +// Runtime song functions. 1.771 +DLL_API signed char F_API FMUSIC_SetReverb(signed char reverb); // MIDI only. 1.772 +DLL_API signed char F_API FMUSIC_SetOrder(FMUSIC_MODULE *mod, int order); 1.773 +DLL_API signed char F_API FMUSIC_SetPaused(FMUSIC_MODULE *mod, signed char pause); 1.774 +DLL_API signed char F_API FMUSIC_SetMasterVolume(FMUSIC_MODULE *mod, int volume); 1.775 +DLL_API signed char F_API FMUSIC_SetPanSeperation(FMUSIC_MODULE *mod, float pansep); 1.776 + 1.777 +// Static song information functions. 1.778 +DLL_API char * F_API FMUSIC_GetName(FMUSIC_MODULE *mod); 1.779 +DLL_API signed char F_API FMUSIC_GetType(FMUSIC_MODULE *mod); 1.780 +DLL_API int F_API FMUSIC_GetNumOrders(FMUSIC_MODULE *mod); 1.781 +DLL_API int F_API FMUSIC_GetNumPatterns(FMUSIC_MODULE *mod); 1.782 +DLL_API int F_API FMUSIC_GetNumInstruments(FMUSIC_MODULE *mod); 1.783 +DLL_API int F_API FMUSIC_GetNumSamples(FMUSIC_MODULE *mod); 1.784 +DLL_API int F_API FMUSIC_GetNumChannels(FMUSIC_MODULE *mod); 1.785 +DLL_API FSOUND_SAMPLE * F_API FMUSIC_GetSample(FMUSIC_MODULE *mod, int sampno); 1.786 +DLL_API int F_API FMUSIC_GetPatternLength(FMUSIC_MODULE *mod, int orderno); 1.787 + 1.788 +// Runtime song information. 1.789 +DLL_API signed char F_API FMUSIC_IsFinished(FMUSIC_MODULE *mod); 1.790 +DLL_API signed char F_API FMUSIC_IsPlaying(FMUSIC_MODULE *mod); 1.791 +DLL_API int F_API FMUSIC_GetMasterVolume(FMUSIC_MODULE *mod); 1.792 +DLL_API int F_API FMUSIC_GetGlobalVolume(FMUSIC_MODULE *mod); 1.793 +DLL_API int F_API FMUSIC_GetOrder(FMUSIC_MODULE *mod); 1.794 +DLL_API int F_API FMUSIC_GetPattern(FMUSIC_MODULE *mod); 1.795 +DLL_API int F_API FMUSIC_GetSpeed(FMUSIC_MODULE *mod); 1.796 +DLL_API int F_API FMUSIC_GetBPM(FMUSIC_MODULE *mod); 1.797 +DLL_API int F_API FMUSIC_GetRow(FMUSIC_MODULE *mod); 1.798 +DLL_API signed char F_API FMUSIC_GetPaused(FMUSIC_MODULE *mod); 1.799 +DLL_API int F_API FMUSIC_GetTime(FMUSIC_MODULE *mod); 1.800 + 1.801 +#ifdef __cplusplus 1.802 +} 1.803 +#endif 1.804 + 1.805 +#endif