DEADSOFTWARE

initial commit
[d2df-editor.git] / src / lib / fmod / fmodtypes.pas
1 (* ============================================================================================= *)
2 (* FMOD Ex - Main C/C++ header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2008. *)
3 (* *)
4 (* This header is the base header for all other FMOD headers. If you are programming in C *)
5 (* use this exclusively, or if you are programming C++ use this in conjunction with FMOD.HPP *)
6 (* *)
7 (* ============================================================================================= *)
9 unit fmodtypes;
11 {$I fmod.inc}
13 interface
15 (*
16 FMOD version number. Check this against FMOD_System_GetVersion
17 *)
19 const
20 FMOD_VERSION = $00041500;
22 (*
23 FMOD types.
24 *)
26 type
27 FMOD_SYSTEM = Pointer;
28 FMOD_SOUND = Pointer;
29 FMOD_CHANNEL = Pointer;
30 FMOD_CHANNELGROUP = Pointer;
31 FMOD_DSP = Pointer;
32 FMOD_BOOL = LongBool;
33 FMOD_POLYGON = Pointer;
34 FMOD_GEOMETRY = Pointer;
35 FMOD_SYNCPOINT = Pointer;
36 FMOD_TIMEUNIT = Cardinal;
37 fmod_mode=cardinal;
40 (*
41 [STRUCTURE]
42 [
43 [DESCRIPTION]
44 Structure describing a point in 3D space.
46 [REMARKS]
47 FMOD uses a left handed co-ordinate system by default.
48 To use a right handed co-ordinate system specify FMOD_INIT_3D_RIGHTHANDED from FMOD_INITFLAGS in FMOD_System_Init.
50 [PLATFORMS]
51 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
53 [SEE_ALSO]
54 FMOD_System_Set3DListenerAttributes
55 FMOD_System_Get3DListenerAttributes
56 FMOD_Channel_Set3DAttributes
57 FMOD_Channel_Get3DAttributes
58 FMOD_Geometry_AddPolygon
59 FMOD_Geometry_SetPolygonVertex
60 FMOD_Geometry_GetPolygonVertex
61 FMOD_Geometry_SetRotation
62 FMOD_Geometry_GetRotation
63 FMOD_Geometry_SetPosition
64 FMOD_Geometry_GetPosition
65 FMOD_Geometry_SetScale
66 FMOD_Geometry_GetScale
67 FMOD_INITFLAGS
68 ]
69 *)
70 type PFMOD_VECTOR = ^FMOD_VECTOR;
71 FMOD_VECTOR = record
72 x, y, z: Single;
73 end;
76 (*
77 [ENUM]
78 [
79 [DESCRIPTION]
80 error codes. Returned from every function.
82 [REMARKS]
84 [PLATFORMS]
85 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
87 [SEE_ALSO]
88 ]
89 *)
90 type
91 FMOD_RESULT =
92 (
93 FMOD_OK, { No errors. }
94 FMOD_ERR_ALREADYLOCKED, { Tried to call lock a second time before unlock was called. }
95 FMOD_ERR_BADCOMMAND, { Tried to call a function on a data type that does not allow this type of functionality (ie calling Sound::lock on a streaming sound). }
96 FMOD_ERR_CDDA_DRIVERS, { Neither NTSCSI nor ASPI could be initialised. }
97 FMOD_ERR_CDDA_INIT, { An error occurred while initialising the CDDA subsystem. }
98 FMOD_ERR_CDDA_INVALID_DEVICE, { Couldn't find the specified device. }
99 FMOD_ERR_CDDA_NOAUDIO, { No audio tracks on the specified disc. }
100 FMOD_ERR_CDDA_NODEVICES, { No CD/DVD devices were found. }
101 FMOD_ERR_CDDA_NODISC, { No disc present in the specified drive. }
102 FMOD_ERR_CDDA_READ, { A CDDA read error occurred. }
103 FMOD_ERR_CHANNEL_ALLOC, { Error trying to allocate a channel. }
104 FMOD_ERR_CHANNEL_STOLEN, { The specified channel has been reused to play another sound. }
105 FMOD_ERR_COM, { A Win32 COM related error occured. COM failed to initialize or a QueryInterface failed meaning a Windows codec or driver was not installed properly. }
106 FMOD_ERR_DMA, { DMA Failure. See debug output for more information. }
107 FMOD_ERR_DSP_CONNECTION, { DSP connection error. Connection possibly caused a cyclic dependancy. Or tried to connect a tree too many units deep (more than 128). }
108 FMOD_ERR_DSP_FORMAT, { DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format. }
109 FMOD_ERR_DSP_NOTFOUND, { DSP connection error. Couldn't find the DSP unit specified. }
110 FMOD_ERR_DSP_RUNNING, { DSP error. Cannot perform this operation while the network is in the middle of running. This will most likely happen if a connection or disconnection is attempted in a DSP callback. }
111 FMOD_ERR_DSP_TOOMANYCONNECTIONS,{ DSP connection error. The unit being connected to or disconnected should only have 1 input or output. }
112 FMOD_ERR_FILE_BAD, { Error loading file. }
113 FMOD_ERR_FILE_COULDNOTSEEK, { Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) or the file format. }
114 FMOD_ERR_FILE_DISKEJECTED, { Media was ejected while reading. }
115 FMOD_ERR_FILE_EOF, { End of file unexpectedly reached while trying to read essential data (truncated data?). }
116 FMOD_ERR_FILE_NOTFOUND, { File not found. }
117 FMOD_ERR_FILE_UNWANTED, { Unwanted file access occured. }
118 FMOD_ERR_FORMAT, { Unsupported file or audio format. }
119 FMOD_ERR_HTTP, { A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere. }
120 FMOD_ERR_HTTP_ACCESS, { The specified resource requires authentication or is forbidden. }
121 FMOD_ERR_HTTP_PROXY_AUTH, { Proxy authentication is required to access the specified resource. }
122 FMOD_ERR_HTTP_SERVER_ERROR, { A HTTP server error occurred. }
123 FMOD_ERR_HTTP_TIMEOUT, { The HTTP request timed out. }
124 FMOD_ERR_INITIALIZATION, { FMOD was not initialized correctly to support this function. }
125 FMOD_ERR_INITIALIZED, { Cannot call this command after System::init. }
126 FMOD_ERR_INTERNAL, { An error occured that wasn't supposed to. Contact support. }
127 FMOD_ERR_INVALID_ADDRESS, { On Xbox 360, this memory address passed to FMOD must be physical, (ie allocated with XPhysicalAlloc.) }
128 FMOD_ERR_INVALID_FLOAT, { Value passed in was a NaN, Inf or denormalized float. }
129 FMOD_ERR_INVALID_HANDLE, { An invalid object handle was used. }
130 FMOD_ERR_INVALID_PARAM, { An invalid parameter was passed to this function. }
131 FMOD_ERR_INVALID_POSITION, { An invalid seek position was passed to this function. }
132 FMOD_ERR_INVALID_SPEAKER, { An invalid speaker was passed to this function based on the current speaker mode. }
133 FMOD_ERR_INVALID_SYNCPOINT, { The syncpoint did not come from this sound handle. }
134 FMOD_ERR_INVALID_VECTOR, { The vectors passed in are not unit length, or perpendicular. }
135 FMOD_ERR_IRX, { PS2 only. fmodex.irx failed to initialize. This is most likely because you forgot to load it. }
136 FMOD_ERR_MAXAUDIBLE, { Reached maximum audible playback count for this sound's soundgroup. }
137 FMOD_ERR_MEMORY, { Not enough memory or resources. }
138 FMOD_ERR_MEMORY_CANTPOINT, { Can't use FMOD_OPENMEMORY_POINT on non PCM source data, or non mp3/xma/adpcm data if FMOD_CREATECOMPRESSEDSAMPLE was used. }
139 FMOD_ERR_MEMORY_IOP, { PS2 only. Not enough memory or resources on PlayStation 2 IOP ram. }
140 FMOD_ERR_MEMORY_SRAM, { Not enough memory or resources on console sound ram. }
141 FMOD_ERR_NEEDS2D, { Tried to call a command on a 3d sound when the command was meant for 2d sound. }
142 FMOD_ERR_NEEDS3D, { Tried to call a command on a 2d sound when the command was meant for 3d sound. }
143 FMOD_ERR_NEEDSHARDWARE, { Tried to use a feature that requires hardware support. (ie trying to play a VAG compressed sound in software on PS2). }
144 FMOD_ERR_NEEDSSOFTWARE, { Tried to use a feature that requires the software engine. Software engine has either been turned off, or command was executed on a hardware channel which does not support this feature. }
145 FMOD_ERR_NET_CONNECT, { Couldn't connect to the specified host. }
146 FMOD_ERR_NET_SOCKET_ERROR, { A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere. }
147 FMOD_ERR_NET_URL, { The specified URL couldn't be resolved. }
148 FMOD_ERR_NET_WOULD_BLOCK, { Operation on a non-blocking socket could not complete immediately. }
149 FMOD_ERR_NOTREADY, { Operation could not be performed because specified sound/DSP connection is not ready. }
150 FMOD_ERR_OUTPUT_ALLOCATED, { Error initializing output device, but more specifically, the output device is already in use and cannot be reused. }
151 FMOD_ERR_OUTPUT_CREATEBUFFER, { Error creating hardware sound buffer. }
152 FMOD_ERR_OUTPUT_DRIVERCALL, { A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. }
153 FMOD_ERR_OUTPUT_ENUMERATION, { Error enumerating the available driver list. List may be inconsistent due to a recent device addition or removal. }
154 FMOD_ERR_OUTPUT_FORMAT, { Soundcard does not support the minimum features needed for this soundsystem (16bit stereo output). }
155 FMOD_ERR_OUTPUT_INIT, { Error initializing output device. }
156 FMOD_ERR_OUTPUT_NOHARDWARE, { FMOD_HARDWARE was specified but the sound card does not have the resources necessary to play it. }
157 FMOD_ERR_OUTPUT_NOSOFTWARE, { Attempted to create a software sound but no software channels were specified in System::init. }
158 FMOD_ERR_PAN, { Panning only works with mono or stereo sound sources. }
159 FMOD_ERR_PLUGIN, { An unspecified error has been returned from a 3rd party plugin. }
160 FMOD_ERR_PLUGIN_INSTANCES, { The number of allowed instances of a plugin has been exceeded. }
161 FMOD_ERR_PLUGIN_MISSING, { A requested output, dsp unit type or codec was not available. }
162 FMOD_ERR_PLUGIN_RESOURCE, { A resource that the plugin requires cannot be found. (ie the DLS file for MIDI playback) }
163 FMOD_ERR_RECORD, { An error occured trying to initialize the recording device. }
164 FMOD_ERR_REVERB_INSTANCE, { Specified Instance in FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number, or another application has locked the EAX4 FX slot. }
165 FMOD_ERR_SUBSOUND_ALLOCATED, { This subsound is already being used by another sound, you cannot have more than one parent to a sound. Null out the other parent's entry first. }
166 FMOD_ERR_SUBSOUND_CANTMOVE, { Shared subsounds cannot be replaced or moved from their parent stream, such as when the parent stream is an FSB file. }
167 FMOD_ERR_SUBSOUND_MODE, { The subsound's mode bits do not match with the parent sound's mode bits. See documentation for function that it was called with. }
168 FMOD_ERR_SUBSOUNDS, { The error occured because the sound referenced contains subsounds. The operation cannot be performed on a parent sound, or a parent sound was played without setting up a sentence first. }
169 FMOD_ERR_TAGNOTFOUND, { The specified tag could not be found or there are no tags. }
170 FMOD_ERR_TOOMANYCHANNELS, { The sound created exceeds the allowable input channel count. This can be increased using the maxinputchannels parameter in System::setSoftwareFormat. }
171 FMOD_ERR_UNIMPLEMENTED, { Something in FMOD hasn't been implemented when it should be! contact support! }
172 FMOD_ERR_UNINITIALIZED, { This command failed because System::init or System::setDriver was not called. }
173 FMOD_ERR_UNSUPPORTED, { A command issued was not supported by this object. Possibly a plugin without certain callbacks specified. }
174 FMOD_ERR_UPDATE, { An error caused by System::update occured. }
175 FMOD_ERR_VERSION, { The version number of this file format is not supported. }
176 FMOD_ERR_PRELOADED, { The specified sound is still in use by the event system, call EventSystem::unloadFSB before trying to release it. }
178 FMOD_ERR_EVENT_FAILED, { An Event failed to be retrieved, most likely due to 'just fail' being specified as the max playbacks behavior. }
179 FMOD_ERR_EVENT_INFOONLY, { Can't execute this command on an EVENT_INFOONLY event. }
180 FMOD_ERR_EVENT_INTERNAL, { An error occured that wasn't supposed to. See debug log for reason. }
181 FMOD_ERR_EVENT_MAXSTREAMS, { Event failed because 'Max streams' was hit when FMOD_EVENT_INIT_FAIL_ON_MAXSTREAMS was specified. }
182 FMOD_ERR_EVENT_MISMATCH, { FSB mismatches the FEV it was compiled with, the stream/sample mode it was meant to be created with was different, or the FEV was built for a different platform. }
183 FMOD_ERR_EVENT_NAMECONFLICT, { A category with the same name already exists. }
184 FMOD_ERR_EVENT_NOTFOUND, { The requested event, event group, event category or event property could not be found. }
185 FMOD_ERR_EVENT_NEEDSSIMPLE, { Tried to call a function on a complex event that's only supported by simple events. }
186 FMOD_ERR_EVENT_GUIDCONFLICT, { An event with the same GUID already exists. }
187 FMOD_ERR_EVENT_ALREADY_LOADED, { The specified project has already been loaded. Having multiple copies of the same project loaded simultaneously is forbidden. }
189 FMOD_ERR_MUSIC_UNINITIALIZED, { Music system is not initialized probably because no music data is loaded. }
191 FMOD_RESULT_FORCEINT = 65536 { Makes sure this enum is signed 32bit. }
192 );
195 (*
196 [ENUM]
198 [DESCRIPTION]
199 These output types are used with FMOD_System_SetOutput/FMOD_System_GetOutput, to choose which output method to use.
201 [REMARKS]
202 To pass information to the driver when initializing fmod use the extradriverdata parameter in System::init for the following reasons.
203 - FMOD_OUTPUTTYPE_WAVWRITER - extradriverdata is a pointer to a char * filename that the wav writer will output to.
204 - FMOD_OUTPUTTYPE_WAVWRITER_NRT - extradriverdata is a pointer to a char * filename that the wav writer will output to.
205 - FMOD_OUTPUTTYPE_DSOUND - extradriverdata is a pointer to a HWND so that FMOD can set the focus on the audio for a particular window.
206 - FMOD_OUTPUTTYPE_GC - extradriverdata is a pointer to a FMOD_ARAMBLOCK_INFO struct. This can be found in fmodgc.h.
207 - FMOD_OUTPUTTYPE_ALSA - extradriverdata is a pointer to a char * argument if required by the chosen ALSA driver.
208 Currently these are the only FMOD drivers that take extra information. Other unknown plugins may have different requirements.
210 Note! If FMOD_OUTPUTTYPE_NOSOUND_NRT or FMOD_OUTPUTTYPE_NOSOUND_NRT are used, and if the System::update function is being called
211 very quickly (ie for a non realtime decode) it may be being called too quickly for the FMOD streamer thread to respond to.
212 The result will be a skipping/stuttering output in the captured audio.
213 To remedy this, disable the FMOD Ex streamer thread, and use FMOD_INIT_STREAM_FROM_UPDATE can be used to avoid skipping in
214 the output stream, as it will lock the mixer and the streamer together in the same thread.
216 [PLATFORMS]
217 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
219 [SEE_ALSO]
220 FMOD_System_SetOutput
221 FMOD_System_GetOutput
222 FMOD_System_SetSoftwareFormat
223 FMOD_System_GetSoftwareFormat
224 FMOD_System_Init
225 FMOD_System_Update
226 FMOD_INITFLAGS
228 *)
229 type
230 FMOD_OUTPUTTYPE =
232 FMOD_OUTPUTTYPE_AUTODETECT, (* Picks the best output mode for the platform. This is the default. *)
234 FMOD_OUTPUTTYPE_UNKNOWN, (* All - 3rd party plugin, unknown. This is for use with System::getOutput only. *)
235 FMOD_OUTPUTTYPE_NOSOUND, (* All - All calls in this mode succeed but make no sound. *)
236 FMOD_OUTPUTTYPE_WAVWRITER, (* All - Writes output to fmodoutput.wav by default. Use the 'extradriverdata' parameter in System::init, by simply passing the filename as a string, to set the wav filename. *)
237 FMOD_OUTPUTTYPE_NOSOUND_NRT, (* All - Non-realtime version of FMOD_OUTPUTTYPE_NOSOUND. User can drive mixer with System::update at whatever rate they want. *)
238 FMOD_OUTPUTTYPE_WAVWRITER_NRT, (* All - Non-realtime version of FMOD_OUTPUTTYPE_WAVWRITER. User can drive mixer with System::update at whatever rate they want. *)
240 FMOD_OUTPUTTYPE_DSOUND, (* Win32/Win64 - DirectSound output. Use this to get hardware accelerated 3d audio and EAX Reverb support. (Default on Windows) *)
241 FMOD_OUTPUTTYPE_WINMM, (* Win32/Win64 - Windows Multimedia output. *)
242 FMOD_OUTPUTTYPE_OPENAL, (* Win32/Win64 - OpenAL 1.1 output. Use this for lower CPU overhead than FMOD_OUTPUTTYPE_DSOUND, and also Vista H/W support with Creative Labs cards. *)
243 FMOD_OUTPUTTYPE_WASAPI, (* Win32 - Windows Audio Session API. (Default on Windows Vista) *)
244 FMOD_OUTPUTTYPE_ASIO, (* Win32 - Low latency ASIO driver. *)
245 FMOD_OUTPUTTYPE_OSS, (* Linux - Open Sound System output. (Default on Linux) *)
246 FMOD_OUTPUTTYPE_ALSA, (* Linux - Advanced Linux Sound Architecture output. *)
247 FMOD_OUTPUTTYPE_ESD, (* Linux - Enlightment Sound Daemon output. *)
248 FMOD_OUTPUTTYPE_SOUNDMANAGER, (* Mac - Macintosh SoundManager output. (Default on Mac carbon library)*)
249 FMOD_OUTPUTTYPE_COREAUDIO, (* Mac - Macintosh CoreAudio output. (Default on Mac OSX library) *)
250 FMOD_OUTPUTTYPE_XBOX, (* Xbox - Native hardware output. (Default on Xbox) *)
251 FMOD_OUTPUTTYPE_PS2, (* PS2 - Native hardware output. (Default on PS2) *)
252 FMOD_OUTPUTTYPE_PS3, (* PS3 - Native hardware output. (Default on PS3) *)
253 FMOD_OUTPUTTYPE_GC, (* GameCube - Native hardware output. (Default on GameCube) *)
254 FMOD_OUTPUTTYPE_XBOX360, (* Xbox 360 - Native hardware output. (Default on Xbox 360) *)
255 FMOD_OUTPUTTYPE_PSP, (* PSP - Native hardware output. (Default on PSP) *)
256 FMOD_OUTPUTTYPE_WII, (* Wii - Native hardware output. (Default on Wii) *)
258 FMOD_OUTPUTTYPE_MAX (* Maximum number of output types supported. *)
259 );
262 (*
263 [ENUM]
265 [DESCRIPTION]
266 Bit fields to use with FMOD_System_GetDriverCaps to determine the capabilities of a card / output device.
268 [REMARKS]
270 [PLATFORMS]
271 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
273 [SEE_ALSO]
274 FMOD_System_GetDriverCaps
276 *)
277 const
278 FMOD_CAPS_NONE = $00000000; (* Device has no special capabilities *)
279 FMOD_CAPS_HARDWARE = $00000001; (* Device supports hardware mixing. *)
280 FMOD_CAPS_HARDWARE_EMULATED = $00000002; (* User has device set to 'Hardware acceleration = off' in control panel, and now extra 200ms latency is incurred.*)
281 FMOD_CAPS_OUTPUT_MULTICHANNEL = $00000004; (* Device can do multichannel output, ie greater than 2 channels *)
282 FMOD_CAPS_OUTPUT_FORMAT_PCM8 = $00000008; (* Device can output to 8bit integer PCM *)
283 FMOD_CAPS_OUTPUT_FORMAT_PCM16 = $00000010; (* Device can output to 16bit integer PCM *)
284 FMOD_CAPS_OUTPUT_FORMAT_PCM24 = $00000020; (* Device can output to 24bit integer PCM *)
285 FMOD_CAPS_OUTPUT_FORMAT_PCM32 = $00000040; (* Device can output to 32bit integer PCM *)
286 FMOD_CAPS_OUTPUT_FORMAT_PCMFLOAT = $00000080; (* Device can output to 32bit floating point PCM *)
287 FMOD_CAPS_REVERB_EAX2 = $00000100; (* Device supports EAX2 reverb. *)
288 FMOD_CAPS_REVERB_EAX3 = $00000200; (* Device supports EAX3 reverb. *)
289 FMOD_CAPS_REVERB_EAX4 = $00000400; (* Device supports EAX4 reverb *)
290 FMOD_CAPS_REVERB_EAX5 = $00000800; (* Device supports EAX5 reverb *)
291 FMOD_CAPS_REVERB_I3DL2 = $00001000; (* Device supports I3DL2 reverb. *)
292 FMOD_CAPS_REVERB_LIMITED = $00002000; (* Device supports some form of limited hardware reverb, maybe parameterless and only selectable by environment. *)
295 (*
296 [ENUM]
298 [DESCRIPTION]
299 These are speaker types defined for use with the FMOD_System_SetSpeakerMode or FMOD_System_GetSpeakerMode command.
301 [REMARKS]
302 These are important notes on speaker modes in regards to sounds created with FMOD_SOFTWARE.
303 Note below the phrase 'sound channels' is used. These are the subchannels inside a sound, they are not related and
304 have nothing to do with the FMOD class "FMOD_CHANNEL".
305 For example a mono sound has 1 sound channel, a stereo sound has 2 sound channels, and an AC3 or 6 channel wav file have 6 "sound channels".
307 FMOD_SPEAKERMODE_NONE
308 ---------------------
309 This mode is for output devices that are not specifically mono/stereo/quad/surround/5.1 or 7.1, but are multichannel.
310 Sound channels map to speakers sequentially, so a mono sound maps to output speaker 0, stereo sound maps to output speaker 0 & 1.
311 The user assumes knowledge of the speaker order. FMOD_SPEAKER enumerations may not apply, so raw channel indicies should be used.
312 Multichannel sounds map input channels to output channels 1:1.
313 Channel::setPan and Channel::setSpeakerMix do not work.
314 Speaker levels must be manually set with Channel::setSpeakerLevels.
316 FMOD_SPEAKERMODE_MONO
317 ---------------------
318 This mode is for a 1 speaker arrangement.
319 Panning does not work in this speaker mode.
320 Mono, stereo and multichannel sounds have each sound channel played on the one speaker unity.
321 Mix behaviour for multichannel sounds can be set with Channel::setSpeakerLevels.
322 Channel::setSpeakerMix does not work.
324 FMOD_SPEAKERMODE_STEREO
325 -----------------------
326 This mode is for 2 speaker arrangements that have a left and right speaker.
327 - Mono sounds default to an even distribution between left and right. They can be panned with Channel::setPan.
328 - Stereo sounds default to the middle, or full left in the left speaker and full right in the right speaker.
329 - They can be cross faded with Channel::setPan.
330 - Multichannel sounds have each sound channel played on each speaker at unity.
331 - Mix behaviour for multichannel sounds can be set with Channel::setSpeakerLevels.
332 - Channel::setSpeakerMix works but only front left and right parameters are used, the rest are ignored.
334 FMOD_SPEAKERMODE_QUAD
335 ------------------------
336 This mode is for 4 speaker arrangements that have a front left, front right, rear left and a rear right speaker.
337 - Mono sounds default to an even distribution between front left and front right. They can be panned with Channel::setPan.
338 - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right.
339 - They can be cross faded with Channel::setPan.
340 - Multichannel sounds default to all of their sound channels being played on each speaker in order of input.
341 - Mix behaviour for multichannel sounds can be set with Channel::setSpeakerLevels.
342 - Channel::setSpeakerMix works but side left, side right, center and lfe are ignored.
344 FMOD_SPEAKERMODE_SURROUND
345 ------------------------
346 This mode is for 4 speaker arrangements that have a front left, front right, front center and a rear center.
347 - Mono sounds default to the center speaker. They can be panned with Channel::setPan.
348 - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right.
349 - They can be cross faded with Channel::setPan.
350 - Multichannel sounds default to all of their sound channels being played on each speaker in order of input.
351 - Mix behaviour for multichannel sounds can be set with Channel::setSpeakerLevels.
352 - Channel::setSpeakerMix works but side left, side right and lfe are ignored, and rear left / rear right are averaged into the rear speaker.
354 FMOD_SPEAKERMODE_5POINT1
355 ------------------------
356 This mode is for 5.1 speaker arrangements that have a left/right/center/rear left/rear right and a subwoofer speaker.
357 - Mono sounds default to the center speaker. They can be panned with Channel::setPan.
358 - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right.
359 - They can be cross faded with Channel::setPan.
360 - Multichannel sounds default to all of their sound channels being played on each speaker in order of input.
361 - Mix behaviour for multichannel sounds can be set with Channel::setSpeakerLevels.
362 - Channel::setSpeakerMix works but side left / side right are ignored.
364 FMOD_SPEAKERMODE_7POINT1
365 ------------------------
366 This mode is for 7.1 speaker arrangements that have a left/right/center/rear left/rear right/side left/side right
367 and a subwoofer speaker.
368 - Mono sounds default to the center speaker. They can be panned with Channel::setPan.
369 - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right.
370 - They can be cross faded with Channel::setPan.
371 - Multichannel sounds default to all of their sound channels being played on each speaker in order of input.
372 - Mix behaviour for multichannel sounds can be set with Channel::setSpeakerLevels.
373 - Channel::setSpeakerMix works and every parameter is used to set the balance of a sound in any speaker.
375 FMOD_SPEAKERMODE_PROLOGIC
376 ------------------------------------------------------
377 This mode is for mono, stereo, 5.1 and 7.1 speaker arrangements, as it is backwards and forwards compatible with stereo,
378 but to get a surround effect a Dolby Prologic or Prologic 2 hardware decoder / amplifier is needed.
379 Pan behaviour is the same as FMOD_SPEAKERMODE_5POINT1.
381 If this function is called the numoutputchannels setting in System::setSoftwareFormat is overwritten.
383 For 3D sounds, panning is determined at runtime by the 3D subsystem based on the speaker mode to determine which speaker the
384 sound should be placed in.
386 [PLATFORMS]
387 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
389 [SEE_ALSO]
390 FMOD_System_SetSpeakerMode
391 FMOD_System_GetSpeakerMode
392 FMOD_System_GetDriverCaps
393 FMOD_Channel_SetSpeakerLevels
395 *)
396 type
397 FMOD_SPEAKERMODE =
399 FMOD_SPEAKERMODE_RAW, (* There is no specific speakermode. Sound channels are mapped in order of input to output. See remarks for more information. *)
400 FMOD_SPEAKERMODE_MONO, (* The speakers are monaural. *)
401 FMOD_SPEAKERMODE_STEREO, (* The speakers are stereo (DEFAULT). *)
402 FMOD_SPEAKERMODE_QUAD, (* 4 speaker setup. This includes front left, front right, rear left, rear right. *)
403 FMOD_SPEAKERMODE_SURROUND, (* 4 speaker setup. This includes front left, front right, center, rear center (rear left/rear right are averaged). *)
404 FMOD_SPEAKERMODE_5POINT1, (* 5.1 speaker setup. This includes front left, front right, center, rear left, rear right and a subwoofer. *)
405 FMOD_SPEAKERMODE_7POINT1, (* 7.1 speaker setup. This includes front left, front right, center, rear left, rear right, side left, side right and a subwoofer. *)
406 FMOD_SPEAKERMODE_PROLOGIC (* Stereo output, but data is encoded in a way that is picked up by a Prologic/Prologic2 decoder and split into a 5.1 speaker setup. *)
407 );
410 (*
411 [ENUM]
413 [DESCRIPTION]
414 These are speaker types defined for use with the FMOD_Channel_SetSpeakerLevels command.
415 It can also be used for speaker placement in the FMOD_System_Set3DSpeakerPosition command.
417 [REMARKS]
418 If you are using FMOD_SPEAKERMODE_NONE and speaker assignments are meaningless, just cast a raw integer value to this type.
419 For example (FMOD_SPEAKER)7 would use the 7th speaker (also the same as FMOD_SPEAKER_SIDE_RIGHT).
420 Values higher than this can be used if an output system has more than 8 speaker types / output channels. 15 is the current maximum.
422 [PLATFORMS]
423 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
425 [SEE_ALSO]
426 FMOD_SPEAKERMODE
427 FMOD_Channel_SetSpeakerLevels
428 FMOD_Channel_GetSpeakerLevels
429 FMOD_System_Set3DSpeakerPosition
430 FMOD_System_Get3DSpeakerPosition
432 *)
433 type
434 FMOD_SPEAKER =
436 FMOD_SPEAKER_FRONT_LEFT,
437 FMOD_SPEAKER_FRONT_RIGHT,
438 FMOD_SPEAKER_FRONT_CENTER,
439 FMOD_SPEAKER_LOW_FREQUENCY,
440 FMOD_SPEAKER_BACK_LEFT,
441 FMOD_SPEAKER_BACK_RIGHT,
442 FMOD_SPEAKER_SIDE_LEFT,
443 FMOD_SPEAKER_SIDE_RIGHT,
444 FMOD_SPEAKER_MAX
445 );
448 (*
449 [ENUM]
451 [DESCRIPTION]
452 These are plugin types defined for use with the FMOD_System_GetNumPlugins,
453 FMOD_System_GetPluginInfo and FMOD_System_UnloadPlugin functions.
455 [REMARKS]
457 [PLATFORMS]
458 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
460 [SEE_ALSO]
461 FMOD_System_GetNumPlugins
462 FMOD_System_GetPluginInfo
463 FMOD_System_UnloadPlugin
465 *)
466 type
467 FMOD_PLUGINTYPE =
469 FMOD_PLUGINTYPE_OUTPUT, (* The plugin type is an output module. FMOD mixed audio will play through one of these devices *)
470 FMOD_PLUGINTYPE_CODEC, (* The plugin type is a file format codec. FMOD will use these codecs to load file formats for playback. *)
471 FMOD_PLUGINTYPE_DSP (* The plugin type is a DSP unit. FMOD will use these plugins as part of its DSP network to apply effects to output or generate sound in realtime. *)
472 );
475 (*
476 [ENUM]
478 [DESCRIPTION]
479 Initialization flags. Use them with FMOD_System_Init in the flags parameter to change various behaviour.
481 [REMARKS]
483 [PLATFORMS]
484 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
486 [SEE_ALSO]
487 FMOD_System_Init
489 *)
490 const
491 FMOD_INIT_NORMAL = $00000000; (* All platforms - Initialize normally *)
492 FMOD_INIT_STREAM_FROM_UPDATE = $00000001; (* All platforms - No stream thread is created internally. Streams are driven from System::update. Mainly used with non-realtime outputs. *)
493 FMOD_INIT_3D_RIGHTHANDED = $00000002; (* All platforms - FMOD will treat +X as left, +Y as up and +Z as forwards. *)
494 FMOD_INIT_SOFTWARE_DISABLE = $00000004; (* All platforms - Disable software mixer to save memory. Anything created with FMOD_SOFTWARE will fail and DSP will not work. *)
495 FMOD_INIT_SOFTWARE_OCCLUSION = $00000008; (* All platforms - All FMOD_SOFTWARE with FMOD_3D based voices will add a software lowpass filter effect into the DSP chain which is automatically used when Channel::set3DOcclusion is used or the geometry API. *)
496 FMOD_INIT_SOFTWARE_HRTF = $00000010; (* All platforms - All FMOD_SOFTWARE with FMOD_3D based voices will add a software lowpass filter effect into the DSP chain which causes sounds to sound duller when the sound goes behind the listener. *)
497 FMOD_INIT_VOL0_BECOMES_VIRTUAL = $00000080; (* All platforms - Any sounds that are 0 volume will go virtual and not be processed except for having their positions updated virtually. Use System::setAdvancedSettings to adjust what volume besides zero to switch to virtual at. *)
498 FMOD_INIT_WASAPI_EXCLUSIVE = $00000100; (* Win32 Vista only - for WASAPI output - Enable exclusive access to hardware, lower latency at the expense of excluding other applications from accessing the audio hardware. *)
499 FMOD_INIT_DSOUND_HRTFNONE = $00000200; (* Win32 only - for DirectSound output - FMOD_HARDWARE | FMOD_3D buffers use simple stereo panning/doppler/attenuation when 3D hardware acceleration is not present. *)
500 FMOD_INIT_DSOUND_HRTFLIGHT = $00000400; (* Win32 only - for DirectSound output - FMOD_HARDWARE | FMOD_3D buffers use a slightly higher quality algorithm when 3D hardware acceleration is not present. *)
501 FMOD_INIT_DSOUND_HRTFFULL = $00000800; (* Win32 only - for DirectSound output - FMOD_HARDWARE | FMOD_3D buffers use full quality 3D playback when 3d hardware acceleration is not present. *)
502 FMOD_INIT_PS2_DISABLECORE0REVERB = $00010000; (* PS2 only - Disable reverb on CORE 0 to regain SRAM. *)
503 FMOD_INIT_PS2_DISABLECORE1REVERB = $00020000; (* PS2 only - Disable reverb on CORE 1 to regain SRAM. *)
504 FMOD_INIT_PS2_DONTUSESCRATCHPAD = $00040000; (* PS2 only - FMOD's usage of the scratchpad between System::update and System::updateFinished. *)
505 FMOD_INIT_PS2_SWAPDMACHANNELS = $00080000; (* PS2 only - Changes FMOD from using SPU DMA channel 0 for software mixing, and 1 for sound data upload/file streaming, to 1 and 0 respectively. *)
506 FMOD_INIT_XBOX_REMOVEHEADROOM = $00100000; (* Xbox only - By default DirectSound attenuates all sound by 6db to avoid clipping/distortion. CAUTION. If you use this flag you are responsible for the final mix to make sure clipping / distortion doesn't happen. *)
507 FMOD_INIT_360_MUSICMUTENOTPAUSE = $00200000; (* Xbox 360 only - The "music" channelgroup which by default pauses when custom 360 dashboard music is played, can be changed to mute (therefore continues playing) instead of pausing, by using this flag. *)
511 (*
512 [ENUM]
514 [DESCRIPTION]
515 These definitions describe the type of song being played.
517 [REMARKS]
519 [PLATFORMS]
520 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
522 [SEE_ALSO]
523 FMOD_Sound_GetFormat
525 *)
526 type
527 FMOD_SOUND_TYPE =
529 FMOD_SOUND_TYPE_UNKNOWN, { 3rd party / unknown plugin format. }
530 FMOD_SOUND_TYPE_AAC, { AAC. Currently unsupported. }
531 FMOD_SOUND_TYPE_AIFF, { AIFF. }
532 FMOD_SOUND_TYPE_ASF, { Microsoft Advanced Systems Format (ie WMA/ASF/WMV). }
533 FMOD_SOUND_TYPE_AT3, { Sony ATRAC 3 format }
534 FMOD_SOUND_TYPE_CDDA, { Digital CD audio. }
535 FMOD_SOUND_TYPE_DLS, { Sound font / downloadable sound bank. }
536 FMOD_SOUND_TYPE_FLAC, { FLAC lossless codec. }
537 FMOD_SOUND_TYPE_FSB, { FMOD Sample Bank. }
538 FMOD_SOUND_TYPE_GCADPCM, { GameCube ADPCM }
539 FMOD_SOUND_TYPE_IT, { Impulse Tracker. }
540 FMOD_SOUND_TYPE_MIDI, { MIDI. }
541 FMOD_SOUND_TYPE_MOD, { Protracker / Fasttracker MOD. }
542 FMOD_SOUND_TYPE_MPEG, { MP2/MP3 MPEG. }
543 FMOD_SOUND_TYPE_OGGVORBIS, { Ogg vorbis. }
544 FMOD_SOUND_TYPE_PLAYLIST, { Information only from ASX/PLS/M3U/WAX playlists }
545 FMOD_SOUND_TYPE_RAW, { Raw PCM data. }
546 FMOD_SOUND_TYPE_S3M, { ScreamTracker 3. }
547 FMOD_SOUND_TYPE_SF2, { Sound font 2 format. }
548 FMOD_SOUND_TYPE_USER, { User created sound. }
549 FMOD_SOUND_TYPE_WAV, { Microsoft WAV. }
550 FMOD_SOUND_TYPE_XM, { FastTracker 2 XM. }
551 FMOD_SOUND_TYPE_XMA, { Xbox360 XMA }
552 FMOD_SOUND_TYPE_VAG, { PlayStation 2 / PlayStation Portable adpcm VAG format. }
554 FMOD_SOUND_TYPE_MAX, { Maximum number of sound types supported. }
555 FMOD_SOUND_TYPE_FORCEINT = 65536 { Makes sure this enum is signed 32bit. }
556 );
559 (*
560 [ENUM]
562 [DESCRIPTION]
563 These definitions describe the native format of the hardware or software buffer that will be used.
565 [REMARKS]
566 This is the format the native hardware or software buffer will be or is created in.
568 [PLATFORMS]
569 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
571 [SEE_ALSO]
572 FMOD_System_CreateSound
573 FMOD_Sound_GetFormat
575 *)
576 type
577 FMOD_SOUND_FORMAT =
579 FMOD_SOUND_FORMAT_NONE, { Unitialized / unknown. }
580 FMOD_SOUND_FORMAT_PCM8, { 8bit integer PCM data. }
581 FMOD_SOUND_FORMAT_PCM16, { 16bit integer PCM data. }
582 FMOD_SOUND_FORMAT_PCM24, { 24bit integer PCM data. }
583 FMOD_SOUND_FORMAT_PCM32, { 32bit integer PCM data. }
584 FMOD_SOUND_FORMAT_PCMFLOAT, { 32bit floating point PCM data. }
585 FMOD_SOUND_FORMAT_GCADPCM, { Compressed GameCube DSP data. }
586 FMOD_SOUND_FORMAT_IMAADPCM, { Compressed IMA ADPCM / Xbox ADPCM data. }
587 FMOD_SOUND_FORMAT_VAG, { Compressed PlayStation 2 / PlayStation Portable ADPCM data. }
588 FMOD_SOUND_FORMAT_XMA, { Compressed Xbox360 data. }
589 FMOD_SOUND_FORMAT_MPEG, { Compressed MPEG layer 2 or 3 data. }
591 FMOD_SOUND_FORMAT_MAX, { Maximum number of sound formats supported. }
592 FMOD_SOUND_FORMAT_FORCEINT = 65536 { Makes sure this enum is signed 32bit. }
593 );
594 PFMOD_SOUND_FORMAT = ^FMOD_SOUND_FORMAT;
597 (*
598 [ENUM]
600 [DESCRIPTION]
601 Sound description bitfields, bitwise OR them together for loading and describing sounds.
603 [REMARKS]
604 By default a sound will open as a static sound that is decompressed fully into memory. To have a sound stream instead, use FMOD_CREATESTREAM.
606 [PLATFORMS]
607 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
609 [SEE_ALSO]
610 FMOD_System_CreateSound
611 FMOD_System_CreateStream
612 FMOD_Sound_GetMode
613 FMOD_Sound_GetMode
614 FMOD_Channel_SetMode
615 FMOD_Channel_GetMode
617 *)
618 const
619 FMOD_DEFAULT = $00000000; { FMOD_DEFAULT is a default sound type. Equivalent to all the defaults listed below. FMOD_LOOP_OFF, FMOD_2D, FMOD_HARDWARE. (Note - only Windows with a high spec soundcard, PS2, PSP, and Wii support FMOD_HARDWARE) }
620 FMOD_LOOP_OFF = $00000001; { For non looping sounds. (DEFAULT). Overrides FMOD_LOOP_NORMAL / FMOD_LOOP_BIDI. }
621 FMOD_LOOP_NORMAL = $00000002; { For forward looping sounds. }
622 FMOD_LOOP_BIDI = $00000004; { For bidirectional looping sounds. (only works on software mixed static sounds). }
623 FMOD_2D = $00000008; { Ignores any 3d processing. (DEFAULT). }
624 FMOD_3D = $00000010; { Makes the sound positionable in 3D. Overrides FMOD_2D. }
625 FMOD_HARDWARE = $00000020; { Attempts to make sounds use hardware acceleration. (DEFAULT). Note on platforms that don't support FMOD_HARDWARE (only Windows with a high spec soundcard, PS2, PSP, and Wii support FMOD_HARDWARE), this will be internally treated as FMOD_SOFTWARE. }
626 FMOD_SOFTWARE = $00000040; { Makes the sound be mixed by the FMOD CPU based software mixer. Overrides FMOD_HARDWARE. Use this for FFT, DSP, compressed sample support, 2D multi-speaker support and other software related features. }
627 FMOD_CREATESTREAM = $00000080; { Decompress at runtime, streaming from the source provided (ie from disk). Overrides FMOD_CREATESAMPLE and FMOD_CREATECOMPRESSEDSAMPLE. Note a stream can only be played once at a time due to a stream only having 1 stream buffer and file handle. Open multiple streams to have them play concurrently. }
628 FMOD_CREATESAMPLE = $00000100; { Decompress at loadtime, decompressing or decoding whole file into memory as the target sample format (ie PCM). Fastest for FMOD_SOFTWARE based playback and most flexible. }
629 FMOD_CREATECOMPRESSEDSAMPLE = $00000200; { Load MP2, MP3, IMAADPCM or XMA into memory and leave it compressed. During playback the FMOD software mixer will decode it in realtime as a 'compressed sample'. Can only be used in combination with FMOD_SOFTWARE. Overrides FMOD_CREATESAMPLE. If the sound data is not ADPCM, MPEG or XMA it will behave as if it was created with FMOD_CREATESAMPLE and decode the sound into PCM. }
630 FMOD_OPENUSER = $00000400; { Opens a user created static sample or stream. Use FMOD_CREATESOUNDEXINFO to specify format and/or read callbacks. If a user created 'sample' is created with no read callback, the sample will be empty. Use Sound::lock and Sound::unlock to place sound data into the sound if this is the case. }
631 FMOD_OPENMEMORY = $00000800; { "name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds. Use FMOD_CREATESOUNDEXINFO to specify length. If used with FMOD_CREATESAMPLE or FMOD_CREATECOMPRESSEDSAMPLE, FMOD duplicates the memory into its own buffers. Your own buffer can be freed after open. If used with FMOD_CREATESTREAM, FMOD will stream out of the buffer whose pointer you passed in. In this case, your own buffer should not be freed until you have finished with and released the stream. }
632 FMOD_OPENMEMORY_POINT = $10000000; { "name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds. Use FMOD_CREATESOUNDEXINFO to specify length. This differs to FMOD_OPENMEMORY in that it uses the memory as is, without duplicating the memory into its own buffers. For Wii/PSP FMOD_HARDWARE supports this flag for the GCADPCM/VAG formats. On other platforms FMOD_SOFTWARE must be used, as sound hardware on the other platforms (ie PC) cannot access main ram. Cannot be freed after open, only after Sound::release. Will not work if the data is compressed and FMOD_CREATECOMPRESSEDSAMPLE is not used. }
633 FMOD_OPENRAW = $00001000; { Will ignore file format and treat as raw pcm. Use FMOD_CREATESOUNDEXINFO to specify format. Requires at least defaultfrequency, numchannels and format to be specified before it will open. Must be little endian data. }
634 FMOD_OPENONLY = $00002000; { Just open the file, dont prebuffer or read. Good for fast opens for info, or when sound::readData is to be used. }
635 FMOD_ACCURATETIME = $00004000; { For System::createSound - for accurate Sound::getLength/Channel::setPosition on VBR MP3, and MOD/S3M/XM/IT/MIDI files. Scans file first, so takes longer to open. FMOD_OPENONLY does not affect this. }
636 FMOD_MPEGSEARCH = $00008000; { For corrupted / bad MP3 files. This will search all the way through the file until it hits a valid MPEG header. Normally only searches for 4k. }
637 FMOD_NONBLOCKING = $00010000; { For opening sounds and getting streamed subsounds (seeking) asyncronously. Use Sound::getOpenState to poll the state of the sound as it opens or retrieves the subsound in the background. }
638 FMOD_UNIQUE = $00020000; { Unique sound, can only be played one at a time }
639 FMOD_3D_HEADRELATIVE = $00040000; { Make the sound's position, velocity and orientation relative to the listener. }
640 FMOD_3D_WORLDRELATIVE = $00080000; { Make the sound's position, velocity and orientation absolute (relative to the world). (DEFAULT) }
641 FMOD_3D_LOGROLLOFF = $00100000; { This sound will follow the standard logarithmic rolloff model where mindistance = full volume, maxdistance = where sound stops attenuating, and rolloff is fixed according to the global rolloff factor. (DEFAULT) }
642 FMOD_3D_LINEARROLLOFF = $00200000; { This sound will follow a linear rolloff model where mindistance = full volume, maxdistance = silence. Rolloffscale is ignored. }
643 FMOD_3D_CUSTOMROLLOFF = $04000000; { This sound will follow a rolloff model defined by Sound::set3DCustomRolloff / Channel::set3DCustomRolloff. }
644 FMOD_3D_IGNOREGEOMETRY = $40000000; { Is not affect by geometry occlusion. If not specified in Sound::setMode, or Channel::setMode, the flag is cleared and it is affected by geometry again. }
645 FMOD_CDDA_FORCEASPI = $00400000; { For CDDA sounds only - use ASPI instead of NTSCSI to access the specified CD/DVD device. }
646 FMOD_CDDA_JITTERCORRECT = $00800000; { For CDDA sounds only - perform jitter correction. Jitter correction helps produce a more accurate CDDA stream at the cost of more CPU time. }
647 FMOD_UNICODE = $01000000; { Filename is double-byte unicode. }
648 FMOD_IGNORETAGS = $02000000; { Skips id3v2/asf/etc tag checks when opening a sound, to reduce seek/read overhead when opening files (helps with CD performance). }
649 FMOD_LOWMEM = $08000000; { Removes some features from samples to give a lower memory overhead, like Sound::getName. See remarks. }
650 FMOD_LOADSECONDARYRAM = $20000000; { Load sound into the secondary RAM of supported platform. On PS3, sounds will be loaded into RSX/VRAM. }
651 FMOD_VIRTUAL_PLAYFROMSTART = $80000000; { For sounds that start virtual (due to being quiet or low importance), instead of swapping back to audible, and playing at the correct offset according to time, this flag makes the sound play from the start. }
653 (*
654 [ENUM]
656 [DESCRIPTION]
657 These values describe what state a sound is in after FMOD_NONBLOCKING has been used to open it.
659 [REMARKS]
661 [PLATFORMS]
662 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
664 [SEE_ALSO]
665 FMOD_Sound_GetOpenState
666 FMOD_MODE
668 *)
669 type
670 FMOD_OPENSTATE =
672 FMOD_OPENSTATE_READY = 0, { Opened and ready to play. }
673 FMOD_OPENSTATE_LOADING, { Initial load in progress. }
674 FMOD_OPENSTATE_ERROR, { Failed to open - file not found, out of memory etc. See return value of Sound::getOpenState for what happened. }
675 FMOD_OPENSTATE_CONNECTING, { Connecting to remote host (internet sounds only). }
676 FMOD_OPENSTATE_BUFFERING, { Buffering data. }
677 FMOD_OPENSTATE_SEEKING, { Seeking to subsound and re-flushing stream buffer. }
678 FMOD_OPENSTATE_STREAMING, { Ready and playing, but not possible to release at this time without stalling the main thread. }
679 FMOD_OPENSTATE_SETPOSITION, { Seeking within a stream to a different position. }
681 FMOD_OPENSTATE_MAX, { Maximum number of open state types. }
682 FMOD_OPENSTATE_FORCEINT = 65536 { Makes sure this enum is signed 32bit. }
683 );
686 (*
687 [ENUM]
689 [DESCRIPTION]
690 These callback types are used with FMOD_Channel_SetCallback.
692 [REMARKS]
693 Each callback has commanddata parameters passed int unique to the type of callback.
694 See reference to FMOD_CHANNEL_CALLBACK to determine what they might mean for each type of callback.
696 Note! Currently the user must call System::update for these callbacks to trigger!
698 [PLATFORMS]
699 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
701 [SEE_ALSO]
702 FMOD_Channel_SetCallback
703 FMOD_CHANNEL_CALLBACK
704 FMOD_System_Update
706 *)
707 type
708 FMOD_CHANNEL_CALLBACKTYPE =
710 FMOD_CHANNEL_CALLBACKTYPE_END, (* Called when a sound ends. *)
711 FMOD_CHANNEL_CALLBACKTYPE_VIRTUALVOICE, (* Called when a voice is swapped out or swapped in. *)
712 FMOD_CHANNEL_CALLBACKTYPE_SYNCPOINT, (* Called when a syncpoint is encountered. Can be from wav file markers. *)
713 FMOD_CHANNEL_CALLBACKTYPE_OCCLUSION, (* Called when the channel has its geometry occlusion value calculated. Can be used to clamp or change the value. *)
715 FMOD_CHANNEL_CALLBACKTYPE_MAX , (* Maximum number of callback types supported. *)
716 FMOD_CHANNEL_CALLBACKTYPE_FORCEINT = 65536
717 );
720 (*
721 FMOD Callbacks
722 *)
723 type
724 FMOD_CHANNEL_CALLBACK = function (channel: FMOD_CHANNEL; callbacktype: FMOD_CHANNEL_CALLBACKTYPE; commanddata1: Pointer; commanddata2: Pointer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
726 FMOD_SOUND_NONBLOCKCALLBACK = function (sound: FMOD_SOUND; result: FMOD_RESULT): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
727 FMOD_SOUND_PCMREADCALLBACK = function (sound: FMOD_SOUND; data: Pointer; datalen: Cardinal): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
728 FMOD_SOUND_PCMSEEKCALLBACK = function (sound: FMOD_SOUND; subsound: Integer; pcmoffset: Cardinal): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
730 FMOD_FILE_OPENCALLBACK = function (const name: PChar; unicode: Integer; filesize: Cardinal; handle: Pointer; var userdata: Pointer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
731 FMOD_FILE_CLOSECALLBACK = function (handle: Pointer; userdata: Pointer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
732 FMOD_FILE_READCALLBACK = function (handle, buffer: Pointer; sizebytes: Cardinal; var bytesread: Cardinal; userdata: Pointer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
733 FMOD_FILE_SEEKCALLBACK = function (handle: Pointer; pos, type_: Integer; userdata: Pointer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
735 FMOD_MEMORY_ALLOCCALLBACK = function (size: Cardinal): Pointer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
736 FMOD_MEMORY_REALLOCCALLBACK = function (ptr: Pointer; size: Cardinal): Pointer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
737 FMOD_MEMORY_FREECALLBACK = procedure (ptr: Pointer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
740 (*
741 [ENUM]
743 [DESCRIPTION]
744 List of windowing methods used in spectrum analysis to reduce leakage / transient signals intefering with the analysis.
745 This is a problem with analysis of continuous signals that only have a small portion of the signal sample (the fft window size).
746 Windowing the signal with a curve or triangle tapers the sides of the fft window to help alleviate this problem.
748 [REMARKS]
749 Cyclic signals such as a sine wave that repeat their cycle in a multiple of the window size do not need windowing.
750 I.e. If the sine wave repeats every 1024, 512, 256 etc samples and the FMOD fft window is 1024, then the signal would not need windowing.
751 Not windowing is the same as FMOD_DSP_FFT_WINDOW_RECT, which is the default.
752 If the cycle of the signal (ie the sine wave) is not a multiple of the window size, it will cause frequency abnormalities, so a different windowing method is needed.
754 [PLATFORMS]
755 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
757 [SEE_ALSO]
758 FMOD_System_GetSpectrum
759 FMOD_Channel_GetSpectrum
761 *)
762 type
763 FMOD_DSP_FFT_WINDOW =
765 FMOD_DSP_FFT_WINDOW_RECT, (* w[n] = 1.0 *)
766 FMOD_DSP_FFT_WINDOW_TRIANGLE, (* w[n] = TRI(2n/N) *)
767 FMOD_DSP_FFT_WINDOW_HAMMING, (* w[n] = 0.54 - (0.46 * COS(n/N) ) *)
768 FMOD_DSP_FFT_WINDOW_HANNING, (* w[n] = 0.5 * (1.0 - COS(n/N) ) *)
769 FMOD_DSP_FFT_WINDOW_BLACKMAN, (* w[n] = 0.42 - (0.5 * COS(n/N) ) + (0.08 * COS(2.0 * n/N) ) *)
770 FMOD_DSP_FFT_WINDOW_BLACKMANHARRIS, (* w[n] = 0.35875 - (0.48829 * COS(1.0 * n/N)) + (0.14128 * COS(2.0 * n/N)) - (0.01168 * COS(3.0 * n/N)) *)
771 FMOD_DSP_FFT_WINDOW_MAX
772 );
775 (*
776 [ENUM]
778 [DESCRIPTION]
779 List of interpolation types that the FMOD Ex software mixer supports.
781 [REMARKS]
782 The default resampler type is FMOD_DSP_RESAMPLER_LINEAR.
783 Use System::setSoftwareFormat to tell FMOD the resampling quality you require for FMOD_SOFTWARE based sounds.
785 [PLATFORMS]
786 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
788 [SEE_ALSO]
789 System::setSoftwareFormat
790 System::getSoftwareFormat
792 *)
793 type
794 FMOD_DSP_RESAMPLER =
796 FMOD_DSP_RESAMPLER_NOINTERP, (* No interpolation. High frequency aliasing hiss will be audible depending on the sample rate of the sound. *)
797 FMOD_DSP_RESAMPLER_LINEAR, (* Linear interpolation (default method). Fast and good quality, causes very slight lowpass effect on low frequency sounds. *)
798 FMOD_DSP_RESAMPLER_CUBIC, (* Cubic interoplation. Slower than linear interpolation but better quality. *)
799 FMOD_DSP_RESAMPLER_SPLINE, (* 5 point spline interoplation. Slowest resampling method but best quality. *)
800 FMOD_DSP_RESAMPLER_MAX
801 );
805 (*
806 [ENUM]
808 [DESCRIPTION]
809 List of tag types that could be stored within a sound. These include id3 tags, metadata from netstreams and vorbis/asf data.
811 [REMARKS]
813 [PLATFORMS]
814 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
816 [SEE_ALSO]
817 FMOD_Sound_GetTag
819 *)
820 type
821 FMOD_TAGTYPE =
823 FMOD_TAGTYPE_UNKNOWN,
824 FMOD_TAGTYPE_ID3V1,
825 FMOD_TAGTYPE_ID3V2,
826 FMOD_TAGTYPE_VORBISCOMMENT,
827 FMOD_TAGTYPE_SHOUTCAST,
828 FMOD_TAGTYPE_ICECAST,
829 FMOD_TAGTYPE_ASF,
830 FMOD_TAGTYPE_MIDI,
831 FMOD_TAGTYPE_PLAYLIST,
832 FMOD_TAGTYPE_FMOD,
833 FMOD_TAGTYPE_USER,
834 FMOD_TAGTYPE_MAX
835 );
838 (*
839 [ENUM]
841 [DESCRIPTION]
842 List of data types that can be returned by FMOD_Sound_GetTag
844 [REMARKS]
846 [PLATFORMS]
847 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
849 [SEE_ALSO]
850 FMOD_Sound_GetTag
852 *)
853 type
854 FMOD_TAGDATATYPE =
856 FMOD_TAGDATATYPE_BINARY,
857 FMOD_TAGDATATYPE_INT,
858 FMOD_TAGDATATYPE_FLOAT,
859 FMOD_TAGDATATYPE_STRING,
860 FMOD_TAGDATATYPE_STRING_UTF16,
861 FMOD_TAGDATATYPE_STRING_UTF16BE,
862 FMOD_TAGDATATYPE_STRING_UTF8,
863 FMOD_TAGDATATYPE_CDTOC
864 );
867 (*
868 [STRUCTURE]
870 [DESCRIPTION]
871 Structure describing a piece of tag data.
873 [REMARKS]
874 Members marked with [in] mean the variable can be written to. The user can set the value.
875 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
877 [PLATFORMS]
878 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
880 [SEE_ALSO]
881 FMOD_Sound_GetTag
882 FMOD_TAGTYPE
883 FMOD_TAGDATATYPE
885 *)
886 type
887 FMOD_TAG = record
888 tagtype: FMOD_TAGTYPE; (* [out] The type of this tag. *)
889 datatype: FMOD_TAGDATATYPE; (* [out] The type of data that this tag contains *)
890 name: PChar; (* [out] The name of this tag i.e. "TITLE", "ARTIST" etc. *)
891 data: Pointer; (* [out] Pointer to the tag data - its format is determined by the datatype member *)
892 datalen: Cardinal; (* [out] Length of the data contained in this tag *)
893 updated: FMOD_BOOL; (* [out] True if this tag has been updated since last being accessed with FMOD_Sound_GetTag *)
894 end;
897 (*
898 [STRUCTURE]
900 [DESCRIPTION]
901 Structure describing a CD/DVD table of contents
903 [REMARKS]
904 Members marked with [in] mean the variable can be written to. The user can set the value.
905 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
907 [PLATFORMS]
908 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
910 [SEE_ALSO]
911 FMOD_Sound_GetTag
913 *)
914 type
915 FMOD_CDTOC = record
916 numtracks: Integer; (* [out] The number of tracks on the CD *)
917 min: array [0..99] of Integer; (* [out] The start offset of each track in minutes *)
918 sec: array [0..99] of Integer; (* [out] The start offset of each track in seconds *)
919 frame: array [0..99] of Integer; (* [out] The start offset of each track in frames *)
920 end;
923 (*
924 [ENUM]
926 [DESCRIPTION]
927 List of time types that can be returned by FMOD_Sound_GetLength and used with FMOD_Channel_SetPosition or FMOD_Channel_GetPosition.
929 [REMARKS]
930 FMOD_TIMEUNIT_SUBSOUND_MS, FMOD_TIMEUNIT_SUBSOUND_PCM, FMOD_TIMEUNIT_SUBSOUND_PCMBYTES, FMOD_TIMEUNIT_SUBSOUND and FMOD_TIMEUNIT_SUBSOUND_BUFFERED are only supported by Channel::getPosition.
932 [PLATFORMS]
933 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
935 [SEE_ALSO]
936 FMOD_Sound_GetLength
937 FMOD_Channel_SetPosition
938 FMOD_Channel_GetPosition
940 *)
941 const
942 FMOD_TIMEUNIT_MS = $00000001; (* Milliseconds. *)
943 FMOD_TIMEUNIT_PCM = $00000002; (* PCM Samples, related to milliseconds * samplerate / 1000. *)
944 FMOD_TIMEUNIT_PCMBYTES = $00000004; (* Bytes, related to PCM samples * channels * datawidth (ie 16bit = 2 bytes). *)
945 FMOD_TIMEUNIT_RAWBYTES = $00000008; (* Raw file bytes of (compressed) sound data (does not include headers). Only used by FMOD_Sound_GetLength and FMOD_Channel_GetPosition. *)
946 FMOD_TIMEUNIT_MODORDER = $00000100; (* MOD/S3M/XM/IT. Order in a sequenced module format. Use FMOD_Sound_GetFormat to determine the format. *)
947 FMOD_TIMEUNIT_MODROW = $00000200; (* MOD/S3M/XM/IT. Current row in a sequenced module format. FMOD_Sound_GetLength will return the number if rows in the currently playing or seeked to pattern. *)
948 FMOD_TIMEUNIT_MODPATTERN = $00000400; (* MOD/S3M/XM/IT. Current pattern in a sequenced module format. Sound::getLength will return the number of patterns in the song and Channel::getPosition will return the currently playing pattern. *)
949 FMOD_TIMEUNIT_SENTENCE_MS = $00010000; (* Currently playing subsound in a sentence time in milliseconds. *)
950 FMOD_TIMEUNIT_SENTENCE_PCM = $00020000; (* Currently playing subsound in a sentence time in PCM Samples, related to milliseconds * samplerate / 1000. *)
951 FMOD_TIMEUNIT_SENTENCE_PCMBYTES = $00040000; (* Currently playing subsound in a sentence time in bytes, related to PCM samples * channels * datawidth (ie 16bit = 2 bytes). *)
952 FMOD_TIMEUNIT_SENTENCE = $00080000; (* Currently playing subsound in a sentence according to the channel. For display. *)
953 FMOD_TIMEUNIT_SENTENCE_SUBSOUND = $00100000; (* Currently playing subsound in a sentence according to the buffered ahead of time sound. For sentence processing ahead of time. *)
954 FMOD_TIMEUNIT_BUFFERED = $10000000; (* Time value as seen by buffered stream. This is always ahead of audible time, and is only used for processing. *)
957 (*
958 [ENUM]
960 [DESCRIPTION]
961 When creating a multichannel sound, FMOD will pan them to their default speaker locations, for example a 6 channel sound will default to one channel per 5.1 output speaker.
962 Another example is a stereo sound. It will default to left = front left, right = front right.
964 This is for sounds that are not 'default'. For example you might have a sound that is 6 channels but actually made up of 3 stereo pairs, that should all be located in front left, front right only.
966 [REMARKS]
967 For full flexibility of speaker assignments, use Channel::setSpeakerLevels. This functionality is cheaper, uses less memory and easier to use.
969 [PLATFORMS]
970 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3, Wii
972 [SEE_ALSO]
973 FMOD_CREATESOUNDEXINFO
974 FMOD_Channel_SetSpeakerLevels
976 *)
977 type
978 FMOD_SPEAKERMAPTYPE =
980 FMOD_SPEAKERMAPTYPE_DEFAULT, (* This is the default, and just means FMOD decides which speakers it puts the source channels. *)
981 FMOD_SPEAKERMAPTYPE_ALLMONO, (* This means the sound is made up of all mono sounds. All voices will be panned to the front center by default in this case. *)
982 FMOD_SPEAKERMAPTYPE_ALLSTEREO (* This means the sound is made up of all stereo sounds. All voices will be panned to front left and front right alternating every second channel. *)
983 );
986 (*
987 [STRUCTURE]
989 [DESCRIPTION]
990 Use this structure with FMOD_System_CreateSound when more control is needed over loading.
991 The possible reasons to use this with FMOD_System_CreateSound are:
992 - Loading a file from memory.
993 - Loading a file from within another file, giving an offset and length.
994 - To create a user created / non file based sound.
995 - To specify a starting subsound to seek to within a multi-sample sounds (ie FSB/DLS/SF2) when created as a stream.
996 - To specify which subsounds to load for multi-sample sounds (ie FSB/DLS/SF2) so that memory is saved and only a subset is actually loaded/read from disk.
997 - To specify 'piggyback' read and seek callbacks for capture of sound data as fmod reads and decodes it. Useful for ripping decoded PCM data from sounds as they are loaded / played.
998 - To specify a MIDI DLS/SF2 sample set file to load when opening a MIDI file.
999 See below on what members to fill for each of the above types of sound you want to create.
1001 [REMARKS]
1002 This structure is optional! Specify 0 or NULL in FMOD_System_CreateSound if you don't need it!
1004 Members marked with [in] mean the variable can be written to. The user can set the value.
1005 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1007 Loading a file from memory.
1008 ---------------------------
1009 - Create the sound using the FMOD_OPENMEMORY flag.
1010 - Mandatory. Specify 'length' for the size of the memory block in bytes.
1011 - Other flags are optional.
1013 Loading a file from within another larger (possibly wad/pak) file, by giving the loader an offset and length.
1014 -------------------------------------------------------------------------------------------------------------
1015 - Mandatory. Specify 'fileoffset' and 'length'.
1016 - Other flags are optional.
1018 To create a user created / non file based sound.
1019 ------------------------------------------------
1020 - Create the sound using the FMOD_OPENUSER flag.
1021 - Mandatory. Specify 'defaultfrequency, 'numchannels' and 'format'.
1022 - Other flags are optional.
1024 To specify a starting subsound to seek to and flush with, within a multi-sample stream (ie FSB/DLS/SF2).
1025 --------------------------------------------------------------------------------------------------------
1026 - Mandatory. Specify 'initialsubsound'.
1028 To specify which subsounds to load for multi-sample sounds (ie FSB/DLS/SF2) so that memory is saved and only a subset is actually loaded/read from disk.
1029 --------------------------------------------------------------------------------------------------------------------------------------------------------
1030 - Mandatory. Specify 'inclusionlist' and 'inclusionlistnum'.
1032 To specify 'piggyback' read and seek callbacks for capture of sound data as fmod reads and decodes it. Useful for ripping decoded PCM data from sounds as they are loaded / played.
1033 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1034 - Mandatory. Specify 'pcmreadcallback' and 'pcmseekcallback'.
1036 To specify a MIDI DLS/SF2 sample set file to load when opening a MIDI file.
1037 ---------------------------------------------------------------------------
1038 - Mandatory. Specify 'dlsname'.
1040 Setting the 'decodebuffersize' is for cpu intensive codecs that may be causing stuttering, not file intensive codecs (ie those from CD or netstreams) which are normally altered with System::setStreamBufferSize. As an example of cpu intensive codecs, an mp3 file will take more cpu to decode than a PCM wav file.
1041 If you have a stuttering effect, then it is using more cpu than the decode buffer playback rate can keep up with. Increasing the decode buffersize will most likely solve this problem.
1043 [PLATFORMS]
1044 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1046 [SEE_ALSO]
1047 FMOD_System_CreateSound
1049 *)
1050 type
1051 FMOD_CREATESOUNDEXINFO = record
1052 cbsize: Integer; (* [in] Size of this structure. This is used so the structure can be expanded in the future and still work on older versions of FMOD Ex. *)
1053 length: Cardinal; (* [in] Optional. Specify 0 to ignore. Size in bytes of file to load, or sound to create (in this case only if FMOD_OPENUSER is used). Required if loading from memory. If 0 is specified, then it will use the size of the file (unless loading from memory then an error will be returned). *)
1054 fileoffset: Cardinal; (* [in] Optional. Specify 0 to ignore. Offset from start of the file to start loading from. This is useful for loading files from inside big data files. *)
1055 numchannels: Integer; (* [in] Optional. Specify 0 to ignore. Number of channels in a sound specified only if FMOD_OPENUSER is used. *)
1056 defaultfrequency: Integer; (* [in] Optional. Specify 0 to ignore. Default frequency of sound in a sound specified only if FMOD_OPENUSER is used. Other formats use the frequency determined by the file format. *)
1057 format: FMOD_SOUND_FORMAT; (* [in] Optional. Specify 0 or FMOD_SOUND_FORMAT_NONE to ignore. Format of the sound specified only if FMOD_OPENUSER is used. Other formats use the format determined by the file format. *)
1058 decodebuffersize: Integer; (* [in] Optional. Specify 0 to ignore. For streams. This determines the size of the double buffer (in PCM samples) that a stream uses. Use this for user created streams if you want to determine the size of the callback buffer passed to you. Specify 0 to use FMOD's default size which is currently equivalent to 400ms of the sound format created/loaded. *)
1059 initialsubsound: Integer; (* [in] Optional. Specify 0 to ignore. In a multi-sample file format such as .FSB/.DLS/.SF2, specify the initial subsound to seek to, only if FMOD_CREATESTREAM is used. *)
1060 numsubsounds: Integer; (* [in] Optional. Specify 0 to ignore or have no subsounds. In a user created multi-sample sound, specify the number of subsounds within the sound that are accessable with FMOD_SoundGetSubSound. *)
1061 inclusionlist: ^Integer; (* [in] Optional. Specify 0 to ignore. In a multi-sample format such as .FSB/.DLS/.SF2 it may be desirable to specify only a subset of sounds to be loaded out of the whole file. This is an array of subsound indicies to load into memory when created. *)
1062 inclusionlistnum: Integer; (* [in] Optional. Specify 0 to ignore. This is the number of integers contained within the *)
1063 pcmreadcallback: FMOD_SOUND_PCMREADCALLBACK; (* [in] Optional. Specify 0 to ignore. Callback to 'piggyback' on FMOD's read functions and accept or even write PCM data while FMOD is opening the sound. Used for user sounds created with FMOD_OPENUSER or for capturing decoded data as FMOD reads it. *)
1064 pcmseekcallback: FMOD_SOUND_PCMSEEKCALLBACK; (* [in] Optional. Specify 0 to ignore. Callback for when the user calls a seeking function such as FMOD_Channel_SetPosition within a multi-sample sound, and for when it is opened.*)
1065 nonblockcallback: FMOD_SOUND_NONBLOCKCALLBACK; (* [in] Optional. Specify 0 to ignore. Callback for successful completion, or error while loading a sound that used the FMOD_NONBLOCKING flag.*)
1066 dlsname: PChar; (* [in] Optional. Specify 0 to ignore. Filename for a DLS or SF2 sample set when loading a MIDI file. If not specified, on windows it will attempt to open /windows/system32/drivers/gm.dls, otherwise the MIDI will fail to open. *)
1067 encryptionkey: PChar; (* [in] Optional. Specify 0 to ignore. Key for encrypted FSB file. Without this key an encrypted FSB file will not load. *)
1068 maxpolyphony: Integer; (* [in] Optional. Specify 0 to ignore. For sequenced formats with dynamic channel allocation such as .MID and .IT, this specifies the maximum voice count allowed while playing. .IT defaults to 64. .MID defaults to 32. *)
1069 userdata: Pointer; (* [in] Optional. Specify 0 to ignore. This is user data to be attached to the sound during creation. Access via Sound::getUserData. *)
1070 suggestedsoundtype: FMOD_SOUND_TYPE; (* [in] Optional. Specify 0 or FMOD_SOUND_TYPE_UNKNOWN to ignore. Instead of scanning all codec types, use this to speed up loading by making it jump straight to this codec. *)
1071 useropen: FMOD_FILE_OPENCALLBACK; (* [in] Optional. Specify 0 to ignore. Callback for opening this file. *)
1072 userclose: FMOD_FILE_CLOSECALLBACK; (* [in] Optional. Specify 0 to ignore. Callback for closing this file. *)
1073 userread: FMOD_FILE_READCALLBACK; (* [in] Optional. Specify 0 to ignore. Callback for reading from this file. *)
1074 userseek: FMOD_FILE_SEEKCALLBACK; (* [in] Optional. Specify 0 to ignore. Callback for seeking within this file. *)
1075 speakermap: FMOD_SPEAKERMAPTYPE; (* [in] Optional. Specify 0 to ignore. Use this to differ the way fmod maps multichannel sounds to speakers. See FMOD_SPEAKERMAPTYPE for more. *)
1076 initialsoundgroup: Integer; (* [in] Optional. Specify 0 to ignore. Specify a sound group if required, to put sound in as it is created. *)
1077 initialseekposition: Integer; (* [in] Optional. Specify 0 to ignore. For streams. Specify an initial position to seek the stream to. *)
1078 initialseekpostype: FMOD_TIMEUNIT; (* [in] Optional. Specify 0 to ignore. For streams. Specify the time unit for the position set in initialseekposition. *)
1079 ignoresetfilesystem: Integer; (* [in] Optional. Specify 0 to ignore. Set to 1 to use fmod's built in file system. Ignores setFileSystem callbacks and also FMOD_CREATESOUNEXINFO file callbacks. Useful for specific cases where you don't want to use your own file system but want to use fmod's file system (ie net streaming). *)
1080 // myVersion2013: Array [0..27] of Byte;
1081 end;
1082 PFMOD_CREATESOUNDEXINFO = ^FMOD_CREATESOUNDEXINFO;
1085 (*
1086 [STRUCTURE]
1088 [DESCRIPTION]
1089 Structure defining a reverb environment.
1091 For more indepth descriptions of the reverb properties under win32, please see the EAX2 and EAX3
1092 documentation at http://developer.creative.com/ under the 'downloads' section.
1093 If they do not have the EAX3 documentation, then most information can be attained from
1094 the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
1095 EAX2.
1097 [REMARKS]
1098 Note the default reverb properties are the same as the FMOD_PRESET_GENERIC preset.
1099 Note that integer values that typically range from -10,000 to 1000 are represented in
1100 decibels, and are of a logarithmic scale, not linear, wheras float values are always linear.
1101 PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).
1102 Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
1103 the reverb should product a similar effect on either platform.
1104 Win32/Win64 - This is only supported with FMOD_OUTPUTTYPE_DSOUND and EAX compatible sound cards.
1105 Macintosh - Currently unsupported.
1106 Linux - Currently unsupported.
1107 Xbox - Only a subset of parameters are supported.
1108 PlayStation 2 - Only the Environment and Flags paramenters are supported.
1109 GameCube - Only a subset of parameters are supported.
1111 The numerical values listed below are the maximum, minimum and default values for each variable respectively.
1113 Members marked with [in] mean the variable can be written to. The user can set the value.
1114 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1116 [PLATFORMS]
1117 Win32, Win64, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable
1119 [SEE_ALSO]
1120 FMOD_System_SetReverbProperties
1121 FMOD_System_GetReverbProperties
1122 FMOD_REVERB_PRESETS
1123 FMOD_REVERB_FLAGS
1125 *)
1126 type
1127 FMOD_REVERB_PROPERTIES = record (* MIN MAX DEFAULT DESCRIPTION *)
1128 Instance: Integer; (* [in/out] 0 , 2 , 0 , EAX4 only. Environment Instance. 3 seperate reverbs simultaneously are possible. This specifies which one to set. (win32 only) *)
1129 Environment: Cardinal; (* [in/out] 0 , 25 , 0 , sets all listener properties (win32/ps2) *)
1130 EnvSize: Single; (* [in/out] 1.0 , 100.0 , 7.5 , environment size in meters (win32 only) *)
1131 EnvDiffusion: Single; (* [in/out] 0.0 , 1.0 , 1.0 , environment diffusion (win32/xbox) *)
1132 Room: Integer; (* [in/out] -10000, 0 , -1000 , room effect level (at mid frequencies) (win32/xbox) *)
1133 RoomHF: Integer; (* [in/out] -10000, 0 , -100 , relative room effect level at high frequencies (win32/xbox) *)
1134 RoomLF: Integer; (* [in/out] -10000, 0 , 0 , relative room effect level at low frequencies (win32 only) *)
1135 DecayTime: Single; (* [in/out] 0.1 , 20.0 , 1.49 , reverberation decay time at mid frequencies (win32/xbox) *)
1136 DecayHFRatio: Single; (* [in/out] 0.1 , 2.0 , 0.83 , high-frequency to mid-frequency decay time ratio (win32/xbox) *)
1137 DecayLFRatio: Single; (* [in/out] 0.1 , 2.0 , 1.0 , low-frequency to mid-frequency decay time ratio (win32 only) *)
1138 Reflections: Integer; (* [in/out] -10000, 1000 , -2602 , early reflections level relative to room effect (win32/xbox) *)
1139 ReflectionsDelay: Single; (* [in/out] 0.0 , 0.3 , 0.007 , initial reflection delay time (win32/xbox) *)
1140 ReflectionsPan: array [0..2] of Single; (* [in/out] , , [0,0,0], early reflections panning vector (win32 only) *)
1141 Reverb: Integer; (* [in/out] -10000, 2000 , 200 , late reverberation level relative to room effect (win32/xbox) *)
1142 ReverbDelay: Single; (* [in/out] 0.0 , 0.1 , 0.011 , late reverberation delay time relative to initial reflection (win32/xbox) *)
1143 ReverbPan: array [0..2] of Single; (* [in/out] , , [0,0,0], late reverberation panning vector (win32 only) *)
1144 EchoTime: Single; (* [in/out] .075 , 0.25 , 0.25 , echo time (win32 only) *)
1145 EchoDepth: Single; (* [in/out] 0.0 , 1.0 , 0.0 , echo depth (win32 only) *)
1146 ModulationTime: Single; (* [in/out] 0.04 , 4.0 , 0.25 , modulation time (win32 only) *)
1147 ModulationDepth: Single; (* [in/out] 0.0 , 1.0 , 0.0 , modulation depth (win32 only) *)
1148 AirAbsorptionHF: Single; (* [in/out] -100 , 0.0 , -5.0 , change in level per meter at high frequencies (win32 only) *)
1149 HFReference: Single; (* [in/out] 1000.0, 20000 , 5000.0 , reference high frequency (hz) (win32/xbox) *)
1150 LFReference: Single; (* [in/out] 20.0 , 1000.0, 250.0 , reference low frequency (hz) (win32 only) *)
1151 RoomRolloffFactor: Single; (* [in/out] 0.0 , 10.0 , 0.0 , like FMOD_3D_Listener_SetRolloffFactor but for room effect (win32/xbox) *)
1152 Diffusion: Single; (* [in/out] 0.0 , 100.0 , 100.0 , Value that controls the echo density in the late reverberation decay. (xbox only) *)
1153 Density: Single; (* [in/out] 0.0 , 100.0 , 100.0 , Value that controls the modal density in the late reverberation decay (xbox only) *)
1154 Flags: Cardinal; (* [in/out] FMOD_REVERB_FLAGS - modifies the behavior of above properties (win32/ps2) *)
1155 end;
1158 (*
1159 [DEFINE]
1161 [NAME]
1162 FMOD_REVERB_FLAGS
1164 [DESCRIPTION]
1165 Values for the Flags member of the FMOD_REVERB_PROPERTIES structure.
1167 [PLATFORMS]
1168 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1170 [SEE_ALSO]
1171 FMOD_REVERB_PROPERTIES
1173 *)
1174 const
1175 FMOD_REVERB_FLAGS_DECAYTIMESCALE = $00000001; (* 'EnvSize' affects reverberation decay time *)
1176 FMOD_REVERB_FLAGS_REFLECTIONSSCALE = $00000002; (* 'EnvSize' affects reflection level *)
1177 FMOD_REVERB_FLAGS_REFLECTIONSDELAYSCALE = $00000004; (* 'EnvSize' affects initial reflection delay time *)
1178 FMOD_REVERB_FLAGS_REVERBSCALE = $00000008; (* 'EnvSize' affects reflections level *)
1179 FMOD_REVERB_FLAGS_REVERBDELAYSCALE = $00000010; (* 'EnvSize' affects late reverberation delay time *)
1180 FMOD_REVERB_FLAGS_DECAYHFLIMIT = $00000020; (* AirAbsorptionHF affects DecayHFRatio *)
1181 FMOD_REVERB_FLAGS_ECHOTIMESCALE = $00000040; (* 'EnvSize' affects echo time *)
1182 FMOD_REVERB_FLAGS_MODULATIONTIMESCALE = $00000080; (* 'EnvSize' affects modulation time *)
1183 FMOD_REVERB_FLAGS_DEFAULT = (FMOD_REVERB_FLAGS_DECAYTIMESCALE or
1184 FMOD_REVERB_FLAGS_REFLECTIONSSCALE or
1185 FMOD_REVERB_FLAGS_REFLECTIONSDELAYSCALE or
1186 FMOD_REVERB_FLAGS_REVERBSCALE or
1187 FMOD_REVERB_FLAGS_REVERBDELAYSCALE or
1188 FMOD_REVERB_FLAGS_DECAYHFLIMIT);
1189 (* [DEFINE_END] *)
1192 (*
1193 [STRUCTURE]
1195 [DESCRIPTION]
1196 Structure defining the properties for a reverb source, related to a FMOD channel.
1198 For more indepth descriptions of the reverb properties under win32, please see the EAX3
1199 documentation at http://developer.creative.com/ under the 'downloads' section.
1200 If they do not have the EAX3 documentation, then most information can be attained from
1201 the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
1202 EAX2.
1204 Note the default reverb properties are the same as the FMOD_PRESET_GENERIC preset.
1205 Note that integer values that typically range from -10,000 to 1000 are represented in
1206 decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
1207 PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).
1208 Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
1209 the reverb should product a similar effect on either platform.
1210 Linux and FMODCE do not support the reverb api.
1212 The numerical values listed below are the maximum, minimum and default values for each variable respectively.
1214 [REMARKS]
1216 [PLATFORMS]
1217 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1219 [SEE_ALSO]
1220 FMOD_Channel_SetReverbProperties
1221 FMOD_Channel_GetReverbProperties
1222 FMOD_REVERB_CHANNELFLAGS
1224 *)
1225 type
1226 FMOD_REVERB_CHANNELPROPERTIES = record (* MIN MAX DEFAULT *)
1227 Direct: Integer; (* -10000, 1000, 0, direct path level (at low and mid frequencies) (win32/xbox) *)
1228 DirectHF: Integer; (* -10000, 0, 0, relative direct path level at high frequencies (win32/xbox) *)
1229 Room: Integer; (* -10000, 1000, 0, room effect level (at low and mid frequencies) (win32/xbox) *)
1230 RoomHF: Integer; (* -10000, 0, 0, relative room effect level at high frequencies (win32/xbox) *)
1231 Obstruction: Integer; (* -10000, 0, 0, main obstruction control (attenuation at high frequencies) (win32/xbox) *)
1232 ObstructionLFRatio: Single; (* 0.0, 1.0, 0.0, obstruction low-frequency level re. main control (win32/xbox) *)
1233 Occlusion: Integer; (* -10000, 0, 0, main occlusion control (attenuation at high frequencies) (win32/xbox) *)
1234 OcclusionLFRatio: Single; (* 0.0, 1.0, 0.25, occlusion low-frequency level re. main control (win32/xbox) *)
1235 OcclusionRoomRatio: Single; (* 0.0, 10.0, 1.5, relative occlusion control for room effect (win32) *)
1236 OcclusionDirectRatio: Single; (* 0.0, 10.0, 1.0, relative occlusion control for direct path (win32) *)
1237 Exclusion: Integer; (* -10000, 0, 0, main exlusion control (attenuation at high frequencies) (win32) *)
1238 ExclusionLFRatio: Single; (* 0.0, 1.0, 1.0, exclusion low-frequency level re. main control (win32) *)
1239 OutsideVolumeHF: Integer; (* -10000, 0, 0, outside sound cone level at high frequencies (win32) *)
1240 DopplerFactor: Single; (* 0.0, 10.0, 0.0, like DS3D flDopplerFactor but per source (win32) *)
1241 RolloffFactor: Single; (* 0.0, 10.0, 0.0, like DS3D flRolloffFactor but per source (win32) *)
1242 RoomRolloffFactor: Single; (* 0.0, 10.0, 0.0, like DS3D flRolloffFactor but for room effect (win32/xbox) *)
1243 AirAbsorptionFactor: Single; (* 0.0, 10.0, 1.0, multiplies AirAbsorptionHF member of FMOD_REVERB_PROPERTIES (win32) *)
1244 Flags: Integer; (* FMOD_REVERB_CHANNELFLAGS - modifies the behavior of properties (win32) *)
1245 end;
1248 (*
1249 [DEFINE]
1251 [NAME]
1252 FMOD_REVERB_CHANNELFLAGS
1254 [DESCRIPTION]
1255 Values for the Flags member of the FMOD_REVERB_CHANNELPROPERTIES structure.
1257 [REMARKS]
1258 For EAX4 support with multiple reverb environments, set FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT0,
1259 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT1 or/and FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT2 in the flags member
1260 of FMOD_REVERB_CHANNELPROPERTIES to specify which environment instance(s) to target.
1261 Only up to 2 environments to target can be specified at once. Specifying three will result in an error.
1262 If the sound card does not support EAX4, the environment flag is ignored.
1264 [PLATFORMS]
1265 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1267 [SEE_ALSO]
1268 FMOD_REVERB_CHANNELPROPERTIES
1270 *)
1271 const
1272 FMOD_REVERB_CHANNELFLAGS_DIRECTHFAUTO = $00000001; (* Automatic setting of 'Direct' due to distance from listener *)
1273 FMOD_REVERB_CHANNELFLAGS_ROOMAUTO = $00000002; (* Automatic setting of 'Room' due to distance from listener *)
1274 FMOD_REVERB_CHANNELFLAGS_ROOMHFAUTO = $00000004; (* Automatic setting of 'RoomHF' due to distance from listener *)
1275 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT0 = $00000008; (* EAX4 only. Specify channel to target reverb instance 0. *)
1276 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT1 = $00000010; (* EAX4 only. Specify channel to target reverb instance 1. *)
1277 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT2 = $00000020; (* EAX4 only. Specify channel to target reverb instance 2. *)
1278 FMOD_REVERB_CHANNELFLAGS_DEFAULT = (FMOD_REVERB_CHANNELFLAGS_DIRECTHFAUTO or
1279 FMOD_REVERB_CHANNELFLAGS_ROOMAUTO or
1280 FMOD_REVERB_CHANNELFLAGS_ROOMHFAUTO or
1281 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT0);
1282 (* [DEFINE_END] *)
1286 (*
1287 [STRUCTURE]
1289 [DESCRIPTION]
1290 Settings for advanced features like configuring memory and cpu usage for the FMOD_CREATECOMPRESSEDSAMPLE feature.
1292 [REMARKS]
1293 maxMPEGcodecs / maxADPCMcodecs / maxXMAcodecs will determine the maximum cpu usage of playing realtime samples. Use this to lower potential excess cpu usage and also control memory usage.<br>
1295 Memory will be allocated for codecs 'up front' (during System::init) if these values are specified as non zero. If any are zero, it allocates memory for the codec whenever a file of the type in question is loaded. So if maxMPEGcodecs is 0 for example, it will allocate memory for the mpeg codecs the first time an mp3 is loaded or an mp3 based .FSB file is loaded.
1297 Due to inefficient encoding techniques on certain .wav based ADPCM files, FMOD can can need an extra 29720 bytes per codec. This means for lowest memory consumption. Use FSB as it uses an optimal/small ADPCM block size.
1299 [PLATFORMS]
1300 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1302 [SEE_ALSO]
1303 FMOD_System_SetAdvancedSettings
1304 FMOD_System_GetAdvancedSettings
1305 FMOD_System_Init
1306 FMOD_MODE
1308 *)
1309 type
1310 FMOD_ADVANCEDSETTINGS = record
1311 cbsize: Integer; (* Size of structure. Use sizeof(FMOD_ADVANCEDSETTINGS) *)
1312 maxMPEGcodecs: Integer; (* For use with FMOD_CREATECOMPRESSEDSAMPLE only. Mpeg codecs consume 29.076 bytes per instance and this number will determine how many mpeg channels can be played simultaneously. Default = 16. *)
1313 maxADPCMcodecs: Integer; (* For use with FMOD_CREATECOMPRESSEDSAMPLE only. ADPCM codecs consume ?? bytes per instance and this number will determine how many ADPCM channels can be played simultaneously. Default = 32. *)
1314 maxXMAcodecs: Integer; (* For use with FMOD_CREATECOMPRESSEDSAMPLE only. XMA codecs consume ?? bytes per instance and this number will determine how many XMA channels can be played simultaneously. Default = 32. *)
1315 ASIONumChannels: Integer; (* [in/out] *)
1316 ASIOChannelList: Pointer; (* [in/out] *)
1317 max3DReverbDSPs: Integer; (* [in/out] The max number of 3d reverb DSP's in the system. *)
1318 HRTFMinAngle: Single; (* [in/out] For use with FMOD_INIT_SOFTWARE_HRTF. The angle (0-360) of a 3D sound from the listener's forward vector at which the HRTF function begins to have an effect. Default = 180.0. *)
1319 HRTFMaxAngle: Single; (* [in/out] For use with FMOD_INIT_SOFTWARE_HRTF. The angle (0-360) of a 3D sound from the listener's forward vector at which the HRTF function begins to have maximum effect. Default = 360.0. *)
1320 HRTFFreq: Single; (* [in/out] For use with FMOD_INIT_SOFTWARE_HRTF. The cutoff frequency of the HRTF's lowpass filter function when at maximum effect. (i.e. at HRTFMaxAngle). Default = 4000.0. *)
1321 end;
1324 (*
1325 [ENUM]
1327 [DESCRIPTION]
1328 Special channel index values for FMOD functions.
1330 [REMARKS]
1331 To get 'all' of the channels, use System::getChannelGroup.
1333 [PLATFORMS]
1334 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1336 [SEE_ALSO]
1337 System::playSound
1338 System::playDSP
1339 System::getChannel
1341 *)
1342 const
1343 FMOD_CHANNEL_FREE = -1; (* Value to play on any free channel. *)
1344 FMOD_CHANNEL_REUSE = -2; (* For a channel index, re-use the channel handle that was passed in. *)
1347 (* =============================================================================================== *)
1348 (* FMOD Ex - codec development header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004. *)
1349 (* *)
1350 (* Use this header if you are wanting to develop your own file format plugin to use with *)
1351 (* FMOD's codec system. With this header you can make your own fileformat plugin that FMOD *)
1352 (* can register and use. See the documentation and examples on how to make a working plugin. *)
1353 (* *)
1354 (* =============================================================================================== *)
1356 type
1357 FMOD_CODEC_STATE = ^tagFMOD_CODEC_STATE;
1360 (*
1361 Codec callbacks
1362 *)
1363 (* type- Cannot use the type keyword here because the declaration of FMOD_CODEC_STATE requires tagFMOD_CODEC_STATE in the same type block *)
1364 FMOD_CODEC_OPENCALLBACK = function (codec: FMOD_CODEC_STATE; usermode: Cardinal; userfrequency: Integer; userformat: FMOD_SOUND_FORMAT): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} {$ENDIF}
1365 FMOD_CODEC_CLOSECALLBACK = function (codec: FMOD_CODEC_STATE): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1366 FMOD_CODEC_READCALLBACK = function (codec: FMOD_CODEC_STATE; buffer: Pointer; sizebytes: Cardinal; var bytesread: Cardinal): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1367 FMOD_CODEC_GETLENGTHCALLBACK = function (codec: FMOD_CODEC_STATE; length: Cardinal; lengthtype: Integer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1368 FMOD_CODEC_SETPOSITIONCALLBACK = function (codec: FMOD_CODEC_STATE; subsound: Integer; pcm: Cardinal): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1369 FMOD_CODEC_GETPOSITIONCALLBACK = function (codec: FMOD_CODEC_STATE; var subsound: Integer; var position: Cardinal; postype: Integer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1370 FMOD_CODEC_SOUNDCREATECALLBACK = function (codec: FMOD_CODEC_STATE; subsound: Integer; sound: FMOD_SOUND): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1371 FMOD_CODEC_METADATACALLBACK = function (codec: FMOD_CODEC_STATE; tagtype: FMOD_TAGTYPE; name: PChar; data: Pointer; datalen: Cardinal; datatype: FMOD_TAGDATATYPE; unique: Integer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1374 (*
1375 [STRUCTURE]
1377 [DESCRIPTION]
1378 When creating a codec, declare one of these and provide the relevant callbacks and name for FMOD to use when it opens and reads a file.
1380 [REMARKS]
1381 Members marked with [in] mean the variable can be written to. The user can set the value.
1382 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1384 [PLATFORMS]
1385 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1387 [SEE_ALSO]
1389 *)
1390 (* type- Cannot use the type keyword here because the declaration of FMOD_CODEC_STATE requires tagFMOD_CODEC_STATE in the same type block *)
1391 FMOD_CODEC_DESCRIPTION = record
1392 name: PChar; (* [in] Name of the codec. *)
1393 version: Cardinal; (* [in] Plugin writer's version number. *)
1394 timeunits: Integer; (* [in] When setposition codec is called, only these time formats will be passed to the codec. Use bitwise OR to accumulate different types. *)
1395 open: FMOD_CODEC_OPENCALLBACK; (* [in] Open callback for the codec for when FMOD tries to open a sound using this codec. *)
1396 close: FMOD_CODEC_CLOSECALLBACK; (* [in] Close callback for the codec for when FMOD tries to close a sound using this codec. *)
1397 read: FMOD_CODEC_READCALLBACK; (* [in] Read callback for the codec for when FMOD tries to read some data from the file to the destination format (specified in the open callback). *)
1398 getlength: FMOD_CODEC_GETLENGTHCALLBACK; (* [in] Callback to return the length of the song in whatever format required when Sound::getLength is called. *)
1399 setposition: FMOD_CODEC_SETPOSITIONCALLBACK; (* [in] Seek callback for the codec for when FMOD tries to seek within the file with Sound::setTime or Sound::setPosition. *)
1400 getposition: FMOD_CODEC_GETPOSITIONCALLBACK; (* [in] Tell callback for the codec for when FMOD tries to get the current position within the with Sound::getTime or Sound::getPosition. *)
1401 soundcreate: FMOD_CODEC_SOUNDCREATECALLBACK; (* [in] Sound creation callback for the codec when FMOD finishes creating the sound. (So the codec can set more parameters for the related created sound, ie loop points/mode or 3D attributes etc). *)
1402 end;
1405 (*
1406 [STRUCTURE]
1408 [DESCRIPTION]
1409 Set these values marked 'in' to tell fmod what sort of sound to create.
1410 The format, channels and frequency tell FMOD what sort of hardware buffer to create when you initialize your code. So if you wrote an MP3 codec that decoded to stereo 16bit integer PCM, you would specify FMOD_SOUND_FORMAT_PCM16, and channels would be equal to 2.
1411 Members marked as 'out' are set by fmod. Do not modify these. Simply specify 0 for these values when declaring the structure, FMOD will fill in the values for you after creation with the correct function pointers.
1413 [REMARKS]
1414 Members marked with [in] mean the variable can be written to. The user can set the value.
1415 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1417 An FMOD file might be from disk, memory or network, however the file may be opened by the user.
1419 'numsubsounds' should be 0 if the file is a normal single sound stream or sound. Examples of this would be .WAV, .WMA, .MP3, .AIFF.
1420 'numsubsounds' should be 1+ if the file is a container format, and does not contain wav data itself. Examples of these types would be CDDA (multiple CD tracks), FSB (contains multiple sounds), MIDI/MOD/S3M/XM/IT (contain instruments).
1421 The arrays of format, channel, frequency, length and blockalign should point to arrays of information based on how many subsounds are in the format. If the number of subsounds is 0 then it should point to 1 of each attribute, the same as if the number of subsounds was 1. If subsounds was 100 for example, each pointer should point to an array of 100 of each attribute.
1422 When a sound has 1 or more subsounds, you must play the individual sounds specified by first obtaining the subsound with FMOD_Sound_GetSubSound.
1424 [PLATFORMS]
1425 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1427 [SEE_ALSO]
1428 FMOD_SOUND_FORMAT
1429 FMOD_FILE_READCALLBACK
1430 FMOD_FILE_SEEKCALLBACK
1431 FMOD_CODEC_METADATACALLBACK
1432 FMOD_Sound_GetSubSound
1433 FMOD_Sound_GetNumSubSounds
1435 *)
1436 (* type- Cannot use the type keyword here because the declaration of FMOD_CODEC_STATE requires tagFMOD_CODEC_STATE in the same type block *)
1437 FMOD_CODEC_WAVEFORMAT = record
1438 name: array [0..255] of Char; (* [in] Name of sound. *)
1439 format: FMOD_SOUND_FORMAT; (* [in] format for codec output, ie FMOD_SOUND_FORMAT_PCM8, FMOD_SOUND_FORMAT_PCM16.*)
1440 channels: Integer; (* [in] number of channels used by codec, ie mono = 1, stereo = 2. *)
1441 frequency: Integer; (* [in] default frequency in hz of the codec, ie 44100. *)
1442 lengthpcm: Cardinal; (* [in] length in decompressed, PCM samples of the file, ie length in seconds * frequency. *)
1443 blockalign: Integer; (* [in] blockalign in decompressed, PCM samples of the optimal decode chunk size for this format. The codec read callback will be called in multiples of this value. *)
1444 loopstart: Integer; (* [in] loopstart in decompressed, PCM samples of file. *)
1445 loopend: Integer; (* [in] loopend in decompressed, PCM samples of file. *)
1446 mode: Cardinal; (* [in] mode to determine whether the sound should by default load as looping, non looping, 2d or 3d. *)
1447 channelmask: Cardinal; (* [in] Microsoft speaker channel mask, as defined for WAVEFORMATEXTENSIBLE and is found in ksmedia.h. Leave at 0 to play in natural speaker order. *)
1448 end;
1449 PFMOD_CODEC_WAVEFORMAT = ^FMOD_CODEC_WAVEFORMAT;
1451 (*
1452 [STRUCTURE]
1454 [DESCRIPTION]
1455 Codec plugin structure that is passed into each callback.
1457 Set these numsubsounds and waveformat members when called in FMOD_CODEC_OPENCALLBACK to tell fmod what sort of sound to create.
1459 The format, channels and frequency tell FMOD what sort of hardware buffer to create when you initialize your code. So if you wrote an MP3 codec that decoded to stereo 16bit integer PCM, you would specify FMOD_SOUND_FORMAT_PCM16, and channels would be equal to 2.
1461 [REMARKS]
1462 Members marked with [in] mean the variable can be written to. The user can set the value.
1463 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1466 An FMOD file might be from disk, memory or network, however the file may be opened by the user.
1468 'numsubsounds' should be 0 if the file is a normal single sound stream or sound. Examples of this would be .WAV, .WMA, .MP3, .AIFF.
1469 'numsubsounds' should be 1+ if the file is a container format, and does not contain wav data itself. Examples of these types would be CDDA (multiple CD tracks), FSB (contains multiple sounds), MIDI/MOD/S3M/XM/IT (contain instruments).
1470 The arrays of format, channel, frequency, length and blockalign should point to arrays of information based on how many subsounds are in the format. If the number of subsounds is 0 then it should point to 1 of each attribute, the same as if the number of subsounds was 1. If subsounds was 100 for example, each pointer should point to an array of 100 of each attribute.
1471 When a sound has 1 or more subsounds, you must play the individual sounds specified by first obtaining the subsound with FMOD_Sound_GetSubSound.
1473 [PLATFORMS]
1474 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1476 [SEE_ALSO]
1477 FMOD_SOUND_FORMAT
1478 FMOD_FILE_READCALLBACK
1479 FMOD_FILE_SEEKCALLBACK
1480 FMOD_CODEC_METADATACALLBACK
1481 FMOD_Sound_GetSubSound
1482 FMOD_Sound_GetNumSubSounds
1484 *)
1485 (* type- Cannot use the type keyword here because the declaration of FMOD_CODEC_STATE requires tagFMOD_CODEC_STATE in the same type block *)
1486 tagFMOD_CODEC_STATE = record
1487 numsubsounds: Integer; (* [in] Number of 'subsounds' in this sound. Anything other than 0 makes it a 'container' format (ie CDDA/FSB/MIDI/MOD/etc which contain 1 or more subsounds). For most normal, single sound codec such as WAV/AIFF/MP3, this should be 0 as they are not a container for subsounds, they are the sound itself. *)
1488 waveformat: PFMOD_CODEC_WAVEFORMAT; (* [in] Pointer to an array of format structures containing information about each sample. The number of entries here must equal the number of subsounds defined in the subsound parameter. If numsubsounds = 0 then there should be 1 instance of this structure. *)
1489 plugindata: Pointer; (* [in/out] User created data the codec plugin writer wants to attach to this object. *)
1491 filehandle: Pointer; (* [out] - Do not modify. This will return an internal FMOD file handle to use with the callbacks provided. *)
1492 filesize: Cardinal; (* [out] - Do not modify. This will return an internal FMOD file handle to use with the callbacks provided. *)
1493 fileread: FMOD_FILE_READCALLBACK; (* [out] - Do not modify. This will return a callable FMOD file function to use from codec. *)
1494 fileseek: FMOD_FILE_SEEKCALLBACK; (* [out] - Do not modify. This will return a callable FMOD file function to use from codec. *)
1495 metadata: FMOD_CODEC_METADATACALLBACK; (* [out] - Do not modify. This will return a callable FMOD metadata function to use from codec. *)
1496 end;
1499 (* ========================================================================================== *)
1500 (* FMOD Ex - DSP header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2005. *)
1501 (* *)
1502 (* Use this header if you are interested in delving deeper into the FMOD software mixing / *)
1503 (* DSP engine. In this header you can find parameter structures for FMOD system reigstered *)
1504 (* DSP effects and generators. *)
1505 (* Also use this header if you are wanting to develop your own DSP plugin to use with FMOD's *)
1506 (* dsp system. With this header you can make your own DSP plugin that FMOD can *)
1507 (* register and use. See the documentation and examples on how to make a working plugin. *)
1508 (* *)
1509 (* ========================================================================================== *)
1511 (*
1512 [STRUCTURE]
1514 [DESCRIPTION]
1515 DSP plugin structure that is passed into each callback.
1517 [REMARKS]
1518 Members marked with [in] mean the variable can be written to. The user can set the value.
1519 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1521 [PLATFORMS]
1522 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable
1524 [SEE_ALSO]
1525 FMOD_DSP_DESCRIPTION
1527 *)
1528 tagFMOD_DSP_STATE = record
1529 instance: FMOD_DSP; (* [out] Handle to the DSP hand the user created. Not to be modified. C++ users cast to FMOD::DSP to use. *)
1530 plugindata: Pointer; (* [in] Plugin writer created data the output author wants to attach to this object. *)
1531 end;
1533 type
1534 FMOD_DSP_STATE = ^tagFMOD_DSP_STATE;
1536 (*
1537 DSP callbacks
1538 *)
1539 (* type- Cannot use the type keyword here because the declaration of FMOD_CODEC_STATE requires tagFMOD_CODEC_STATE in the same type block *)
1540 FMOD_DSP_CREATECALLBACK = function (dsp: FMOD_DSP_STATE): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1541 FMOD_DSP_RELEASECALLBACK = function (dsp: FMOD_DSP_STATE): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1542 FMOD_DSP_RESETCALLBACK = function (dsp: FMOD_DSP_STATE): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1543 FMOD_DSP_READCALLBACK = function (dsp: FMOD_DSP_STATE; var inbuffer: Single; var outbuffer: Single; length: Cardinal; inchannels: Integer; outchannels: Integer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1544 FMOD_DSP_SETPOSITIONCALLBACK = function (dsp: FMOD_DSP_STATE; position: Cardinal): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1545 FMOD_DSP_SETPARAMCALLBACK = function (dsp: FMOD_DSP_STATE; index: Integer; value: Single): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1546 FMOD_DSP_GETPARAMCALLBACK = function (dsp: FMOD_DSP_STATE; index: Integer; var value: Single; valuestr: PString): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1547 FMOD_DSP_DIALOGCALLBACK = function (dsp: FMOD_DSP_STATE; hwnd: Pointer; show: Integer): FMOD_RESULT; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF}
1549 (*
1550 [ENUM]
1552 [DESCRIPTION]
1553 These definitions can be used for creating FMOD defined special effects or DSP units.
1555 [REMARKS]
1556 To get them to be active, first create the unit, then add it somewhere into the DSP network, either at the front of the network near the soundcard unit to affect the global output (by using FMOD_System_GetDSPHead, or on a single channel (using FMOD_Channel_GetDSPHead).
1558 [PLATFORMS]
1559 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1561 [SEE_ALSO]
1562 FMOD_System_CreateDSPByType
1564 *)
1565 type
1566 FMOD_DSP_TYPE =
1568 FMOD_DSP_TYPE_UNKNOWN, (* This unit was created via a non FMOD plugin so has an unknown purpose. *)
1569 FMOD_DSP_TYPE_MIXER, (* This unit does nothing but take inputs and mix them together then feed the result to the soundcard unit *)
1570 FMOD_DSP_TYPE_OSCILLATOR, (* This unit generates sine/square/saw/triangle or noise tones. *)
1571 FMOD_DSP_TYPE_LOWPASS, (* This unit filters sound using a high quality, resonant lowpass filter algorithm but consumes more CPU time. *)
1572 FMOD_DSP_TYPE_ITLOWPASS, (* This unit filters sound using a resonant lowpass filter algorithm that is used in Impulse Tracker. *)
1573 FMOD_DSP_TYPE_HIGHPASS, (* This unit filters sound using a resonant highpass filter algorithm. *)
1574 FMOD_DSP_TYPE_ECHO, (* This unit produces an echo on the sound and fades out at the desired rate. *)
1575 FMOD_DSP_TYPE_FLANGE, (* This unit produces a flange effect on the sound. *)
1576 FMOD_DSP_TYPE_DISTORTION, (* This unit distorts the sound. *)
1577 FMOD_DSP_TYPE_NORMALIZE, (* This unit normalizes or amplifies the sound to a certain level. *)
1578 FMOD_DSP_TYPE_PARAMEQ, (* This unit attenuates or amplifies a selected frequency range. *)
1579 FMOD_DSP_TYPE_PITCHSHIFT, (* This unit bends the pitch of a sound without changing the speed of playback. *)
1580 FMOD_DSP_TYPE_CHORUS, (* This unit produces a chorus effect on the sound. *)
1581 FMOD_DSP_TYPE_REVERB, (* This unit produces a reverb effect on the sound. *)
1582 FMOD_DSP_TYPE_VSTPLUGIN, (* This unit allows the use of Steinberg VST plugins *)
1583 FMOD_DSP_TYPE_WINAMPPLUGIN, (* This unit allows the use of Nullsoft Winamp plugins *)
1584 FMOD_DSP_TYPE_ITECHO, (* This unit produces an echo on the sound and fades out at the desired rate as is used in Impulse Tracker. *)
1585 FMOD_DSP_TYPE_COMPRESSOR, (* This unit implements dynamic compression (linked multichannel, wideband) *)
1586 FMOD_DSP_TYPE_SFXREVERB, (* This unit implements SFX reverb *)
1587 FMOD_DSP_TYPE_LOWPASS_SIMPLE (* This unit filters sound using a simple lowpass with no resonance, but has flexible cutoff and is fast. *)
1588 );
1591 (*
1592 [STRUCTURE]
1594 [DESCRIPTION]
1596 [REMARKS]
1597 Members marked with [in] mean the variable can be written to. The user can set the value.
1598 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1600 The step parameter tells the gui or application that the parameter has a certain granularity.
1601 For example in the example of cutoff frequency with a range from 100.0 to 22050.0 you might only want the selection to be in 10hz increments. For this you would simply use 10.0 as the step value.
1602 For a boolean, you can use min = 0.0, max = 1.0, step = 1.0. This way the only possible values are 0.0 and 1.0.
1603 Some applications may detect min = 0.0, max = 1.0, step = 1.0 and replace a graphical slider bar with a checkbox instead.
1604 A step value of 1.0 would simulate integer values only.
1605 A step value of 0.0 would mean the full floating point range is accessable.
1607 [PLATFORMS]
1608 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1610 [SEE_ALSO]
1611 FMOD_System_CreateDSP
1612 FMOD_DSP_SetParameter
1614 *)
1615 type
1616 FMOD_DSP_PARAMETERDESC = record
1617 min: Single; (* [in] Minimum value of the parameter (ie 100.0). *)
1618 max: Single; (* [in] Maximum value of the parameter (ie 22050.0). *)
1619 defaultval: Single; (* [in] Default value of parameter. *)
1620 name: array [0..15] of Char; (* [in] Name of the parameter to be displayed (ie "Cutoff frequency"). *)
1621 plabel: array [0..15] of Char; (* [in] Short string to be put next to value to denote the unit type (ie "hz"). *)
1622 description: PChar; (* [in] Description of the parameter to be displayed as a help item / tooltip for this parameter. *)
1623 end;
1624 PFMOD_DSP_PARAMETERDESC = ^FMOD_DSP_PARAMETERDESC;
1627 (*
1628 [STRUCTURE]
1630 [DESCRIPTION]
1631 Strcture to define the parameters for a DSP unit.
1633 [REMARKS]
1634 Members marked with [in] mean the variable can be written to. The user can set the value.
1635 Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.
1637 There are 2 different ways to change a parameter in this architecture.
1638 One is to use FMOD_DSP_SetParameter / FMOD_DSP_GetParameter. This is platform independant and is dynamic, so new unknown plugins can have their parameters enumerated and used.
1639 The other is to use FMOD_DSP_ShowConfigDialog. This is platform specific and requires a GUI, and will display a dialog box to configure the plugin.
1641 [PLATFORMS]
1642 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1644 [SEE_ALSO]
1645 FMOD_System_CreateDSP
1646 FMOD_System_GetDSP
1648 *)
1649 type
1650 FMOD_DSP_DESCRIPTION = record
1651 name: array [0..31] of Char; (* [in] Name of the unit to be displayed in the network. *)
1652 version: Cardinal; (* [in] Plugin writer's version number. *)
1653 channels: Integer; (* [in] Number of channels. Use 0 to process whatever number of channels is currently in the network. >0 would be mostly used if the unit is a fixed format generator and not a filter. *)
1654 create: FMOD_DSP_CREATECALLBACK; (* [in] Create callback. This is called when DSP unit is created. Can be null. *)
1655 release: FMOD_DSP_RELEASECALLBACK; (* [in] Release callback. This is called just before the unit is freed so the user can do any cleanup needed for the unit. Can be null. *)
1656 reset: FMOD_DSP_RESETCALLBACK; (* [in] Reset callback. This is called by the user to reset any history buffers that may need resetting for a filter, when it is to be used or re-used for the first time to its initial clean state. Use to avoid clicks or artifacts. *)
1657 read: FMOD_DSP_READCALLBACK; (* [in] Read callback. Processing is done here. Can be null. *)
1658 setposition: FMOD_DSP_SETPOSITIONCALLBACK; (* [in] Set position callback. This is called if the unit wants to update its position info but not process data, or reset a cursor position internally if it is reading data from a certain source. Can be null. *)
1659 numparameters: Integer; (* [in] Number of parameters used in this filter. The user finds this with FMOD_DSP_GetNumParameters *)
1660 paramdesc: PFMOD_DSP_PARAMETERDESC; (* [in] Variable number of parameter structures. *)
1661 setparameter: FMOD_DSP_SETPARAMCALLBACK; (* [in] This is called when the user calls FMOD_DSP_SetParameter. Can be null. *)
1662 getparameter: FMOD_DSP_GETPARAMCALLBACK; (* [in] This is called when the user calls FMOD_DSP_GetParameter. Can be null. *)
1663 config: FMOD_DSP_DIALOGCALLBACK; (* [in] This is called when the user calls FMOD_DSP_ShowConfigDialog. Can be used to display a dialog to configure the filter. Can be null. *)
1664 configwidth: Integer; (* [in] Width of config dialog graphic if there is one. 0 otherwise. *)
1665 configheight: Integer; (* [in] Height of config dialog graphic if there is one. 0 otherwise. *)
1666 end;
1669 (*
1670 ==============================================================================================================
1672 FMOD built in effect parameters.
1673 Use FMOD_DSP_SetParameter with these enums for the 'index' parameter.
1675 ==============================================================================================================
1676 *)
1678 (*
1679 [ENUM]
1681 [DESCRIPTION]
1682 Parameter types for the FMOD_DSP_TYPE_OSCILLATOR filter.
1684 [REMARKS]
1686 [PLATFORMS]
1687 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1689 [SEE_ALSO]
1690 FMOD_DSP_SetParameter
1691 FMOD_DSP_GetParameter
1692 FMOD_DSP_TYPE
1694 *)
1695 type
1696 FMOD_DSP_OSCILLATOR =
1698 FMOD_DSP_OSCILLATOR_TYPE, (* Waveform type. 0 = sine. 1 = square. 2 = sawup. 3 = sawdown. 4 = triangle. 5 = noise. *)
1699 FMOD_DSP_OSCILLATOR_RATE (* Frequency of the sinewave in hz. 1.0 to 22000.0. Default = 220.0. *)
1700 );
1703 (*
1704 [ENUM]
1706 [DESCRIPTION]
1707 Parameter types for the FMOD_DSP_TYPE_LOWPASS filter.
1709 [REMARKS]
1711 [PLATFORMS]
1712 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1714 [SEE_ALSO]
1715 FMOD_DSP_SetParameter
1716 FMOD_DSP_GetParameter
1717 FMOD_DSP_TYPE
1719 *)
1720 type
1721 FMOD_DSP_LOWPASS =
1723 FMOD_DSP_LOWPASS_CUTOFF, (* Lowpass cutoff frequency in hz. 1.0 to 22000.0. Default = 5000.0. *)
1724 FMOD_DSP_LOWPASS_RESONANCE (* Lowpass resonance Q value. 1.0 to 10.0. Default = 1.0. *)
1725 );
1728 (*
1729 [ENUM]
1731 [DESCRIPTION]
1732 Parameter types for the FMOD_DSP_TYPE_LOWPASS2 filter.
1734 [REMARKS]
1736 [PLATFORMS]
1737 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1739 [SEE_ALSO]
1740 FMOD_DSP_SetParameter
1741 FMOD_DSP_GetParameter
1742 FMOD_DSP_TYPE
1744 *)
1745 type
1746 FMOD_DSP_LOWPASS2 =
1748 FMOD_DSP_LOWPASS2_CUTOFF, (* Lowpass cutoff frequency in hz. 1.0 to 22000.0. Default = 5000.0/ *)
1749 FMOD_DSP_LOWPASS2_RESONANCE (* Lowpass resonance Q value. 0.0 to 127.0. Default = 1.0. *)
1750 );
1753 (*
1754 [ENUM]
1756 [DESCRIPTION]
1757 Parameter types for the FMOD_DSP_TYPE_HIGHPASS filter.
1759 [REMARKS]
1761 [PLATFORMS]
1762 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1764 [SEE_ALSO]
1765 FMOD_DSP_SetParameter
1766 FMOD_DSP_GetParameter
1767 FMOD_DSP_TYPE
1769 *)
1770 type
1771 FMOD_DSP_HIGHPASS =
1773 FMOD_DSP_HIGHPASS_CUTOFF, (* Highpass cutoff frequency in hz. 10.0 to output 22000.0. Default = 5000.0. *)
1774 FMOD_DSP_HIGHPASS_RESONANCE (* Highpass resonance Q value. 1.0 to 10.0. Default = 1.0. *)
1775 );
1778 (*
1779 [ENUM]
1781 [DESCRIPTION]
1782 Parameter types for the FMOD_DSP_TYPE_ECHO filter.
1784 [REMARKS]
1785 Note. Every time the delay is changed, the plugin re-allocates the echo buffer. This means the echo will dissapear at that time while it refills its new buffer.
1786 Larger echo delays result in larger amounts of memory allocated.
1788 '<i>maxchannels</i>' also dictates the amount of memory allocated. By default, the maxchannels value is 0. If FMOD is set to stereo, the echo unit will allocate enough memory for 2 channels. If it is 5.1, it will allocate enough memory for a 6 channel echo, etc.
1789 If the echo effect is only ever applied to the global mix (ie it was added with FMOD_System_AddDSP), then 0 is the value to set as it will be enough to handle all speaker modes.
1790 When the echo is added to a channel (ie FMOD_Channel_AddDSP) then the channel count that comes in could be anything from 1 to 8 possibly. It is only in this case where you might want to increase the channel count above the output's channel count.
1791 If a channel echo is set to a lower number than the sound's channel count that is coming in, it will not echo the sound.
1793 [PLATFORMS]
1794 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1796 [SEE_ALSO]
1797 FMOD_DSP_SetParameter
1798 FMOD_DSP_GetParameter
1799 FMOD_DSP_TYPE
1801 *)
1802 type
1803 FMOD_DSP_ECHO =
1805 FMOD_DSP_ECHO_DELAY, (* Echo delay in ms. 10 to 5000. Default = 500. *)
1806 FMOD_DSP_ECHO_DECAYRATIO, (* Echo decay per delay. 0 to 1. 1.0 = No decay, 0.0 = total decay. Default = 0.5. *)
1807 FMOD_DSP_ECHO_FEEDBACK, (* 0 = Unit is a simple 1 line delay. 1 = Unit echos what has already been processed by echo. Default = 1. *)
1808 FMOD_DSP_ECHO_MAXCHANNELS (* Maximum channels supported. 0 to 16. 0 = same as fmod's default output polyphony, 1 = mono, 2 = stereo etc. See remarks for more. Default = 0. It is suggested to leave at 0! *)
1809 );
1812 (*
1813 [ENUM]
1815 [DESCRIPTION]
1816 Parameter types for the FMOD_DSP_TYPE_FLANGE filter.
1818 [REMARKS]
1819 Flange is an effect where the signal is played twice at the same time, and one copy slides back and forth creating a whooshing or flanging effect.
1820 As there are 2 copies of the same signal, by default each signal is given 50% mix, so that the total is not louder than the original unaffected signal.
1822 Flange depth is a percentage of a 10ms shift from the original signal. Anything above 10ms is not considered flange because to the ear it begins to 'echo' so 10ms is the highest value possible.
1824 [PLATFORMS]
1825 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1827 [SEE_ALSO]
1828 FMOD_DSP_SetParameter
1829 FMOD_DSP_GetParameter
1830 FMOD_DSP_TYPE
1832 *)
1833 type
1834 FMOD_DSP_FLANGE =
1836 FMOD_DSP_FLANGE_DRYMIX, (* Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.45. *)
1837 FMOD_DSP_FLANGE_WETMIX, (* Volume of flange signal to pass to output. 0.0 to 1.0. Default = 0.55. *)
1838 FMOD_DSP_FLANGE_DEPTH, (* Flange depth. 0.01 to 1.0. Default = 1.0. *)
1839 FMOD_DSP_FLANGE_RATE (* Flange speed in hz. 0.0 to 20.0. Default = 0.1. *)
1840 );
1843 (*
1844 [ENUM]
1846 [DESCRIPTION]
1847 Parameter types for the FMOD_DSP_TYPE_DISTORTION filter.
1849 [REMARKS]
1851 [PLATFORMS]
1852 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1854 [SEE_ALSO]
1855 FMOD_DSP_SetParameter
1856 FMOD_DSP_GetParameter
1857 FMOD_DSP_TYPE
1859 *)
1860 type
1861 FMOD_DSP_DISTORTION =
1863 FMOD_DSP_DISTORTION_LEVEL (* Distortion value. 0.0 to 1.0. Default = 0.5. *)
1864 );
1867 (*
1868 [ENUM]
1870 [DESCRIPTION]
1871 Parameter types for the FMOD_DSP_TYPE_NORMALIZE filter.
1873 [REMARKS]
1874 Normalize amplifies the sound based on the maximum peaks within the signal.
1875 For example if the maximum peaks in the signal were 50% of the bandwidth, it would scale the whole sound by 2.
1876 The lower threshold value makes the normalizer ignores peaks below a certain point, to avoid over-amplification if a loud signal suddenly came in, and also to avoid amplifying to maximum things like background hiss.
1878 Because FMOD is a realtime audio processor, it doesn't have the luxury of knowing the peak for the whole sound (ie it can't see into the future), so it has to process data as it comes in.
1879 To avoid very sudden changes in volume level based on small samples of new data, fmod fades towards the desired amplification which makes for smooth gain control. The fadetime parameter can control this.
1881 [PLATFORMS]
1882 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1884 [SEE_ALSO]
1885 FMOD_DSP_SetParameter
1886 FMOD_DSP_GetParameter
1887 FMOD_DSP_TYPE
1889 *)
1890 type
1891 FMOD_DSP_NORMALIZE =
1893 FMOD_DSP_NORMALIZE_FADETIME, (* Time to ramp the silence to full in ms. 0.0 to 20000.0. Default = 5000.0. *)
1894 FMOD_DSP_NORMALIZE_THRESHHOLD, (* Lower volume range threshold to ignore. 0.0 to 1.0. Default = 0.1. Raise higher to stop amplification of very quiet signals. *)
1895 FMOD_DSP_NORMALIZE_MAXAMP (* Maximum amplification allowed. 1.0 to 100000.0. Default = 20.0. 1.0 = no amplifaction, higher values allow more boost. *)
1896 );
1899 (*
1900 [ENUM]
1902 [DESCRIPTION]
1903 Parameter types for the FMOD_DSP_TYPE_PARAMEQ filter.
1905 [REMARKS]
1906 Parametric EQ is a bandpass filter that attenuates or amplifies a selected frequency and its neighbouring frequencies.
1908 To create a multi-band EQ create multiple FMOD_DSP_TYPE_PARAMEQ units and set each unit to different frequencies, for example 1000hz, 2000hz, 4000hz, 8000hz, 16000hz with a range of 1 octave each.
1910 When a frequency has its gain set to 1.0, the sound will be unaffected and represents the original signal exactly.
1912 [PLATFORMS]
1913 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1915 [SEE_ALSO]
1916 FMOD_DSP_SetParameter
1917 FMOD_DSP_GetParameter
1918 FMOD_DSP_TYPE
1920 *)
1921 type
1922 FMOD_DSP_PARAMEQ =
1924 FMOD_DSP_PARAMEQ_CENTER, (* Frequency center. 20.0 to 22000.0. Default = 8000.0. *)
1925 FMOD_DSP_PARAMEQ_BANDWIDTH, (* Octave range around the center frequency to filter. 0.2 to 5.0. Default = 1.0. *)
1926 FMOD_DSP_PARAMEQ_GAIN (* Frequency Gain. 0.05 to 3.0. Default = 1.0. *)
1927 );
1931 (*
1932 [ENUM]
1934 [DESCRIPTION]
1935 Parameter types for the FMOD_DSP_TYPE_PITCHSHIFT filter.
1937 [REMARKS]
1938 This pitch shifting unit can be used to change the pitch of a sound without speeding it up or slowing it down.
1939 It can also be used for time stretching or scaling, for example if the pitch was doubled, and the frequency of the sound was halved, the pitch of the sound would sound correct but it would be twice as slow.
1941 <b>Warning!</b> This filter is very computationally expensive! Similar to a vocoder, it requires several overlapping FFT and IFFT's to produce smooth output, and can require around 440mhz for 1 stereo 48khz signal using the default settings.
1942 Reducing the signal to mono will half the cpu usage, as will the overlap count.
1943 Reducing this will lower audio quality, but what settings to use are largely dependant on the sound being played. A noisy polyphonic signal will need higher overlap and fft size compared to a speaking voice for example.
1945 This pitch shifter is based on the pitch shifter code at http://www.dspdimension.com, written by Stephan M. Bernsee.
1946 The original code is COPYRIGHT 1999-2003 Stephan M. Bernsee <smb@dspdimension.com>.
1948 '<i>maxchannels</i>' dictates the amount of memory allocated. By default, the maxchannels value is 0. If FMOD is set to stereo, the pitch shift unit will allocate enough memory for 2 channels. If it is 5.1, it will allocate enough memory for a 6 channel pitch shift, etc.
1949 If the pitch shift effect is only ever applied to the global mix (ie it was added with FMOD_System_AddDSP), then 0 is the value to set as it will be enough to handle all speaker modes.
1950 When the pitch shift is added to a channel (ie FMOD_Channel_AddDSP) then the channel count that comes in could be anything from 1 to 8 possibly. It is only in this case where you might want to increase the channel count above the output's channel count.
1951 If a channel pitch shift is set to a lower number than the sound's channel count that is coming in, it will not pitch shift the sound.
1953 [PLATFORMS]
1954 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1956 [SEE_ALSO]
1957 FMOD_DSP_SetParameter
1958 FMOD_DSP_GetParameter
1959 FMOD_DSP_TYPE
1961 *)
1962 type
1963 FMOD_DSP_PITCHSHIFT =
1965 FMOD_DSP_PITCHSHIFT_PITCH, (* Pitch value. 0.5 to 2.0. Default = 1.0. 0.5 = one octave down, 2.0 = one octave up. 1.0 does not change the pitch. *)
1966 FMOD_DSP_PITCHSHIFT_FFTSIZE, (* FFT window size. 256, 512, 1024, 2048, 4096. Default = 1024. Increase this to reduce 'smearing'. This effect is a warbling sound similar to when an mp3 is encoded at very low bitrates. *)
1967 FMOD_DSP_PITCHSHIFT_OVERLAP, (* Window overlap. 1 to 32. Default = 4. Increase this to reduce 'tremolo' effect. Increasing it by a factor of 2 doubles the CPU usage. *)
1968 FMOD_DSP_PITCHSHIFT_MAXCHANNELS (* Maximum channels supported. 0 to 16. 0 = same as fmod's default output polyphony, 1 = mono, 2 = stereo etc. See remarks for more. Default = 0. It is suggested to leave at 0! *)
1969 );
1973 (*
1974 [ENUM]
1976 [DESCRIPTION]
1977 Parameter types for the FMOD_DSP_TYPE_CHORUS filter.
1979 [REMARKS]
1980 Chrous is an effect where the sound is more 'spacious' due to 1 to 3 versions of the sound being played along side the original signal but with the pitch of each copy modulating on a sine wave.
1981 This is a highly configurable chorus unit. It supports 3 taps, small and large delay times and also feedback.
1982 This unit also could be used to do a simple echo, or a flange effect.
1984 [PLATFORMS]
1985 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
1987 [SEE_ALSO]
1988 FMOD_DSP_SetParameter
1989 FMOD_DSP_GetParameter
1990 FMOD_DSP_TYPE
1992 *)
1993 type
1994 FMOD_DSP_CHORUS =
1996 FMOD_DSP_CHORUS_DRYMIX, (* Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.5. *)
1997 FMOD_DSP_CHORUS_WETMIX1, (* Volume of 1st chorus tap. 0.0 to 1.0. Default = 0.5. *)
1998 FMOD_DSP_CHORUS_WETMIX2, (* Volume of 2nd chorus tap. This tap is 90 degrees out of phase of the first tap. 0.0 to 1.0. Default = 0.5. *)
1999 FMOD_DSP_CHORUS_WETMIX3, (* Volume of 3rd chorus tap. This tap is 90 degrees out of phase of the second tap. 0.0 to 1.0. Default = 0.5. *)
2000 FMOD_DSP_CHORUS_DELAY, (* Chorus delay in ms. 0.1 to 100.0. Default = 40.0 ms. *)
2001 FMOD_DSP_CHORUS_RATE, (* Chorus modulation rate in hz. 0.0 to 20.0. Default = 0.8 hz. *)
2002 FMOD_DSP_CHORUS_DEPTH, (* Chorus modulation depth. 0.0 to 1.0. Default = 0.03. *)
2003 FMOD_DSP_CHORUS_FEEDBACK (* Chorus feedback. Controls how much of the wet signal gets fed back into the chorus buffer. 0.0 to 1.0. Default = 0.0. *)
2004 );
2006 (*
2007 [ENUM]
2009 [DESCRIPTION]
2010 Parameter types for the FMOD_DSP_TYPE_REVERB filter.
2012 [REMARKS]
2013 Based on freeverb by Jezar at Dreampoint - http://www.dreampoint.co.uk.
2015 [PLATFORMS]
2016 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
2018 [SEE_ALSO]
2019 FMOD_DSP_SetParameter
2020 FMOD_DSP_GetParameter
2021 FMOD_DSP_TYPE
2023 *)
2024 type
2025 FMOD_DSP_REVERB =
2027 FMOD_DSP_REVERB_ROOMSIZE, (* Roomsize. 0.0 to 1.0. Default = 0.5 *)
2028 FMOD_DSP_REVERB_DAMP, (* Damp. 0.0 to 1.0. Default = 0.5 *)
2029 FMOD_DSP_REVERB_WETMIX, (* Wet mix. 0.0 to 1.0. Default = 0.33 *)
2030 FMOD_DSP_REVERB_DRYMIX, (* Dry mix. 0.0 to 1.0. Default = 0.66 *)
2031 FMOD_DSP_REVERB_WIDTH, (* Width. 0.0 to 1.0. Default = 1.0 *)
2032 FMOD_DSP_REVERB_MODE (* Mode. 0 (normal), 1 (freeze). Default = 0 *)
2033 );
2036 (*
2037 [ENUM]
2039 [DESCRIPTION]
2040 Parameter types for the FMOD_DSP_TYPE_ITECHO filter.
2041 This is effectively a software based echo filter that emulates the DirectX DMO echo effect. Impulse tracker files can support this, and FMOD will produce the effect on ANY platform, not just those that support DirectX effects!
2043 [REMARKS]
2044 Note. Every time the delay is changed, the plugin re-allocates the echo buffer. This means the echo will dissapear at that time while it refills its new buffer.
2045 Larger echo delays result in larger amounts of memory allocated.
2047 As this is a stereo filter made mainly for IT playback, it is targeted for stereo signals.
2048 With mono signals only the FMOD_DSP_ITECHO_LEFTDELAY is used.
2049 For multichannel signals (>2) there will be no echo on those channels.
2051 [PLATFORMS]
2052 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3
2054 [SEE_ALSO]
2055 FMOD_DSP_SetParameter
2056 FMOD_DSP_GetParameter
2057 FMOD_DSP_TYPE
2058 FMOD_System_AddDSP
2060 *)
2061 type
2062 FMOD_DSP_ITECHO =
2064 FMOD_DSP_ITECHO_WETDRYMIX, (* Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0.0 through 100.0 (all wet). The default value is 50. *)
2065 FMOD_DSP_ITECHO_FEEDBACK, (* Percentage of output fed back into input, in the range from 0.0 through 100.0. The default value is 50. *)
2066 FMOD_DSP_ITECHO_LEFTDELAY, (* Delay for left channel, in milliseconds, in the range from 1.0 through 2000.0. The default value is 500 ms. *)
2067 FMOD_DSP_ITECHO_RIGHTDELAY, (* Delay for right channel, in milliseconds, in the range from 1.0 through 2000.0. The default value is 500 ms. *)
2068 FMOD_DSP_ITECHO_PANDELAY (* Value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap. Possible values are defined as 0.0 (equivalent to FALSE) and 1.0 (equivalent to TRUE). CURRENTLY NOT SUPPORTED. *)
2069 );
2073 (*
2074 [ENUM]
2076 [DESCRIPTION]
2077 Parameter types for the FMOD_DSP_TYPE_COMPRESSOR unit.
2078 This is a simple linked multichannel software limiter that is uniform across the whole spectrum.<br>
2080 [REMARKS]
2081 The limiter is not guaranteed to catch every peak above the threshold level,
2082 because it cannot apply gain reduction instantaneously - the time delay is
2083 determined by the attack time. However setting the attack time too short will
2084 distort the sound, so it is a compromise. High level peaks can be avoided by
2085 using a short attack time - but not too short, and setting the threshold a few
2086 decibels below the critical level.
2087 <br>
2089 [PLATFORMS]
2090 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3, Wii
2092 [SEE_ALSO]
2093 DSP::SetParameter
2094 DSP::GetParameter
2095 FMOD_DSP_TYPE
2096 System::addDSP
2098 *)
2099 type
2100 FMOD_DSP_COMPRESSOR =
2102 FMOD_DSP_COMPRESSOR_THRESHOLD, (* Threshold level (dB) in the range from -60 through 0. The default value is 0. *)
2103 FMOD_DSP_COMPRESSOR_ATTACK, (* Gain reduction attack time (milliseconds), in the range from 10 through 200. The default value is 50. *)
2104 FMOD_DSP_COMPRESSOR_RELEASE, (* Gain reduction release time (milliseconds), in the range from 20 through 1000. The default value is 50. *)
2105 FMOD_DSP_COMPRESSOR_GAINMAKEUP (* Make-up gain (dB) applied after limiting, in the range from 0 through 30. The default value is 0. *)
2106 );
2108 (*
2109 [ENUM]
2111 [DESCRIPTION]
2112 Parameter types for the FMOD_DSP_TYPE_SFXREVERB unit.<br>
2114 [REMARKS]
2115 This is a high quality I3DL2 based reverb which improves greatly on FMOD_DSP_REVERB.<br>
2116 On top of the I3DL2 property set, "Dry Level" is also included to allow the dry mix to be changed.<br>
2117 <br>
2118 Currently FMOD_DSP_SFXREVERB_REFLECTIONSLEVEL, FMOD_DSP_SFXREVERB_REFLECTIONSDELAY and FMOD_DSP_SFXREVERB_REVERBDELAY are not enabled but will come in future versions.<br>
2119 <br>
2120 These properties can be set with presets in FMOD_REVERB_PRESETS.
2122 [PLATFORMS]
2123 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3, Wii
2125 [SEE_ALSO]
2126 DSP::SetParameter
2127 DSP::GetParameter
2128 FMOD_DSP_TYPE
2129 System::addDSP
2130 FMOD_REVERB_PRESETS
2132 *)
2133 type
2134 FMOD_DSP_SFXREVERB =
2136 FMOD_DSP_SFXREVERB_DRYLEVEL, (* Dry Level : Mix level of dry signal in output in mB. Ranges from -10000.0 to 0.0. Default is 0. *)
2137 FMOD_DSP_SFXREVERB_ROOM, (* Room : Room effect level at low frequencies in mB. Ranges from -10000.0 to 0.0. Default is 0.0. *)
2138 FMOD_DSP_SFXREVERB_ROOMHF, (* Room HF : Room effect high-frequency level re. low frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. *)
2139 FMOD_DSP_SFXREVERB_ROOMROLLOFFFACTOR, (* Room Rolloff : Like DS3D flRolloffFactor but for room effect. Ranges from 0.0 to 10.0. Default is 10.0 *)
2140 FMOD_DSP_SFXREVERB_DECAYTIME, (* Decay Time : Reverberation decay time at low-frequencies in seconds. Ranges from 0.1 to 20.0. Default is 1.0. *)
2141 FMOD_DSP_SFXREVERB_DECAYHFRATIO, (* Decay HF Ratio : High-frequency to low-frequency decay time ratio. Ranges from 0.1 to 2.0. Default is 0.5. *)
2142 FMOD_DSP_SFXREVERB_REFLECTIONSLEVEL, (* Reflections : Early reflections level relative to room effect in mB. Ranges from -10000.0 to 1000.0. Default is -10000.0. *)
2143 FMOD_DSP_SFXREVERB_REFLECTIONSDELAY, (* Reflect Delay : Delay time of first reflection in seconds. Ranges from 0.0 to 0.3. Default is 0.02. *)
2144 FMOD_DSP_SFXREVERB_REVERBLEVEL, (* Reverb : Late reverberation level relative to room effect in mB. Ranges from -10000.0 to 2000.0. Default is 0.0. *)
2145 FMOD_DSP_SFXREVERB_REVERBDELAY, (* Reverb Delay : Late reverberation delay time relative to first reflection in seconds. Ranges from 0.0 to 0.1. Default is 0.04. *)
2146 FMOD_DSP_SFXREVERB_DIFFUSION, (* Diffusion : Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. *)
2147 FMOD_DSP_SFXREVERB_DENSITY, (* Density : Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. *)
2148 FMOD_DSP_SFXREVERB_HFREFERENCE (* HF Reference : Reference high frequency in Hz. Ranges from 20.0 to 20000.0. Default is 5000.0. *)
2149 );
2151 (*
2152 [ENUM]
2154 [DESCRIPTION]
2155 Parameter types for the FMOD_DSP_TYPE_LOWPASS_SIMPLE filter.<br>
2156 This is a very simple low pass filter, based on two single-pole RC time-constant modules.
2157 The emphasis is on speed rather than accuracy, so this should not be used for task requiring critical filtering.<br>
2159 [REMARKS]
2161 [PLATFORMS]
2162 Win32, Win64, Linux, Linux64, Macintosh, Xbox, Xbox360, PlayStation 2, GameCube, PlayStation Portable, PlayStation 3, Wii
2164 [SEE_ALSO]
2165 DSP::setParameter
2166 DSP::getParameter
2167 FMOD_DSP_TYPE
2169 *)
2170 type
2171 FMOD_DSP_LOWPASS_SIMPLE =
2173 FMOD_DSP_LOWPASS_SIMPLE_CUTOFF (* Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0 *)
2174 );
2179 implementation
2181 end.