source: CoolAudio/Systems/FMOD/fmodtypes.pas

Last change on this file was 350, checked in by chronos, 12 years ago
File size: 41.5 KB
Line 
1{================================================================================================ }
2{ FMOD Types header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004. }
3{ =============================================================================================== }
4{
5 NOTE: For the demos to run you must have either fmod.dll (in Windows)
6 or libfmod-3.75.so (in Linux) installed.
7
8 In Windows, copy the fmod.dll file found in the api directory to either of
9 the following locations (in order of preference)
10 - your application directory
11 - Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
12
13 In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
14 file from the api directory to your /usr/lib/ directory.
15 Then via a command line, navigate to the /usr/lib/ directory and create
16 a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
17 the following command (assuming you are in /usr/lib/)...
18 ln -s libfmod-3.75.so libfmod.so.
19}
20{ =============================================================================================== }
21
22unit fmodtypes;
23
24{$IFDEF FPC}
25 {$MODE DELPHI}
26 {$IFDEF WIN32}
27 {$DEFINE MSWINDOWS}
28 {$ENDIF}
29 {$PACKRECORDS C}
30{$ENDIF}
31
32{$IFDEF VER110}
33 {$DEFINE DELPHI_5_OR_LOWER}
34{$ELSE}
35 {$IFDEF VER120}
36 {$DEFINE DELPHI_5_OR_LOWER}
37 {$ELSE}
38 {$IFDEF VER130}
39 {$DEFINE DELPHI_5_OR_LOWER}
40 {$ENDIF}
41 {$ENDIF}
42{$ENDIF}
43
44interface
45
46{$IFDEF MSWINDOWS}
47uses
48 Windows;
49{$ENDIF}
50
51{ =============================================================================================== }
52{ DEFINITIONS }
53{ =============================================================================================== }
54
55{
56 Force four-byte enums
57}
58{$Z4}
59
60{
61 Disable warning for unsafe types in Delphi 7
62}
63{$IFDEF VER150}
64{$WARN UNSAFE_TYPE OFF}
65{$ENDIF}
66
67{$IFDEF DELPHI_5_OR_LOWER}
68type
69 PSingle = ^Single;
70 THandle = Cardinal;
71{$ENDIF}
72
73const
74 FMOD_VERSION: Single = 3.75;
75
76{
77 FMOD defined types
78}
79
80type
81 PFSoundSample = Pointer;
82 PFSoundStream = Pointer;
83 PFSoundDSPUnit = Pointer;
84 PFMusicModule = Pointer;
85 PFSyncPoint = Pointer;
86
87 PFSoundVector = ^TFSoundVector;
88 TFSoundVector = record
89 x: Single;
90 y: Single;
91 z: Single;
92 end;
93
94 {
95 Callback types
96 }
97
98 TFSoundStreamCallback = function (Stream: PFSoundStream; Buff: Pointer; Length, Param: Integer): ByteBool; stdcall;
99 TFSoundDSPCallback = function (OriginalBuffer: Pointer; NewBuffer: Pointer; Length, Param: Integer): Pointer; stdcall;
100 TFMusicCallback = procedure (Module: PFMusicModule; Param: Byte); stdcall;
101
102 TFSoundOpenCallback = function (Name: PChar): Cardinal; stdcall;
103 TFSoundCloseCallback = procedure (Handle: Cardinal); stdcall;
104 TFSoundReadCallback = function (Buffer: Pointer; Size: Cardinal; Handle: Cardinal): Cardinal; stdcall;
105 TFSoundSeekCallback = procedure (Handle: Cardinal; Pos: Cardinal; Mode: Byte); stdcall;
106 TFSoundTellCallback = function (Handle: Cardinal): Cardinal; stdcall;
107
108 TFSoundAllocCallback = function(Size: Cardinal): Pointer; stdcall;
109 TFSoundReallocCallback = function(Ptr: Pointer; Size: Cardinal): Pointer; stdcall;
110 TFSoundFreeCallback = procedure(Ptr: Pointer); stdcall;
111
112 TFMetaDataCallback = function(Name: PChar; Value: PChar; userdata: Integer): ByteBool; stdcall;
113
114{
115[ENUM]
116[
117 [DESCRIPTION]
118 On failure of commands in FMOD, use FSOUND_GetError to attain what happened.
119
120 [SEE_ALSO]
121 FSOUND_GetError
122]
123}
124
125type
126 TFModErrors = (
127 FMOD_ERR_NONE, // No errors
128 FMOD_ERR_BUSY, // Cannot call this command after FSOUND_Init. Call FSOUND_Close first.
129 FMOD_ERR_UNINITIALIZED, // This command failed because FSOUND_Init was not called
130 FMOD_ERR_INIT, // Error initializing output device.
131 FMOD_ERR_ALLOCATED, // Error initializing output device, but more specifically, the output device is already in use and cannot be reused.
132 FMOD_ERR_PLAY, // Playing the sound failed.
133 FMOD_ERR_OUTPUT_FORMAT, // Soundcard does not support the features needed for this soundsystem (16bit stereo output)
134 FMOD_ERR_COOPERATIVELEVEL, // Error setting cooperative level for hardware.
135 FMOD_ERR_CREATEBUFFER, // Error creating hardware sound buffer.
136 FMOD_ERR_FILE_NOTFOUND, // File not found
137 FMOD_ERR_FILE_FORMAT, // Unknown file format
138 FMOD_ERR_FILE_BAD, // Error loading file
139 FMOD_ERR_MEMORY, // Not enough memory or resources
140 FMOD_ERR_VERSION, // The version number of this file format is not supported
141 FMOD_ERR_INVALID_PARAM, // An invalid parameter was passed to this function
142 FMOD_ERR_NO_EAX, // Tried to use an EAX command on a non EAX enabled channel or output.
143 FMOD_ERR_CHANNEL_ALLOC, // Failed to allocate a new channel
144 FMOD_ERR_RECORD, // Recording is not supported on this machine
145 FMOD_ERR_MEDIAPLAYER, // Windows Media Player not installed so cannot play wma or use internet streaming. */
146 FMOD_ERR_CDDEVICE // An error occured trying to open the specified CD device
147 );
148
149{
150[ENUM]
151[
152 [DESCRIPTION]
153 These output types are used with FSOUND_SetOutput, to choose which output driver to use.
154
155 FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver
156 does not support DirectX 6 Voice Manager Extensions.
157
158 FSOUND_OUTPUT_WINMM is recommended for NT and CE.
159
160 [SEE_ALSO]
161 FSOUND_SetOutput
162 FSOUND_GetOutput
163]
164}
165
166type
167 TFSoundOutputTypes = (
168 FSOUND_OUTPUT_NOSOUND, // NoSound driver, all calls to this succeed but do nothing.
169 FSOUND_OUTPUT_WINMM, // Windows Multimedia driver.
170 FSOUND_OUTPUT_DSOUND, // DirectSound driver. You need this to get EAX2 or EAX3 support, or FX api support.
171 FSOUND_OUTPUT_A3D, // A3D driver.
172
173 FSOUND_OUTPUT_OSS, // Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers.
174 FSOUND_OUTPUT_ESD, // Linux/Unix ESD (Enlightment Sound Daemon) driver.
175 FSOUND_OUTPUT_ALSA, // Linux Alsa driver.
176
177 FSOUND_OUTPUT_ASIO, // Low latency ASIO driver.
178 FSOUND_OUTPUT_XBOX, // Xbox driver.
179 FSOUND_OUTPUT_PS2, // PlayStation 2 driver.
180 FSOUND_OUTPUT_MAC, // Mac SoundMager driver.
181 FSOUND_OUTPUT_GC, // Gamecube driver.
182 FSOUND_OUTPUT_PSP, // PlayStation Portable driver.
183
184 FSOUND_OUTPUT_NOSOUND_NONREALTIME // This is the same as nosound, but the sound generation is driven by FSOUND_Update
185 );
186
187
188{
189[ENUM]
190[
191 [DESCRIPTION]
192 These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act
193 upon for other reasons using FSOUND_GetMixer.
194 It is not necessary to set the mixer. FMOD will autodetect the best mixer for you.
195
196 [SEE_ALSO]
197 FSOUND_SetMixer
198 FSOUND_GetMixer
199]
200}
201type
202 TFSoundMixerTypes = (
203 FSOUND_MIXER_AUTODETECT, // CE/PS2/GC Only - Non interpolating/low quality mixer.
204 FSOUND_MIXER_BLENDMODE, // Removed / obsolete
205 FSOUND_MIXER_MMXP5, // Removed / obsolete
206 FSOUND_MIXER_MMXP6, // Removed / obsolete
207
208 FSOUND_MIXER_QUALITY_AUTODETECT,// All platforms - Autodetect the fastest quality mixer based on your cpu.
209 FSOUND_MIXER_QUALITY_FPU, // Win32/Linux only - Interpolating/volume ramping FPU mixer.
210 FSOUND_MIXER_QUALITY_MMXP5, // Win32/Linux only - Interpolating/volume ramping P5 MMX mixer.
211 FSOUND_MIXER_QUALITY_MMXP6, // Win32/Linux only - Interpolating/volume ramping ppro+ MMX mixer.
212
213 FSOUND_MIXER_MONO, // CE/PS2/GC only - MONO non interpolating/low quality mixer. For speed
214 FSOUND_MIXER_QUALITY_MONO, // CE/PS2/GC only - MONO Interpolating mixer. For speed
215
216 FSOUND_MIXER_MAX
217 );
218
219
220{
221[ENUM]
222[
223 [DESCRIPTION]
224 These definitions describe the type of song being played.
225
226 [SEE_ALSO]
227 FMUSIC_GetType
228]
229}
230type
231 TFMusicTypes = (
232 FMUSIC_TYPE_NONE,
233 FMUSIC_TYPE_MOD, // Protracker / FastTracker
234 FMUSIC_TYPE_S3M, // ScreamTracker 3
235 FMUSIC_TYPE_XM, // FastTracker 2
236 FMUSIC_TYPE_IT, // Impulse Tracker
237 FMUSIC_TYPE_MIDI, // MIDI file
238 FMUSIC_TYPE_FSB // FMOD Sample Bank file
239 );
240
241
242{
243[DEFINE_START]
244[
245 [NAME]
246 FSOUND_DSP_PRIORITIES
247
248 [DESCRIPTION]
249 These default priorities are used by FMOD internal system DSP units. They describe the
250 position of the DSP chain, and the order of how audio processing is executed.
251 You can actually through the use of FSOUND_DSP_GetxxxUnit (where xxx is the name of the DSP
252 unit), disable or even change the priority of a DSP unit.
253
254 [SEE_ALSO]
255 FSOUND_DSP_Create
256 FSOUND_DSP_SetPriority
257 FSOUND_DSP_GetSpectrum
258]
259}
260const
261 FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT = 0; // DSP CLEAR unit - done first
262 FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT = 100; // DSP SFX unit - done second
263 FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT = 200; // DSP MUSIC unit - done third
264 FSOUND_DSP_DEFAULTPRIORITY_USER = 300; // User priority, use this as reference for your own DSP units
265 FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT = 900; // This reads data for FSOUND_DSP_GetSpectrum, so it comes after user units
266 FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT = 1000; // DSP CLIP AND COPY unit - last
267// [DEFINE_END]
268
269
270{
271[DEFINE_START]
272[
273 [NAME]
274 FSOUND_CAPS
275
276 [DESCRIPTION]
277 Driver description bitfields. Use FSOUND_Driver_GetCaps to determine if a driver enumerated
278 has the settings you are after. The enumerated driver depends on the output mode, see
279 FSOUND_OUTPUTTYPES
280
281 [SEE_ALSO]
282 FSOUND_GetDriverCaps
283 FSOUND_OUTPUTTYPES
284]
285}
286const
287 FSOUND_CAPS_HARDWARE = $1; // This driver supports hardware accelerated 3d sound.
288 FSOUND_CAPS_EAX2 = $2; // This driver supports EAX 2 reverb
289 FSOUND_CAPS_EAX3 = $10; // This driver supports EAX 3 reverb
290// [DEFINE_END]
291
292
293{
294[DEFINE_START]
295[
296 [NAME]
297 FSOUND_MODES
298
299 [DESCRIPTION]
300 Sample description bitfields, OR them together for loading and describing samples.
301 NOTE. If the file format being loaded already has a defined format, such as WAV or MP3, then
302 trying to override the pre-defined format with a new set of format flags will not work. For
303 example, an 8 bit WAV file will not load as 16bit if you specify FSOUND_16BITS. It will just
304 ignore the flag and go ahead loading it as 8bits. For these type of formats the only flags
305 you can specify that will really alter the behaviour of how it is loaded, are the following.
306
307 Looping behaviour - FSOUND_LOOP_OFF, FSOUND_LOOP_NORMAL, FSOUND_LOOP_BIDI
308 Load destination - FSOUND_HW3D, FSOUND_HW2D, FSOUND_2D
309 Loading behaviour - FSOUND_NONBLOCKING, FSOUND_LOADMEMORY, FSOUND_LOADRAW, FSOUND_MPEGACCURATE, FSOUND_MPEGHALFRATE, FSOUND_FORCEMONO
310 Playback behaviour - FSOUND_STREAMABLE, FSOUND_ENABLEFX
311 PlayStation 2 only - FSOUND_USECORE0, FSOUND_USECORE1, FSOUND_LOADMEMORYIOP
312
313 See flag descriptions for what these do.
314]
315}
316const
317 FSOUND_LOOP_OFF = $00000001; // For non looping samples.
318 FSOUND_LOOP_NORMAL = $00000002; // For forward looping samples.
319 FSOUND_LOOP_BIDI = $00000004; // For bidirectional looping samples. (no effect if in hardware).
320 FSOUND_8BITS = $00000008; // For 8 bit samples.
321 FSOUND_16BITS = $00000010; // For 16 bit samples.
322 FSOUND_MONO = $00000020; // For mono samples.
323 FSOUND_STEREO = $00000040; // For stereo samples.
324 FSOUND_UNSIGNED = $00000080; // For user created source data containing unsigned samples.
325 FSOUND_SIGNED = $00000100; // For user created source data containing signed data.
326 FSOUND_DELTA = $00000200; // For user created source data stored as delta values.
327 FSOUND_IT214 = $00000400; // For user created source data stored using IT214 compression.
328 FSOUND_IT215 = $00000800; // For user created source data stored using IT215 compression.
329 FSOUND_HW3D = $00001000; // Attempts to make samples use 3d hardware acceleration. (if the card supports it)
330 FSOUND_2D = $00002000; // Ignores any 3d processing. Overrides FSOUND_HW3D. Located in software.
331 FSOUND_STREAMABLE = $00004000; // For a streamimg sound where you feed the data to it. */
332 FSOUND_LOADMEMORY = $00008000; // "name" will be interpreted as a pointer to data for streaming and samples.
333 FSOUND_LOADRAW = $00010000; // Will ignore file format and treat as raw pcm.
334 FSOUND_MPEGACCURATE = $00020000; // For FSOUND_Stream_OpenFile - for accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime. WARNING, see FSOUND_Stream_OpenFile for inital opening time performance issues.
335 FSOUND_FORCEMONO = $00040000; // For forcing stereo streams and samples to be mono - needed if using FSOUND_HW3D and stereo data - incurs a small speed hit for streams
336 FSOUND_HW2D = $00080000; // 2D hardware sounds. allows hardware specific effects
337 FSOUND_ENABLEFX = $00100000; // Allows DX8 FX to be played back on a sound. Requires DirectX 8 - Note these sounds cannot be played more than once, be 8 bit, be less than a certain size, or have a changing frequency
338 FSOUND_MPEGHALFRATE = $00200000; // For FMODCE only - decodes mpeg streams using a lower quality decode, but faster execution
339 FSOUND_XADPCM = $00400000; // For XBOX only - Contents are compressed as XADPCM */
340 FSOUND_VAG = $00800000; // For PS2 only - Contents are compressed as Sony VAG format */
341 FSOUND_NONBLOCKING = $01000000; // For FSOUND_Stream_OpenFile - Causes stream to open in the background and not block the foreground app - stream plays only when ready.
342 FSOUND_GCADPCM = $02000000; // For Gamecube only - Contents are compressed as Gamecube DSP-ADPCM format
343 FSOUND_MULTICHANNEL = $04000000; // For PS2 only - Contents are interleaved into a multi-channel (more than stereo) format
344 FSOUND_USECORE0 = $08000000; // For PS2 only - Sample/Stream is forced to use hardware voices 00-23
345 FSOUND_USECORE1 = $10000000; // For PS2 only - Sample/Stream is forced to use hardware voices 24-47
346 FSOUND_LOADMEMORYIOP = $20000000; // For PS2 only - "name" will be interpreted as a pointer to data for streaming and samples. The address provided will be an IOP address
347
348const
349 FSOUND_NORMAL = (FSOUND_16BITS or FSOUND_SIGNED or FSOUND_MONO);
350// [DEFINE_END]
351
352
353{
354[DEFINE_START]
355[
356 [NAME]
357 FSOUND_CDPLAYMODES
358
359 [DESCRIPTION]
360 Playback method for a CD Audio track, using FSOUND_CD_SetPlayMode
361
362 [SEE_ALSO]
363 FSOUND_CD_SetPlayMode
364 FSOUND_CD_Play
365]
366}
367const
368 FSOUND_CD_PLAYCONTINUOUS = 0; // Starts from the current track and plays to end of CD.
369 FSOUND_CD_PLAYONCE = 1; // Plays the specified track then stops.
370 FSOUND_CD_PLAYLOOPED = 2; // Plays the specified track looped, forever until stopped manually.
371 FSOUND_CD_PLAYRANDOM = 3; // Plays tracks in random order
372// [DEFINE_END]
373
374
375{
376[DEFINE_START]
377[
378 [NAME]
379 FSOUND_CHANNELSAMPLEMODE
380
381 [DESCRIPTION]
382 Miscellaneous values for FMOD functions.
383
384 [SEE_ALSO]
385 FSOUND_PlaySound
386 FSOUND_PlaySoundEx
387 FSOUND_Sample_Alloc
388 FSOUND_Sample_Load
389 FSOUND_SetPan
390]
391}
392const
393 FSOUND_FREE = -1; // value to play on any free channel, or to allocate a sample in a free sample slot.
394 FSOUND_UNMANAGED = -2; // value to allocate a sample that is NOT managed by FSOUND or placed in a sample slot.
395 FSOUND_ALL = -3; // for a channel index , this flag will affect ALL channels available! Not supported by every function.
396 FSOUND_STEREOPAN = -1; // value for FSOUND_SetPan so that stereo sounds are not played at half volume. See FSOUND_SetPan for more on this.
397 FSOUND_SYSTEMCHANNEL = -1000; // special 'channel' ID for all channel based functions that want to alter the global FSOUND software mixing output
398 FSOUND_SYSTEMSAMPLE = -1000; // special 'sample' ID for all sample based functions that want to alter the global FSOUND software mixing output sample
399// [DEFINE_END]
400
401
402{
403[STRUCT_START]
404[
405 [NAME]
406 FSOUND_REVERB_PROPERTIES
407
408 [DESCRIPTION]
409 Structure defining a reverb environment.
410
411 [REMARKS]
412 For more indepth descriptions of the reverb properties under win32, please see the EAX2/EAX3
413 documentation at http://developer.creative.com/ under the 'downloads' section.
414 If they do not have the EAX3 documentation, then most information can be attained from
415 the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
416 EAX2.
417 Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset.
418 Note that integer values that typically range from -10,000 to 1000 are represented in
419 decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
420 PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).
421 Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
422 the reverb should product a similar effect on either platform.
423 Only WIN32 supports the reverb api.
424
425 The numerical values listed below are the maximum, minimum and default values for each variable respectively.
426
427 [SEE_ALSO]
428 FSOUND_Reverb_SetProperties
429 FSOUND_Reverb_GetProperties
430 FSOUND_REVERB_PRESETS
431 FSOUND_REVERB_FLAGS
432]
433}
434type
435 TFSoundReverbProperties = record // MIN MAX DEFAULT DESCRIPTION
436 Environment: Cardinal; // 0 25 0 sets all listener properties (win32 only)
437 EnvSize: Single; // 1.0 100.0 7.5 environment size in meters (win32 only)
438 EnvDiffusion: Single; // 0.0 1.0 1.0 environment diffusion (win32/xbox)
439 Room: Integer; // -10000 0 -1000 room effect level (at mid frequencies) (win32/xbox)
440 RoomHF: Integer; // -10000 0 -100 relative room effect level at high frequencies (win32/xbox)
441 RoomLF: Integer; // -10000 0 0 relative room effect level at low frequencies (win32 only)
442 DecayTime: Single; // 0.1 20.0 1.49 reverberation decay time at mid frequencies (win32/xbox)
443 DecayHFRatio: Single; // 0.1 2.0 0.83 high-frequency to mid-frequency decay time ratio (win32/xbox)
444 DecayLFRatio: Single; // 0.1 2.0 1.0 low-frequency to mid-frequency decay time ratio (win32 only)
445 Reflections: Integer; // -10000 1000 -2602 early reflections level relative to room effect (win32/xbox)
446 ReflectionsDelay: Single; // 0.0 0.3 0.007 initial reflection delay time (win32/xbox)
447 ReflectionsPan: array [0..2] of Single; // 0,0,0 early reflections panning vector (win32 only)
448 Reverb: Integer; // -10000 2000 200 late reverberation level relative to room effect (win32/xbox)
449 ReverbDelay: Single; // 0.0 0.1 0.011 late reverberation delay time relative to initial reflection (win32/xbox)
450 ReverbPan: array [0..2] of Single; // 0,0,0 late reverberation panning vector (win32 only)
451 EchoTime: Single; // .075 0.25 0.25 echo time (win32 only)
452 EchoDepth: Single; // 0.0 1.0 0.0 echo depth (win32 only)
453 ModulationTime: Single; // 0.04 4.0 0.25 modulation time (win32 only)
454 ModulationDepth: Single; // 0.0 1.0 0.0 modulation depth (win32 only)
455 AirAbsorptionHF: Single; // -100 0.0 -5.0 change in level per meter at high frequencies (win32 only)
456 HFReference: Single; // 1000.0 20000 5000.0 reference high frequency (hz) (win32/xbox)
457 LFReference: Single; // 20.0 1000.0 250.0 reference low frequency (hz) (win32 only)
458 RoomRolloffFactor: Single; // 0.0 10.0 0.0 like FSOUND_3D_SetRolloffFactor but for room effect (win32/xbox)
459 Diffusion: Single; // 0.0 100.0 100.0 Value that controls the echo density in the late reverberation decay. (xbox only)
460 Density: Single; // 0.0 100.0 100.0 Value that controls the modal density in the late reverberation decay (xbox only)
461 Flags: Cardinal; // FSOUND_REVERB_PROPERTYFLAGS - modifies the behavior of above properties (win32 only)
462 end;
463// [STRUCT_END]
464
465
466{
467[DEFINE_START]
468[
469 [NAME]
470 FSOUND_REVERB_FLAGS
471
472 [DESCRIPTION]
473 Values for the Flags member of the FSOUND_REVERB_PROPERTIES structure.
474
475 [SEE_ALSO]
476 FSOUND_REVERB_PROPERTIES
477]
478}
479const
480 FSOUND_REVERBFLAGS_DECAYTIMESCALE = $00000001; // EnvironmentSize affects reverberation decay time
481 FSOUND_REVERBFLAGS_REFLECTIONSSCALE = $00000002; // EnvironmentSize affects reflection level
482 FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE = $00000004; // EnvironmentSize affects initial reflection delay time
483 FSOUND_REVERBFLAGS_REVERBSCALE = $00000008; // EnvironmentSize affects reflections level
484 FSOUND_REVERBFLAGS_REVERBDELAYSCALE = $00000010; // EnvironmentSize affects late reverberation delay time
485 FSOUND_REVERBFLAGS_DECAYHFLIMIT = $00000020; // AirAbsorptionHF affects DecayHFRatio
486 FSOUND_REVERBFLAGS_ECHOTIMESCALE = $00000040; // EnvironmentSize affects echo time
487 FSOUND_REVERBFLAGS_MODULATIONTIMESCALE = $00000080; // EnvironmentSize affects modulation time
488 FSOUND_REVERB_FLAGS_CORE0 = $00000100; // PS2 Only - Reverb is applied to CORE0 (hw voices 0-23)
489 FSOUND_REVERB_FLAGS_CORE1 = $00000200; // PS2 Only - Reverb is applied to CORE1 (hw voices 24-47)
490 FSOUND_REVERBFLAGS_DEFAULT = FSOUND_REVERBFLAGS_DECAYTIMESCALE or FSOUND_REVERBFLAGS_REFLECTIONSSCALE or
491 FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE or FSOUND_REVERBFLAGS_REVERBSCALE or
492 FSOUND_REVERBFLAGS_REVERBDELAYSCALE or FSOUND_REVERBFLAGS_DECAYHFLIMIT or
493 FSOUND_REVERB_FLAGS_CORE0 or FSOUND_REVERB_FLAGS_CORE1;
494// [DEFINE_END]
495
496
497{
498[DEFINE_START]
499[
500 [NAME]
501 FSOUND_REVERB_PRESETS
502
503 [DESCRIPTION]
504 A set of predefined environment PARAMETERS, created by Creative Labs
505 These are used to initialize an FSOUND_REVERB_PROPERTIES structure statically.
506 ie
507 FSOUND_REVERB_PROPERTIES prop = FSOUND_PRESET_GENERIC;
508
509 [SEE_ALSO]
510 FSOUND_Reverb_SetProperties
511]
512}
513{
514const
515// Env Size Diffus Room RoomHF RmLF DecTm DecHF DecLF Refl RefDel RefPan Revb RevDel ReverbPan EchoTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff Diffus Densty FLAGS
516 FSOUND_PRESET_OFF = 0, 7.5f, 1.00f, -10000, -10000, 0, 1.00f, 1.00f, 1.0f, -2602, 0.007f, 0.0f,0.0f,0.0f, 200, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 0.0f, 0.0f, 0x3f ;
517 FSOUND_PRESET_GENERIC = 0, 7.5f, 1.00f, -1000, -100, 0, 1.49f, 0.83f, 1.0f, -2602, 0.007f, 0.0f,0.0f,0.0f, 200, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
518 FSOUND_PRESET_PADDEDCELL = 1, 1.4f, 1.00f, -1000, -6000, 0, 0.17f, 0.10f, 1.0f, -1204, 0.001f, 0.0f,0.0f,0.0f, 207, 0.002f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
519 FSOUND_PRESET_ROOM = 2, 1.9f, 1.00f, -1000, -454, 0, 0.40f, 0.83f, 1.0f, -1646, 0.002f, 0.0f,0.0f,0.0f, 53, 0.003f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
520 FSOUND_PRESET_BATHROOM = 3, 1.4f, 1.00f, -1000, -1200, 0, 1.49f, 0.54f, 1.0f, -370, 0.007f, 0.0f,0.0f,0.0f, 1030, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 60.0f, 0x3f ;
521 FSOUND_PRESET_LIVINGROOM = 4, 2.5f, 1.00f, -1000, -6000, 0, 0.50f, 0.10f, 1.0f, -1376, 0.003f, 0.0f,0.0f,0.0f, -1104, 0.004f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
522 FSOUND_PRESET_STONEROOM = 5, 11.6f, 1.00f, -1000, -300, 0, 2.31f, 0.64f, 1.0f, -711, 0.012f, 0.0f,0.0f,0.0f, 83, 0.017f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
523 FSOUND_PRESET_AUDITORIUM = 6, 21.6f, 1.00f, -1000, -476, 0, 4.32f, 0.59f, 1.0f, -789, 0.020f, 0.0f,0.0f,0.0f, -289, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
524 FSOUND_PRESET_CONCERTHALL = 7, 19.6f, 1.00f, -1000, -500, 0, 3.92f, 0.70f, 1.0f, -1230, 0.020f, 0.0f,0.0f,0.0f, -2, 0.029f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
525 FSOUND_PRESET_CAVE = 8, 14.6f, 1.00f, -1000, 0, 0, 2.91f, 1.30f, 1.0f, -602, 0.015f, 0.0f,0.0f,0.0f, -302, 0.022f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
526 FSOUND_PRESET_ARENA = 9, 36.2f, 1.00f, -1000, -698, 0, 7.24f, 0.33f, 1.0f, -1166, 0.020f, 0.0f,0.0f,0.0f, 16, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
527 FSOUND_PRESET_HANGAR = 10, 50.3f, 1.00f, -1000, -1000, 0, 10.05f, 0.23f, 1.0f, -602, 0.020f, 0.0f,0.0f,0.0f, 198, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
528 FSOUND_PRESET_CARPETTEDHALLWAY = 11, 1.9f, 1.00f, -1000, -4000, 0, 0.30f, 0.10f, 1.0f, -1831, 0.002f, 0.0f,0.0f,0.0f, -1630, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
529 FSOUND_PRESET_HALLWAY = 12, 1.8f, 1.00f, -1000, -300, 0, 1.49f, 0.59f, 1.0f, -1219, 0.007f, 0.0f,0.0f,0.0f, 441, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
530 FSOUND_PRESET_STONECORRIDOR = 13, 13.5f, 1.00f, -1000, -237, 0, 2.70f, 0.79f, 1.0f, -1214, 0.013f, 0.0f,0.0f,0.0f, 395, 0.020f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
531 FSOUND_PRESET_ALLEY = 14, 7.5f, 0.30f, -1000, -270, 0, 1.49f, 0.86f, 1.0f, -1204, 0.007f, 0.0f,0.0f,0.0f, -4, 0.011f, 0.0f,0.0f,0.0f, 0.125f, 0.95f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
532 FSOUND_PRESET_FOREST = 15, 38.0f, 0.30f, -1000, -3300, 0, 1.49f, 0.54f, 1.0f, -2560, 0.162f, 0.0f,0.0f,0.0f, -229, 0.088f, 0.0f,0.0f,0.0f, 0.125f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 79.0f, 100.0f, 0x3f ;
533 FSOUND_PRESET_CITY = 16, 7.5f, 0.50f, -1000, -800, 0, 1.49f, 0.67f, 1.0f, -2273, 0.007f, 0.0f,0.0f,0.0f, -1691, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 50.0f, 100.0f, 0x3f ;
534 FSOUND_PRESET_MOUNTAINS = 17, 100.0f, 0.27f, -1000, -2500, 0, 1.49f, 0.21f, 1.0f, -2780, 0.300f, 0.0f,0.0f,0.0f, -1434, 0.100f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 27.0f, 100.0f, 0x1f ;
535 FSOUND_PRESET_QUARRY = 18, 17.5f, 1.00f, -1000, -1000, 0, 1.49f, 0.83f, 1.0f, -10000, 0.061f, 0.0f,0.0f,0.0f, 500, 0.025f, 0.0f,0.0f,0.0f, 0.125f, 0.70f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
536 FSOUND_PRESET_PLAIN = 19, 42.5f, 0.21f, -1000, -2000, 0, 1.49f, 0.50f, 1.0f, -2466, 0.179f, 0.0f,0.0f,0.0f, -1926, 0.100f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 21.0f, 100.0f, 0x3f ;
537 FSOUND_PRESET_PARKINGLOT = 20, 8.3f, 1.00f, -1000, 0, 0, 1.65f, 1.50f, 1.0f, -1363, 0.008f, 0.0f,0.0f,0.0f, -1153, 0.012f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
538 FSOUND_PRESET_SEWERPIPE = 21, 1.7f, 0.80f, -1000, -1000, 0, 2.81f, 0.14f, 1.0f, 429, 0.014f, 0.0f,0.0f,0.0f, 1023, 0.021f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 80.0f, 60.0f, 0x3f ;
539 FSOUND_PRESET_UNDERWATER = 22, 1.8f, 1.00f, -1000, -4000, 0, 1.49f, 0.10f, 1.0f, -449, 0.007f, 0.0f,0.0f,0.0f, 1700, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 1.18f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
540
541// Non I3DL2 presets
542
543 FSOUND_PRESET_DRUGGED = 23, 1.9f, 0.50f, -1000, 0, 0, 8.39f, 1.39f, 1.0f, -115, 0.002f, 0.0f,0.0f,0.0f, 985, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
544 FSOUND_PRESET_DIZZY = 24, 1.8f, 0.60f, -1000, -400, 0, 17.23f, 0.56f, 1.0f, -1713, 0.020f, 0.0f,0.0f,0.0f, -613, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.81f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
545 FSOUND_PRESET_PSYCHOTIC = 25, 1.0f, 0.50f, -1000, -151, 0, 7.56f, 0.91f, 1.0f, -626, 0.020f, 0.0f,0.0f,0.0f, 774, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 4.00f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
546}
547// [DEFINE_END]
548
549
550{
551[STRUCTURE]
552[
553 [DESCRIPTION]
554 Structure defining the properties for a reverb source, related to a FSOUND channel.
555 For more indepth descriptions of the reverb properties under win32, please see the EAX3
556 documentation at http://developer.creative.com/ under the 'downloads' section.
557 If they do not have the EAX3 documentation, then most information can be attained from
558 the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
559 EAX2.
560
561 Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset.
562 Note that integer values that typically range from -10,000 to 1000 are represented in
563 decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
564 PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).
565 Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
566 the reverb should product a similar effect on either platform.
567 Linux and FMODCE do not support the reverb api.
568
569 The numerical values listed below are the maximum, minimum and default values for each variable respectively.
570
571 [SEE_ALSO]
572 FSOUND_Reverb_SetChannelProperties
573 FSOUND_Reverb_GetChannelProperties
574 FSOUND_REVERB_CHANNELFLAGS
575]
576}
577type
578 TFSoundReverbChannelProperties = record // MIN MAX DEFAULT
579 Direct: Integer; // -10000 1000 0 direct path level (at low and mid frequencies) (win32/xbox)
580 DirectHF: Integer; // -10000 0 0 relative direct path level at high frequencies (win32/xbox)
581 Room: Integer; // -10000 1000 0 room effect level (at low and mid frequencies) (win32/xbox)
582 RoomHF: Integer; // -10000 0 0 relative room effect level at high frequencies (win32/xbox)
583 Obstruction: Integer; // -10000 0 0 main obstruction control (attenuation at high frequencies) (win32/xbox)
584 ObstructionLFRatio: Single; // 0.0 1.0 0.0 obstruction low-frequency level re. main control (win32/xbox)
585 Occlusion: Integer; // -10000 0 0 main occlusion control (attenuation at high frequencies) (win32/xbox)
586 OcclusionLFRatio: Single; // 0.0 1.0 0.25 occlusion low-frequency level re. main control (win32/xbox)
587 OcclusionRoomRatio: Single; // 0.0 10.0 1.5 relative occlusion control for room effect (win32)
588 OcclusionDirectRatio: Single; // 0.0 10.0 1.0 relative occlusion control for direct path (win32)
589 Exclusion: Integer; // -10000 0 0 main exlusion control (attenuation at high frequencies) (win32)
590 ExclusionLFRatio: Single; // 0.0 1.0 1.0 exclusion low-frequency level re. main control (win32)
591 OutsideVolumeHF: Integer; // -10000 0 0 outside sound cone level at high frequencies (win32)
592 DopplerFactor: Single; // 0.0 10.0 0.0 like DS3D flDopplerFactor but per source (win32)
593 RolloffFactor: Single; // 0.0 10.0 0.0 like DS3D flRolloffFactor but per source (win32)
594 RoomRolloffFactor: Single; // 0.0 10.0 0.0 like DS3D flRolloffFactor but for room effect (win32/xbox)
595 AirAbsorptionFactor: Single; // 0.0 10.0 1.0 multiplies AirAbsorptionHF member of FSOUND_REVERB_PROPERTIES (win32)
596 Flags: Integer; // FSOUND_REVERB_CHANNELFLAGS - modifies the behavior of properties (win32)
597 end;
598// [STRUCT_END]
599
600{
601[DEFINE_START]
602[
603 [NAME]
604 FSOUND_REVERB_CHANNELFLAGS
605
606 [DESCRIPTION]
607 Values for the Flags member of the FSOUND_REVERB_CHANNELPROPERTIES structure.
608
609 [SEE_ALSO]
610 FSOUND_REVERB_CHANNELPROPERTIES
611]
612}
613const
614 FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO = $01; // Automatic setting of 'Direct' due to distance from listener
615 FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO = $02; // Automatic setting of 'Room' due to distance from listener
616 FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO = $04; // Automatic setting of 'RoomHF' due to distance from listener
617 FSOUND_REVERB_CHANNELFLAGS_DEFAULT = FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO or
618 FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO or
619 FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO;
620// [DEFINE_END]
621
622
623{
624[ENUM]
625[
626 [DESCRIPTION]
627 These values are used with FSOUND_FX_Enable to enable DirectX 8 FX for a channel.
628
629 [SEE_ALSO]
630 FSOUND_FX_Enable
631 FSOUND_FX_Disable
632 FSOUND_FX_SetChorus
633 FSOUND_FX_SetCompressor
634 FSOUND_FX_SetDistortion
635 FSOUND_FX_SetEcho
636 FSOUND_FX_SetFlanger
637 FSOUND_FX_SetGargle
638 FSOUND_FX_SetI3DL2Reverb
639 FSOUND_FX_SetParamEQ
640 FSOUND_FX_SetWavesReverb
641]
642}
643
644type
645 TFSoundFXModes = (
646 FSOUND_FX_CHORUS,
647 FSOUND_FX_COMPRESSOR,
648 FSOUND_FX_DISTORTION,
649 FSOUND_FX_ECHO,
650 FSOUND_FX_FLANGER,
651 FSOUND_FX_GARGLE,
652 FSOUND_FX_I3DL2REVERB,
653 FSOUND_FX_PARAMEQ,
654 FSOUND_FX_WAVES_REVERB,
655 FSOUND_FX_MAX
656 );
657// [DEFINE_END]
658
659
660{
661[ENUM]
662[
663 [DESCRIPTION]
664 These are speaker types defined for use with the FSOUND_SetSpeakerMode command.
665 Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only
666 interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
667
668 [SEE_ALSO]
669 FSOUND_SetSpeakerMode
670
671 [REMARKS]
672 Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only
673 interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
674
675 Using either DolbyDigital or DTS will use whatever 5.1 digital mode is available if destination hardware is unsure.
676]
677}
678type
679 TFSoundSpeakerModes =
680 (
681 FSOUND_SPEAKERMODE_DOLBYDIGITAL, // The audio is played through a speaker arrangement of surround speakers with a subwoofer.
682 FSOUND_SPEAKERMODE_HEADPHONES, // The speakers are headphones.
683 FSOUND_SPEAKERMODE_MONO, // The speakers are monaural.
684 FSOUND_SPEAKERMODE_QUAD, // The speakers are quadraphonic.
685 FSOUND_SPEAKERMODE_STEREO, // The speakers are stereo (default value).
686 FSOUND_SPEAKERMODE_SURROUND, // The speakers are surround sound.
687 FSOUND_SPEAKERMODE_DTS // The audio is played through a speaker arrangement of surround speakers with a subwoofer.
688 );
689 FSOUND_SPEAKERMODES = TFSoundSpeakerModes;
690
691
692{
693[DEFINE_START]
694[
695 [NAME]
696 FSOUND_INIT_FLAGS
697
698 [DESCRIPTION]
699 Initialization flags. Use them with FSOUND_Init in the flags parameter to change various behaviour.
700
701 FSOUND_INIT_ENABLESYSTEMCHANNELFX Is an init mode which enables the FSOUND mixer buffer to be affected by DirectX 8 effects.
702 Note that due to limitations of DirectSound, FSOUND_Init may fail if this is enabled because the buffersize is too small.
703 This can be fixed with FSOUND_SetBufferSize. Increase the BufferSize until it works.
704 When it is enabled you can use the FSOUND_FX api, and use FSOUND_SYSTEMCHANNEL as the channel id when setting parameters.
705
706 [SEE_ALSO]
707 FSOUND_Init
708]
709}
710const
711 FSOUND_INIT_USEDEFAULTMIDISYNTH = $01; // Causes MIDI playback to force software decoding.
712 FSOUND_INIT_GLOBALFOCUS = $02; // For DirectSound output - sound is not muted when window is out of focus.
713 FSOUND_INIT_ENABLESYSTEMCHANNELFX = $04; // For DirectSound output - Allows FSOUND_FX api to be used on global software mixer output!
714 FSOUND_INIT_ACCURATEVULEVELS = $08; // This latency adjusts FSOUND_GetCurrentLevels, but incurs a small cpu and memory hit.
715 FSOUND_INIT_PS2_DISABLECORE0REVERB = $10; // PS2 only - Disable reverb on CORE 0 to regain SRAM.
716 FSOUND_INIT_PS2_DISABLECORE1REVERB = $20; // PS2 only - Disable reverb on CORE 1 to regain SRAM.
717 FSOUND_INIT_PS2_SWAPDMACORES = $40; // PS2 only - By default FMOD uses DMA CH0 for mixing, CH1 for uploads, this flag swaps them around.
718 FSOUND_INIT_DONTLATENCYADJUST = $80; // Callbacks are not latency adjusted, and are called at mix time. Also information functions are immediate.
719 FSOUND_INIT_GC_INITLIBS = $100; // Gamecube only - Initializes GC audio libraries.
720 FSOUND_INIT_STREAM_FROM_MAIN_THREAD = $200; // Turns off fmod streamer thread, and makes streaming update from FSOUND_Update called by the user.
721 FSOUND_INIT_PS2_USEVOLUMERAMPING = $400; // PS2 only - Turns on volume ramping system to remove hardware clicks.
722 FSOUND_INIT_DSOUND_DEFERRED = $800; // Win32 only - For DirectSound output. 3D commands are batched together and executed at FSOUND_Update.
723 FSOUND_INIT_DSOUND_HRTF_LIGHT = $1000; // Win32 only - For DirectSound output. FSOUND_HW3D buffers use a slightly higher quality algorithm when 3d hardware acceleration is not present.
724 FSOUND_INIT_DSOUND_HRTF_FULL = $2000; // Win32 only - For DirectSound output. FSOUND_HW3D buffers use full quality 3d playback when 3d hardware acceleration is not present.
725 FSOUND_INIT_XBOX_REMOVEHEADROOM = $4000; // 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.
726 FSOUND_INIT_PSP_SILENCEONUNDERRUN = $8000; // PSP only - If streams skip / stutter when device is powered on, either increase stream buffersize, or use this flag instead to play silence while the UMD is recovering.
727
728// [DEFINE_END]
729
730(*
731[ENUM]
732[
733 [DESCRIPTION]
734 Status values for internet streams. Use FSOUND_Stream_Net_GetStatus to get the current status of an internet stream.
735
736 [SEE_ALSO]
737 FSOUND_Stream_Net_GetStatus
738]
739*)
740type
741 TFSoundStreamNetStatus =
742 (
743 FSOUND_STREAM_NET_NOTCONNECTED, (* Stream hasn't connected yet *)
744 FSOUND_STREAM_NET_CONNECTING, (* Stream is connecting to remote host *)
745 FSOUND_STREAM_NET_BUFFERING, (* Stream is buffering data *)
746 FSOUND_STREAM_NET_READY, (* Stream is ready to play *)
747 FSOUND_STREAM_NET_ERROR (* Stream has suffered a fatal error *)
748 );
749
750
751(*
752[ENUM]
753[
754 [DESCRIPTION]
755 Describes the type of a particular tag field.
756
757 [SEE_ALSO]
758 FSOUND_Stream_GetNumTagFields
759 FSOUND_Stream_GetTagField
760 FSOUND_Stream_FindTagField
761]
762*)
763type
764 TFSoundTagFieldType =
765 (
766 FSOUND_TAGFIELD_VORBISCOMMENT, (* A vorbis comment *)
767 FSOUND_TAGFIELD_ID3V1, (* Part of an ID3v1 tag *)
768 FSOUND_TAGFIELD_ID3V2, (* An ID3v2 frame *)
769 FSOUND_TAGFIELD_SHOUTCAST, (* A SHOUTcast header line *)
770 FSOUND_TAGFIELD_ICECAST, (* An Icecast header line *)
771 FSOUND_TAGFIELD_ASF (* An Advanced Streaming Format header line *)
772 );
773
774
775(*
776[DEFINE_START]
777[
778 [NAME]
779 FSOUND_STATUS_FLAGS
780
781 [DESCRIPTION]
782 These values describe the protocol and format of an internet stream. Use FSOUND_Stream_Net_GetStatus to retrieve this information for an open internet stream.
783
784 [SEE_ALSO]
785 FSOUND_Stream_Net_GetStatus
786]
787*)
788const
789 FSOUND_PROTOCOL_SHOUTCAST = $00000001;
790 FSOUND_PROTOCOL_ICECAST = $00000002;
791 FSOUND_PROTOCOL_HTTP = $00000004;
792 FSOUND_FORMAT_MPEG = $00010000;
793 FSOUND_FORMAT_OGGVORBIS = $00020000;
794(* [DEFINE_END] *)
795
796{
797[STRUCTURE]
798[
799 [DESCRIPTION]
800 Structure defining a CD table of contents. This structure is returned as a tag from FSOUND_Stream_FindTagField when the tag name "CD_TOC" is specified.
801 Note: All tracks on the CD - including data tracks- will be represented in this structure so it's use for anything other than generating disc id information is not recommended.
802 See the cdda example program for info on retrieving and using this structure.
803
804 [SEE_ALSO]
805 FSOUND_Stream_Open
806 FSOUND_Stream_FindTagField
807]
808}
809type
810 TFSoundTOCTag = record
811 Name: array [0..3] of Char; // The string "TOC" (4th character is 0), just in case this structure is accidentally treated as a string.
812 NumTracks: Integer; // The number of tracks on the CD.
813 Min: array [0..99] of Integer; // The start offset of each track in minutes.
814 Sec: array [0..99] of Integer; // The start offset of each track in seconds.
815 Frame: array [0..99] of Integer; // The start offset of each track in frames.
816 end;
817// [STRUCT_END]
818
819implementation
820
821end.
Note: See TracBrowser for help on using the repository browser.