~chronoscz/tunneler/trunk

« back to all changes in this revision

Viewing changes to Components/CoolAudio/Systems/FMOD/fmoddyn.pas

  • Committer: chronos
  • Date: 2019-04-22 18:39:21 UTC
  • Revision ID: svn-v4:e6b484fe-af7b-4e01-be74-c442420b0ac4:trunk:46
* Modified: Components directory renamed to Packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
{============================================================================================ }
2
 
{ FMOD Main header file. Copyright (c), FireLight Technologies Pty, Ltd. 1999-2003.           }
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
 
 
22
 
unit fmoddyn;
23
 
 
24
 
{
25
 
  Disable assertions by changing the following compiler directive to OFF.
26
 
  Assertions are used to check the functions are correctly loaded when using
27
 
  dynamic loading.
28
 
}
29
 
{$ASSERTIONS ON}
30
 
 
31
 
interface
32
 
 
33
 
{$IFDEF MSWINDOWS}
34
 
  {$define WINDOWS}
35
 
{$ENDIF}
36
 
 
37
 
uses
38
 
{$IFDEF WINDOWS}
39
 
  Windows,
40
 
{$ENDIF}
41
 
  fmodtypes;
42
 
 
43
 
{
44
 
  Disable warning for unsafe types in Delphi 7
45
 
}
46
 
{$IFDEF VER150}
47
 
{$WARN UNSAFE_TYPE OFF}
48
 
{$ENDIF}
49
 
 
50
 
//===============================================================================================
51
 
// FUNCTION PROTOTYPES
52
 
//===============================================================================================
53
 
 
54
 
{ ================================== }
55
 
{ Library load/unload functions.     }
56
 
{ ================================== }
57
 
 
58
 
{
59
 
  If no library name is passed to FMOD_Load, then the default library name
60
 
  used.
61
 
}
62
 
 
63
 
function FMOD_Load(LibName: PChar {$ifndef FPC}= nil{$endif}): Boolean;
64
 
procedure FMOD_Unload;
65
 
 
66
 
{ ================================== }
67
 
{ Initialization / Global functions. }
68
 
{ ================================== }
69
 
 
70
 
{
71
 
  Pre FSOUND_Init functions. These can't be called after FSOUND_Init is
72
 
  called (they will fail). They set up FMOD system functionality.
73
 
}
74
 
 
75
 
var
76
 
  FSOUND_SetOutput: function (OutputType: TFSoundOutputTypes): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
77
 
  FSOUND_SetDriver: function (Driver: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
78
 
  FSOUND_SetMixer: function (Mixer: TFSoundMixerTypes): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
79
 
  FSOUND_SetBufferSize: function (LenMs: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
80
 
  FSOUND_SetHWND: function (Hwnd: THandle): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
81
 
  FSOUND_SetMinHardwareChannels: function (Min: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
82
 
  FSOUND_SetMaxHardwareChannels: function (Max: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
83
 
  FSOUND_SetMemorySystem: function (Pool: Pointer;
84
 
        PoolLen: Integer;
85
 
        UserAlloc: TFSoundAllocCallback;
86
 
        UserRealloc: TFSoundReallocCallback;
87
 
        UserFree: TFSoundFreeCallback): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
88
 
 
89
 
{
90
 
  Main initialization / closedown functions
91
 
  Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override with MIDI playback.
92
 
       : Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible
93
 
         no matter which window is in focus. (FSOUND_OUTPUT_DSOUND only)
94
 
}
95
 
 
96
 
var
97
 
  FSOUND_Init: function (MixRate: Integer; MaxSoftwareChannels: Integer; Flags: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
98
 
  FSOUND_Close: procedure; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
99
 
 
100
 
{
101
 
  Runtime system level functions
102
 
}
103
 
 
104
 
var
105
 
  FSOUND_Update: procedure; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};  // This is called to update 3d sound / non-realtime output
106
 
  FSOUND_SetSpeakerMode: procedure (SpeakerMode: Cardinal); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
107
 
  FSOUND_SetSFXMasterVolume: procedure (Volume: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
108
 
  FSOUND_SetPanSeperation: procedure (PanSep: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
109
 
  FSOUND_File_SetCallbacks: procedure (OpenCallback: TFSoundOpenCallback;
110
 
                                       CloseCallback: TFSoundCloseCallback;
111
 
                                       ReadCallback: TFSoundReadCallback;
112
 
                                       SeekCallback: TFSoundSeekCallback;
113
 
                                       TellCallback: TFSoundTellCallback); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
114
 
 
115
 
{
116
 
  System information functions
117
 
}
118
 
 
119
 
var
120
 
  FSOUND_GetError: function: TFModErrors; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
121
 
  FSOUND_GetVersion: function: Single; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
122
 
  FSOUND_GetOutput: function: TFSoundOutputTypes; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
123
 
  FSOUND_GetOutputHandle: function: Pointer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
124
 
  FSOUND_GetDriver: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
125
 
  FSOUND_GetMixer: function: TFSoundMixerTypes; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
126
 
  FSOUND_GetNumDrivers: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
127
 
  FSOUND_GetDriverName: function (Id: Integer): PChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
128
 
  FSOUND_GetDriverCaps: function (Id: Integer; var Caps: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
129
 
 
130
 
var
131
 
  FSOUND_GetOutputRate: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
132
 
  FSOUND_GetMaxChannels: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
133
 
  FSOUND_GetMaxSamples: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
134
 
  FSOUND_GetSpeakerMode: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
135
 
  FSOUND_GetSFXMasterVolume: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
136
 
  FSOUND_GetNumHWChannels: function (var Num2D: Integer; var Num3D: Integer; var Total: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
137
 
  FSOUND_GetChannelsPlaying: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
138
 
  FSOUND_GetCPUUsage: function: Single; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
139
 
  FSOUND_GetMemoryStats: Procedure (var CurrentAlloced: Cardinal; var MaxAlloced: Cardinal); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
140
 
 
141
 
{ =================================== }
142
 
{ Sample management / load functions. }
143
 
{ =================================== }
144
 
 
145
 
{
146
 
  Sample creation and management functions
147
 
  Note : Use FSOUND_LOADMEMORY   flag with FSOUND_Sample_Load to load from memory.
148
 
         Use FSOUND_LOADRAW      flag with FSOUND_Sample_Load to treat as as raw pcm data.
149
 
}
150
 
 
151
 
var
152
 
  FSOUND_Sample_Load: function (Index: Integer; const NameOrData: PChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
153
 
  FSOUND_Sample_Alloc: function (Index: Integer; Length: Integer; Mode: Cardinal; DefFreq: Integer; DefVol: Integer; DefPan: Integer; DefPri: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
154
 
  FSOUND_Sample_Free: procedure (Sptr: PFSoundSample); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
155
 
  FSOUND_Sample_Upload: function (Sptr: PFSoundSample; SrcData: Pointer; Mode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
156
 
  FSOUND_Sample_Lock: function (Sptr: PFSoundSample; Offset: Integer; Length: Integer; var Ptr1: Pointer; var Ptr2: Pointer; var Len1: Cardinal; var Len2: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
157
 
  FSOUND_Sample_Unlock: function (Sptr: PFSoundSample; Ptr1: Pointer; Ptr2: Pointer; Len1: Cardinal; Len2: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
158
 
 
159
 
{
160
 
  Sample control functions
161
 
}
162
 
 
163
 
var
164
 
  FSOUND_Sample_SetMode: function (Sptr: PFSoundSample; Mode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
165
 
  FSOUND_Sample_SetLoopPoints: function (Sptr: PFSoundSample; LoopStart, LoopEnd: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
166
 
  FSOUND_Sample_SetDefaults: function (Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
167
 
  FSOUND_Sample_SetDefaultsEx: function (Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri, VarFreq, VarVol, VarPan: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
168
 
  FSOUND_Sample_SetMinMaxDistance: function (Sptr: PFSoundSample; Min, Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
169
 
  FSOUND_Sample_SetMaxPlaybacks: function (Sptr: PFSoundSample; Max: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
170
 
 
171
 
{
172
 
  Sample information functions
173
 
}
174
 
 
175
 
var
176
 
  FSOUND_Sample_Get: function (SampNo: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
177
 
  FSOUND_Sample_GetName: function (Sptr: PFSoundSample): PCHAR; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
178
 
  FSOUND_Sample_GetLength: function (Sptr: PFSoundSample): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
179
 
  FSOUND_Sample_GetLoopPoints: function (Sptr: PFSoundSample; var LoopStart: Integer; var LoopEnd: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
180
 
  FSOUND_Sample_GetDefaults: function (Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
181
 
  FSOUND_Sample_GetDefaultsEx: function (Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer; var VarFreq: Integer; var VarVol: Integer; var VarPan): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
182
 
  FSOUND_Sample_GetMode: function (Sptr: PFSoundSample): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
183
 
  FSOUND_Sample_GetMinMaxDistance: function (Sptr: PFSoundSample; var Min: Single; var Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
184
 
 
185
 
{ ============================ }
186
 
{ Channel control functions.   }
187
 
{ ============================ }
188
 
 
189
 
{
190
 
  Playing and stopping sounds.
191
 
  Note : Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
192
 
         Use FSOUND_ALL as the 'channel' variable to control ALL channels with one function call!
193
 
}
194
 
 
195
 
var
196
 
  FSOUND_PlaySound: function (Channel: Integer; Sptr: PFSoundSample): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
197
 
  FSOUND_PlaySoundEx: function (Channel: Integer; Sptr: PFSoundSample; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
198
 
  FSOUND_StopSound: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
199
 
 
200
 
{
201
 
  Functions to control playback of a channel.
202
 
}
203
 
 
204
 
var
205
 
  FSOUND_SetFrequency: function (Channel: Integer; Freq: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
206
 
  FSOUND_SetVolume: function (Channel: Integer; Vol: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
207
 
  FSOUND_SetVolumeAbsolute: function (Channel: Integer; Vol: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
208
 
  FSOUND_SetPan: function (Channel: Integer; Pan: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
209
 
  FSOUND_SetSurround: function (Channel: Integer; Surround: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
210
 
  FSOUND_SetMute: function (Channel: Integer; Mute: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
211
 
  FSOUND_SetPriority: function (Channel: Integer; Priority: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
212
 
  FSOUND_SetReserved: function (Channel: Integer; Reserved: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
213
 
  FSOUND_SetPaused: function (Channel: Integer; Paused: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
214
 
  FSOUND_SetLoopMode: function (Channel: Integer; LoopMode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
215
 
  FSOUND_SetCurrentPosition: function (Channel: Integer; Offset: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
216
 
  FSOUND_3D_SetAttributes: function (Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
217
 
  FSOUND_3D_SetMinMaxDistance: function (Channel: Integer; Min: Single; Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
218
 
 
219
 
{
220
 
  Channel information functions
221
 
}
222
 
 
223
 
var
224
 
  FSOUND_IsPlaying: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
225
 
  FSOUND_GetFrequency: function (Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
226
 
  FSOUND_GetVolume: function (Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
227
 
  FSOUND_GetAmplitude: function (Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
228
 
  FSOUND_GetPan: function (Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
229
 
  FSOUND_GetSurround: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
230
 
  FSOUND_GetMute: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
231
 
  FSOUND_GetPriority: function (Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
232
 
  FSOUND_GetReserved: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
233
 
  FSOUND_GetPaused: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
234
 
  FSOUND_GetLoopMode: function (Channel: Integer): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
235
 
  FSOUND_GetCurrentPosition: function (Channel: Integer): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
236
 
  FSOUND_GetCurrentSample: function (Channel: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
237
 
  FSOUND_GetCurrentLevels: function (Channel: Integer; L, R: PSingle): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
238
 
  FSOUND_GetNumSubChannels: function (Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
239
 
  FSOUND_GetSubChannel: function (Channel: Integer; SubChannel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
240
 
  FSOUND_3D_GetAttributes: function (Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
241
 
  FSOUND_3D_GetMinMaxDistance: function (Channel: Integer; var Min: Single; var Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
242
 
 
243
 
{ =================== }
244
 
{ 3D sound functions. }
245
 
{ =================== }
246
 
 
247
 
{
248
 
    See also 3d sample and channel based functions above.
249
 
    Call FSOUND_Update once a frame to process 3d information.
250
 
}
251
 
 
252
 
var
253
 
  FSOUND_3D_Listener_SetCurrent: procedure (current: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
254
 
  FSOUND_3D_Listener_SetAttributes: procedure (Pos: PFSoundVector; Vel: PFSoundVector;
255
 
                                               fx: Single; fy: Single; fz: Single;
256
 
                                               tx: Single; ty: Single; tz: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
257
 
  FSOUND_3D_Listener_GetAttributes: procedure (Pos: PFSoundVector; Vel: PFSoundVector;
258
 
                                               fx: PSingle; fy: PSingle; fz: PSingle;
259
 
                                               tx: PSingle; ty: PSingle; tz: PSingle); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
260
 
  FSOUND_3D_SetDopplerFactor: procedure (Scale: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
261
 
  FSOUND_3D_SetDistanceFactor: procedure (Scale: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
262
 
  FSOUND_3D_SetRolloffFactor: procedure (Scale: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
263
 
 
264
 
{ =================== }
265
 
{ FX functions.       }
266
 
{ =================== }
267
 
 
268
 
{
269
 
    Functions to control DX8 only effects processing.
270
 
 
271
 
    - FX enabled samples can only be played once at a time, not multiple times at once.
272
 
    - Sounds have to be created with FSOUND_HW2D or FSOUND_HW3D for this to work.
273
 
    - FSOUND_INIT_ENABLESYSTEMCHANNELFX can be used to apply hardware effect processing to the
274
 
      global mixed output of FMOD's software channels.
275
 
    - FSOUND_FX_Enable returns an FX handle that you can use to alter fx parameters.
276
 
    - FSOUND_FX_Enable can be called multiple times in a row, even on the same FX type,
277
 
      it will return a unique handle for each FX.
278
 
    - FSOUND_FX_Enable cannot be called if the sound is playing or locked.
279
 
    - Stopping or starting a sound resets all FX and they must be re-enabled each time
280
 
      if this happens.
281
 
}
282
 
 
283
 
var
284
 
  FSOUND_FX_Enable: function (Channel: Integer; Fx: TFSoundFXModes): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};    { Set bits to enable following fx }
285
 
  FSOUND_FX_Disable: function (Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
286
 
 
287
 
  FSOUND_FX_SetChorus: function (FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
288
 
  FSOUND_FX_SetCompressor: function (FXId: Integer; Gain, Attack, Release, Threshold, Ratio, Predelay: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
289
 
  FSOUND_FX_SetDistortion: function (FXId: Integer; Gain, Edge, PostEQCenterFrequency, PostEQBandwidth, PreLowpassCutoff: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
290
 
  FSOUND_FX_SetEcho: function (FXId: Integer; WetDryMix, Feedback, LeftDelay, RightDelay: Single; PanDelay: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
291
 
  FSOUND_FX_SetFlanger: function (FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
292
 
  FSOUND_FX_SetGargle: function (FXId, RateHz, WaveShape: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
293
 
  FSOUND_FX_SetI3DL2Reverb: function (FXId, Room, RoomHF: Integer; RoomRolloffFactor, DecayTime, DecayHFRatio: Single; Reflections: Integer; ReflectionsDelay: Single; Reverb: Integer; ReverbDelay, Diffusion, Density, HFReference: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
294
 
  FSOUND_FX_SetParamEQ: function (FXId: Integer; Center, Bandwidth, Gain: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
295
 
  FSOUND_FX_SetWavesReverb: function (FXId: Integer; InGain, ReverbMix, ReverbTime, HighFreqRTRatio: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
296
 
 
297
 
{ ========================= }
298
 
{ File Streaming functions. }
299
 
{ ========================= }
300
 
 
301
 
{
302
 
    Note : Use FSOUND_LOADMEMORY   flag with FSOUND_Stream_Open to stream from memory.
303
 
           Use FSOUND_LOADRAW      flag with FSOUND_Stream_Open to treat stream as raw pcm data.
304
 
           Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_Open to open mpegs in 'accurate mode' for settime/gettime/getlengthms.
305
 
           Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
306
 
}
307
 
 
308
 
var
309
 
  // call this before opening streams, not after
310
 
  FSOUND_Stream_SetBufferSize: function (Ms: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
311
 
 
312
 
  FSOUND_Stream_Open: function(const name_or_data: PChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundStream; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
313
 
  FSOUND_Stream_Create: function (Callback: TFSoundStreamCallback; Length: Integer; Mode: Cardinal; SampleRate: Integer; UserData: Integer): PFSoundStream; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
314
 
  FSOUND_Stream_Close: function(Stream: PFSoundStream): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
315
 
 
316
 
  FSOUND_Stream_Play: function(Channel: Integer; Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
317
 
  FSOUND_Stream_PlayEx: function (Channel: Integer; Stream: PFSoundStream; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
318
 
  FSOUND_Stream_Stop: function(Stream: PFSoundStream): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
319
 
 
320
 
  FSOUND_Stream_SetPosition: function (Stream: PFSoundStream; Position: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
321
 
  FSOUND_Stream_GetPosition: function (Stream: PFSoundStream): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
322
 
  FSOUND_Stream_SetTime: function (Stream: PFSoundStream; Ms: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
323
 
  FSOUND_Stream_GetTime: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
324
 
  FSOUND_Stream_GetLength: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
325
 
  FSOUND_Stream_GetLengthMs: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
326
 
 
327
 
  FSOUND_Stream_SetMode: function (Stream: PFSoundStream; mode: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
328
 
  FSOUND_Stream_GetMode: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
329
 
  FSOUND_Stream_SetLoopPoints: function (Stream: PFSoundStream; LoopStartPCM, LoopEndPCM: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
330
 
  FSOUND_Stream_SetLoopCount: function (Stream: PFSoundStream; Count: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
331
 
  FSOUND_Stream_GetOpenState: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
332
 
  FSOUND_Stream_GetSample: function (Stream: PFSoundStream): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF}; { Every stream contains a sample to play back on }
333
 
  FSOUND_Stream_CreateDSP: function (Stream: PFSoundStream; Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
334
 
 
335
 
  FSOUND_Stream_SetEndCallback: function (Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
336
 
  FSOUND_Stream_SetSyncCallback: function (Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
337
 
  
338
 
  FSOUND_Stream_AddSyncPoint: function (Stream: PFSoundStream; PCMOffset: Cardinal; Name: PChar): PFSyncPoint; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
339
 
  FSOUND_Stream_DeleteSyncPoint: function (Point: PFSyncPoint): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
340
 
  FSOUND_Stream_GetNumSyncPoints: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
341
 
  FSOUND_Stream_GetSyncPoint: function (Stream: PFSoundStream; Index: Integer): PFSyncPoint; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
342
 
  FSOUND_Stream_GetSyncPointInfo: function (Point: PFSyncPoint; var PCMOffset: Cardinal): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
343
 
 
344
 
  FSOUND_Stream_SetSubStream: function (Stream: PFSoundStream; Index: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
345
 
  FSOUND_Stream_GetNumSubStreams: function (Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
346
 
  FSOUND_Stream_SetSubStreamSentence: function (Stream: PFSoundStream; var sentencelist: Cardinal; numitems: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
347
 
                                                
348
 
  FSOUND_Stream_GetNumTagFields: function (Stream: PFSoundStream; var Num: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
349
 
  FSOUND_Stream_GetTagField: function (Stream: PFSoundStream; Num: Integer; var _Type: TFSoundTagFieldType; var Name: PCHAR; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
350
 
  FSOUND_Stream_FindTagField: function (Stream: PFSoundStream; _Type: TFSoundTagFieldType; Name: PChar; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
351
 
 
352
 
  FSOUND_Stream_Net_SetProxy: function (Proxy: PChar): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
353
 
  FSOUND_Stream_Net_GetLastServerStatus: function: PChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
354
 
  FSOUND_Stream_Net_SetBufferProperties: function (BufferSize: Integer; PreBuffer_Percent: Integer; ReBuffer_Percent:  Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
355
 
  FSOUND_Stream_Net_GetBufferProperties: function (var Buffersize: Integer; var PreBuffer_Percent: Integer;  var ReBuffer_Percent: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
356
 
  FSOUND_Stream_Net_SetMetadataCallback: function (Stream: PFSoundStream; Callback: TFMetaDataCallback; UserData: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
357
 
  FSOUND_Stream_Net_GetStatus: function (Stream: PFSoundStream; var Status: TFSoundStreamNetStatus; var BufferPercentUsed: Integer; var BitRate: Integer; var Flags: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
358
 
 
359
 
{ =================== }
360
 
{ CD audio functions. }
361
 
{ =================== }
362
 
 
363
 
{
364
 
    Note : 0 = default cdrom.  Otherwise specify the drive letter, for example. 'D'. 
365
 
}
366
 
 
367
 
var
368
 
  FSOUND_CD_Play: function (Drive: Byte; Track: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
369
 
  FSOUND_CD_SetPlayMode: procedure (Drive: Byte; Mode: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
370
 
  FSOUND_CD_Stop: function (Drive: Byte): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
371
 
  FSOUND_CD_SetPaused: function (Drive: Byte; Paused: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
372
 
  FSOUND_CD_SetVolume: function (Drive: Byte; Volume: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
373
 
  FSOUND_CD_SetTrackTime: function (Drive: Byte; ms: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
374
 
  FSOUND_CD_OpenTray: function (Drive: Byte; Open: Byte): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
375
 
 
376
 
var
377
 
  FSOUND_CD_GetPaused: function (Drive: Byte): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
378
 
  FSOUND_CD_GetTrack: function (Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
379
 
  FSOUND_CD_GetNumTracks: function (Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
380
 
  FSOUND_CD_GetVolume: function (Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
381
 
  FSOUND_CD_GetTrackLength: function (Drive: Byte; Track: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
382
 
  FSOUND_CD_GetTrackTime: function (Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
383
 
 
384
 
{ ============== }
385
 
{ DSP functions. }
386
 
{ ============== }
387
 
 
388
 
{
389
 
  DSP Unit control and information functions.
390
 
}
391
 
 
392
 
var
393
 
  FSOUND_DSP_Create: function (Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
394
 
  FSOUND_DSP_Free: procedure (DSPUnit: PFSoundDSPUnit); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
395
 
  FSOUND_DSP_SetPriority: procedure (DSPUnit: PFSoundDSPUnit; Priority: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
396
 
  FSOUND_DSP_GetPriority: function (DSPUnit: PFSoundDSPUnit): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
397
 
  FSOUND_DSP_SetActive: procedure (DSPUnit: PFSoundDSPUnit; Active: ByteBool); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
398
 
  FSOUND_DSP_GetActive: function (DSPUnit: PFSoundDSPUnit): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
399
 
 
400
 
{
401
 
  Functions to get hold of FSOUND 'system DSP unit' handles.
402
 
}
403
 
 
404
 
var
405
 
  FSOUND_DSP_GetClearUnit: function: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
406
 
  FSOUND_DSP_GetSFXUnit: function: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
407
 
  FSOUND_DSP_GetMusicUnit: function: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
408
 
  FSOUND_DSP_GetClipAndCopyUnit: function: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
409
 
  FSOUND_DSP_GetFFTUnit: function: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
410
 
 
411
 
{
412
 
  Miscellaneous DSP functions
413
 
  Note for the spectrum analysis function to work, you have to enable the FFT DSP unit with
414
 
  the following code FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE);
415
 
  It is off by default to save cpu usage.
416
 
}
417
 
 
418
 
var
419
 
  FSOUND_DSP_MixBuffers: function (DestBuffer: Pointer; SrcBuffer: Pointer; Len: Integer; Freq: Integer; Vol: Integer; Pan: Integer; Mode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
420
 
  FSOUND_DSP_ClearMixBuffer: procedure; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
421
 
  FSOUND_DSP_GetBufferLength: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};      { Length of each DSP update }
422
 
  FSOUND_DSP_GetBufferLengthTotal: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF}; { Total buffer length due to FSOUND_SetBufferSize }
423
 
  FSOUND_DSP_GetSpectrum: function: PSingle; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};          { Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. }
424
 
 
425
 
{ ========================================================================== }
426
 
{ Reverb functions. (eax2/eax3 reverb)  (NOT SUPPORTED IN UNIX/CE)               }
427
 
{ ========================================================================== }
428
 
 
429
 
{
430
 
  See structures above for definitions and information on the reverb parameters.
431
 
}
432
 
 
433
 
var
434
 
  FSOUND_Reverb_SetProperties: function (const Prop: TFSoundReverbProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
435
 
  FSOUND_Reverb_GetProperties: function (var Prop: TFSoundReverbProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
436
 
  FSOUND_Reverb_SetChannelProperties: function (Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
437
 
  FSOUND_Reverb_GetChannelProperties: function (Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
438
 
 
439
 
{ ================================================ }
440
 
{ Recording functions  (NOT SUPPORTED IN UNIX/MAC) }
441
 
{ ================================================ }
442
 
 
443
 
{
444
 
  Recording initialization functions
445
 
}
446
 
 
447
 
var
448
 
  FSOUND_Record_SetDriver: function (OutputType: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
449
 
  FSOUND_Record_GetNumDrivers: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
450
 
  FSOUND_Record_GetDriverName: function (Id: Integer): PChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
451
 
  FSOUND_Record_GetDriver: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
452
 
 
453
 
{
454
 
  Recording functionality. Only one recording session will work at a time.
455
 
}
456
 
 
457
 
var
458
 
  FSOUND_Record_StartSample: function (Sptr: PFSoundSample; Loop: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
459
 
  FSOUND_Record_Stop: function: ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
460
 
  FSOUND_Record_GetPosition: function: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
461
 
 
462
 
{ ============================================================================================= }
463
 
{ FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK)                                                      }
464
 
{ ============================================================================================= }
465
 
 
466
 
{
467
 
  Song management / playback functions.
468
 
}
469
 
 
470
 
var
471
 
  FMUSIC_LoadSong: function (const Name: PChar): PFMusicModule; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
472
 
  FMUSIC_LoadSongEx: function (Name_Or_Data: Pointer; Offset: Integer; Length: Integer; Mode: Cardinal; var SampleList: Integer; SampleListNum: Integer): PFMusicModule; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
473
 
  FMUSIC_GetOpenState: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
474
 
  FMUSIC_FreeSong: function (Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
475
 
  FMUSIC_PlaySong: function (Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
476
 
  FMUSIC_StopSong: function (Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
477
 
  FMUSIC_StopAllSongs: procedure; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
478
 
 
479
 
var
480
 
  FMUSIC_SetZxxCallback: function (Module: PFMusicModule; Callback: TFMusicCallback): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
481
 
  FMUSIC_SetRowCallback: function (Module: PFMusicModule; Callback: TFMusicCallback; RowStep: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
482
 
  FMUSIC_SetOrderCallback: function (Module: PFMusicModule; Callback: TFMusicCallback; OrderStep: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
483
 
  FMUSIC_SetInstCallback: function (Module: PFMusicModule; Callback: TFMusicCallback; Instrument: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
484
 
 
485
 
var
486
 
  FMUSIC_SetSample: function (Module: PFMusicModule; SampNo: Integer; Sptr: PFSoundSample): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
487
 
  FMUSIC_SetUserData: function (Module: PFMusicModule; userdata: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
488
 
  FMUSIC_OptimizeChannels: function (Module: PFMusicModule; MaxChannels: Integer; MinVolume: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
489
 
 
490
 
{
491
 
  Runtime song functions.
492
 
}
493
 
 
494
 
var
495
 
  FMUSIC_SetReverb: function (Reverb: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
496
 
  FMUSIC_SetLooping: function (Module: PFMusicModule; Looping: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
497
 
  FMUSIC_SetOrder: function (Module: PFMusicModule; Order: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
498
 
  FMUSIC_SetPaused: function (Module: PFMusicModule; Pause: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
499
 
  FMUSIC_SetMasterVolume: function (Module: PFMusicModule; Volume: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
500
 
  FMUSIC_SetMasterSpeed: function (Module: PFMusicModule; Speed: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
501
 
  FMUSIC_SetPanSeperation: function (Module: PFMusicModule; PanSep: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
502
 
 
503
 
{
504
 
  Static song information functions.
505
 
}
506
 
 
507
 
var
508
 
  FMUSIC_GetName: function (Module: PFMusicModule): PCHAR; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
509
 
  FMUSIC_GetType: function (Module: PFMusicModule): TFMusicTypes; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
510
 
  FMUSIC_GetNumOrders: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
511
 
  FMUSIC_GetNumPatterns: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
512
 
  FMUSIC_GetNumInstruments: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
513
 
  FMUSIC_GetNumSamples: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
514
 
  FMUSIC_GetNumChannels: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
515
 
  FMUSIC_GetSample: function (Module: PFMusicModule; SampNo: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
516
 
  FMUSIC_GetPatternLength: function (Module: PFMusicModule; OrderNo: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
517
 
 
518
 
{
519
 
  Runtime song information.
520
 
}
521
 
 
522
 
var
523
 
  FMUSIC_IsFinished: function (Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
524
 
  FMUSIC_IsPlaying: function (Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
525
 
  FMUSIC_GetMasterVolume: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
526
 
  FMUSIC_GetGlobalVolume: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
527
 
  FMUSIC_GetOrder: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
528
 
  FMUSIC_GetPattern: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
529
 
  FMUSIC_GetSpeed: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
530
 
  FMUSIC_GetBPM: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
531
 
  FMUSIC_GetRow: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
532
 
  FMUSIC_GetPaused: function (Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
533
 
  FMUSIC_GetTime: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
534
 
  FMUSIC_GetRealChannel: function (Module: PFMusicModule; ModChannel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
535
 
  FMUSIC_GetUserData: function (Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
536
 
 
537
 
implementation
538
 
 
539
 
{$IFDEF UNIX}
540
 
uses
541
 
  dl; //Libc;
542
 
{$ENDIF}
543
 
 
544
 
const
545
 
{$IFDEF UNIX}
546
 
  FMOD_DLL = 'libfmod.so';
547
 
{$ENDIF}
548
 
{$IFDEF WINDOWS}
549
 
  FMOD_DLL = 'fmod.dll';
550
 
{$ENDIF}
551
 
 
552
 
type
553
 
{$IFDEF UNIX}
554
 
  TFMODModuleHandle = Pointer;
555
 
{$ELSE}
556
 
  TFMODModuleHandle = HINST;
557
 
{$ENDIF}
558
 
 
559
 
const
560
 
{$IFDEF UNIX}
561
 
  INVALID_MODULEHANDLE_VALUE = TFMODModuleHandle(nil);
562
 
{$ELSE}
563
 
  INVALID_MODULEHANDLE_VALUE = TFMODModuleHandle(0);
564
 
{$ENDIF}
565
 
 
566
 
var
567
 
  FMODHandle: TFMODModuleHandle;
568
 
 
569
 
function GetAddress(Handle: TFMODModuleHandle; FuncName: PChar): Pointer;
570
 
begin
571
 
{$IFDEF WINDOWS}
572
 
  Result := GetProcAddress(Handle, FuncName);
573
 
{$ELSE}
574
 
  Result := dlsym(Handle, FuncName);
575
 
{$ENDIF}
576
 
  Assert(Result <> nil, 'Failed to find ' + FuncName + ' in ' + FMOD_DLL);
577
 
end;
578
 
 
579
 
function FMOD_Load(LibName: PChar): Boolean;
580
 
begin
581
 
  Result := False;
582
 
 
583
 
  { Make sure the previous library is unloaded }
584
 
  FMOD_Unload;
585
 
 
586
 
  { If no library name given, use the default library names }
587
 
  if (LibName = nil) or (LibName='') then
588
 
    LibName := FMOD_DLL;
589
 
  writeln('loading');
590
 
  { Load the library }
591
 
{$IFDEF WINDOWS}
592
 
  FMODHandle := LoadLibrary(LibName);
593
 
{$ELSE}
594
 
  FMODHandle := dlopen(LibName, RTLD_NOW);
595
 
{$ENDIF}
596
 
 
597
 
  if FMODHandle = INVALID_MODULEHANDLE_VALUE then
598
 
    Exit;
599
 
 
600
 
{$IFDEF WINDOWS}
601
 
  { Get all the function addresses from the library }
602
 
  pointer(FSOUND_SetOutput)                      := GetAddress(FMODHandle, '_FSOUND_SetOutput@4');
603
 
  pointer(FSOUND_SetDriver)                      := GetAddress(FMODHandle, '_FSOUND_SetDriver@4');
604
 
  pointer(FSOUND_SetMixer)                       := GetAddress(FMODHandle, '_FSOUND_SetMixer@4');
605
 
  pointer(FSOUND_SetBufferSize)                  := GetAddress(FMODHandle, '_FSOUND_SetBufferSize@4');
606
 
  pointer(FSOUND_SetHWND)                        := GetAddress(FMODHandle, '_FSOUND_SetHWND@4');
607
 
  pointer(FSOUND_SetMinHardwareChannels)         := GetAddress(FMODHandle, '_FSOUND_SetMinHardwareChannels@4');
608
 
  pointer(FSOUND_SetMaxHardwareChannels)         := GetAddress(FMODHandle, '_FSOUND_SetMaxHardwareChannels@4');
609
 
  pointer(FSOUND_SetMemorySystem)                := GetAddress(FMODHandle, '_FSOUND_SetMemorySystem@20');
610
 
  pointer(FSOUND_Init)                           := GetAddress(FMODHandle, '_FSOUND_Init@12');
611
 
  pointer(FSOUND_Close)                          := GetAddress(FMODHandle, '_FSOUND_Close@0');
612
 
  pointer(FSOUND_Update)                         := GetAddress(FMODHandle, '_FSOUND_Update@0');
613
 
  pointer(FSOUND_SetSpeakerMode)                 := GetAddress(FMODHandle, '_FSOUND_SetSpeakerMode@4');
614
 
  pointer(FSOUND_SetSFXMasterVolume)             := GetAddress(FMODHandle, '_FSOUND_SetSFXMasterVolume@4');
615
 
  pointer(FSOUND_SetPanSeperation)               := GetAddress(FMODHandle, '_FSOUND_SetPanSeperation@4');
616
 
  pointer(FSOUND_GetError)                       := GetAddress(FMODHandle, '_FSOUND_GetError@0');
617
 
  pointer(FSOUND_GetVersion)                     := GetAddress(FMODHandle, '_FSOUND_GetVersion@0');
618
 
  pointer(FSOUND_GetOutput)                      := GetAddress(FMODHandle, '_FSOUND_GetOutput@0');
619
 
  pointer(FSOUND_GetOutputHandle)                := GetAddress(FMODHandle, '_FSOUND_GetOutputHandle@0');
620
 
  pointer(FSOUND_GetDriver)                      := GetAddress(FMODHandle, '_FSOUND_GetDriver@0');
621
 
  pointer(FSOUND_GetMixer)                       := GetAddress(FMODHandle, '_FSOUND_GetMixer@0');
622
 
  pointer(FSOUND_GetNumDrivers)                  := GetAddress(FMODHandle, '_FSOUND_GetNumDrivers@0');
623
 
  pointer(FSOUND_GetDriverName)                  := GetAddress(FMODHandle, '_FSOUND_GetDriverName@4');
624
 
  pointer(FSOUND_GetDriverCaps)                  := GetAddress(FMODHandle, '_FSOUND_GetDriverCaps@8');
625
 
  pointer(FSOUND_GetOutputRate)                  := GetAddress(FMODHandle, '_FSOUND_GetOutputRate@0');
626
 
  pointer(FSOUND_GetMaxChannels)                 := GetAddress(FMODHandle, '_FSOUND_GetMaxChannels@0');
627
 
  pointer(FSOUND_GetMaxSamples)                  := GetAddress(FMODHandle, '_FSOUND_GetMaxSamples@0');
628
 
  pointer(FSOUND_GetSpeakerMode)                 := GetAddress(FMODHandle, '_FSOUND_GetSpeakerMode@0');
629
 
  pointer(FSOUND_GetSFXMasterVolume)             := GetAddress(FMODHandle, '_FSOUND_GetSFXMasterVolume@0');
630
 
  pointer(FSOUND_GetNumHWChannels)               := GetAddress(FMODHandle, '_FSOUND_GetNumHWChannels@12');
631
 
  pointer(FSOUND_GetChannelsPlaying)             := GetAddress(FMODHandle, '_FSOUND_GetChannelsPlaying@0');
632
 
  pointer(FSOUND_GetCPUUsage)                    := GetAddress(FMODHandle, '_FSOUND_GetCPUUsage@0');
633
 
  pointer(FSOUND_GetMemoryStats)                 := GetAddress(FMODHandle, '_FSOUND_GetMemoryStats@8');
634
 
  pointer(FSOUND_Sample_Load)                    := GetAddress(FMODHandle, '_FSOUND_Sample_Load@20');
635
 
  pointer(FSOUND_Sample_Alloc)                   := GetAddress(FMODHandle, '_FSOUND_Sample_Alloc@28');
636
 
  pointer(FSOUND_Sample_Free)                    := GetAddress(FMODHandle, '_FSOUND_Sample_Free@4');
637
 
  pointer(FSOUND_Sample_Upload)                  := GetAddress(FMODHandle, '_FSOUND_Sample_Upload@12');
638
 
  pointer(FSOUND_Sample_Lock)                    := GetAddress(FMODHandle, '_FSOUND_Sample_Lock@28');
639
 
  pointer(FSOUND_Sample_Unlock)                  := GetAddress(FMODHandle, '_FSOUND_Sample_Unlock@20');
640
 
  pointer(FSOUND_Sample_SetMode)                 := GetAddress(FMODHandle, '_FSOUND_Sample_SetMode@8');
641
 
  pointer(FSOUND_Sample_SetLoopPoints)           := GetAddress(FMODHandle, '_FSOUND_Sample_SetLoopPoints@12');
642
 
  pointer(FSOUND_Sample_SetDefaults)             := GetAddress(FMODHandle, '_FSOUND_Sample_SetDefaults@20');
643
 
  pointer(FSOUND_Sample_SetDefaultsEx)           := GetAddress(FMODHandle, '_FSOUND_Sample_SetDefaultsEx@32');
644
 
  pointer(FSOUND_Sample_SetMinMaxDistance)       := GetAddress(FMODHandle, '_FSOUND_Sample_SetMinMaxDistance@12');
645
 
  pointer(FSOUND_Sample_SetMaxPlaybacks)         := GetAddress(FMODHandle, '_FSOUND_Sample_SetMaxPlaybacks@8');
646
 
  pointer(FSOUND_Sample_Get)                     := GetAddress(FMODHandle, '_FSOUND_Sample_Get@4');
647
 
  pointer(FSOUND_Sample_GetName)                 := GetAddress(FMODHandle, '_FSOUND_Sample_GetName@4');
648
 
  pointer(FSOUND_Sample_GetLength)               := GetAddress(FMODHandle, '_FSOUND_Sample_GetLength@4');
649
 
  pointer(FSOUND_Sample_GetLoopPoints)           := GetAddress(FMODHandle, '_FSOUND_Sample_GetLoopPoints@12');
650
 
  pointer(FSOUND_Sample_GetDefaults)             := GetAddress(FMODHandle, '_FSOUND_Sample_GetDefaults@20');
651
 
  pointer(FSOUND_Sample_GetDefaultsEx)           := GetAddress(FMODHandle, '_FSOUND_Sample_GetDefaultsEx@32');
652
 
  pointer(FSOUND_Sample_GetMode)                 := GetAddress(FMODHandle, '_FSOUND_Sample_GetMode@4');
653
 
  pointer(FSOUND_Sample_GetMinMaxDistance)       := GetAddress(FMODHandle, '_FSOUND_Sample_GetMinMaxDistance@12');
654
 
  pointer(FSOUND_PlaySound)                      := GetAddress(FMODHandle, '_FSOUND_PlaySound@8');
655
 
  pointer(FSOUND_PlaySoundEx)                    := GetAddress(FMODHandle, '_FSOUND_PlaySoundEx@16');
656
 
  pointer(FSOUND_StopSound)                      := GetAddress(FMODHandle, '_FSOUND_StopSound@4');
657
 
  pointer(FSOUND_SetFrequency)                   := GetAddress(FMODHandle, '_FSOUND_SetFrequency@8');
658
 
  pointer(FSOUND_SetVolume)                      := GetAddress(FMODHandle, '_FSOUND_SetVolume@8');
659
 
  pointer(FSOUND_SetVolumeAbsolute)              := GetAddress(FMODHandle, '_FSOUND_SetVolumeAbsolute@8');
660
 
  pointer(FSOUND_SetPan)                         := GetAddress(FMODHandle, '_FSOUND_SetPan@8');
661
 
  pointer(FSOUND_SetSurround)                    := GetAddress(FMODHandle, '_FSOUND_SetSurround@8');
662
 
  pointer(FSOUND_SetMute)                        := GetAddress(FMODHandle, '_FSOUND_SetMute@8');
663
 
  pointer(FSOUND_SetPriority)                    := GetAddress(FMODHandle, '_FSOUND_SetPriority@8');
664
 
  pointer(FSOUND_SetReserved)                    := GetAddress(FMODHandle, '_FSOUND_SetReserved@8');
665
 
  pointer(FSOUND_SetPaused)                      := GetAddress(FMODHandle, '_FSOUND_SetPaused@8');
666
 
  pointer(FSOUND_SetLoopMode)                    := GetAddress(FMODHandle, '_FSOUND_SetLoopMode@8');
667
 
  pointer(FSOUND_SetCurrentPosition)             := GetAddress(FMODHandle, '_FSOUND_SetCurrentPosition@8');
668
 
  pointer(FSOUND_3D_SetAttributes)               := GetAddress(FMODHandle, '_FSOUND_3D_SetAttributes@12');
669
 
  pointer(FSOUND_3D_SetMinMaxDistance)           := GetAddress(FMODHandle, '_FSOUND_3D_SetMinMaxDistance@12');
670
 
  pointer(FSOUND_IsPlaying)                      := GetAddress(FMODHandle, '_FSOUND_IsPlaying@4');
671
 
  pointer(FSOUND_GetFrequency)                   := GetAddress(FMODHandle, '_FSOUND_GetFrequency@4');
672
 
  pointer(FSOUND_GetVolume)                      := GetAddress(FMODHandle, '_FSOUND_GetVolume@4');
673
 
  pointer(FSOUND_GetAmplitude)                   := GetAddress(FMODHandle, '_FSOUND_GetAmplitude@4');
674
 
  pointer(FSOUND_GetPan)                         := GetAddress(FMODHandle, '_FSOUND_GetPan@4');
675
 
  pointer(FSOUND_GetSurround)                    := GetAddress(FMODHandle, '_FSOUND_GetSurround@4');
676
 
  pointer(FSOUND_GetMute)                        := GetAddress(FMODHandle, '_FSOUND_GetMute@4');
677
 
  pointer(FSOUND_GetPriority)                    := GetAddress(FMODHandle, '_FSOUND_GetPriority@4');
678
 
  pointer(FSOUND_GetReserved)                    := GetAddress(FMODHandle, '_FSOUND_GetReserved@4');
679
 
  pointer(FSOUND_GetPaused)                      := GetAddress(FMODHandle, '_FSOUND_GetPaused@4');
680
 
  pointer(FSOUND_GetLoopMode)                    := GetAddress(FMODHandle, '_FSOUND_GetLoopMode@4');
681
 
  pointer(FSOUND_GetCurrentPosition)             := GetAddress(FMODHandle, '_FSOUND_GetCurrentPosition@4');
682
 
  pointer(FSOUND_GetCurrentSample)               := GetAddress(FMODHandle, '_FSOUND_GetCurrentSample@4');
683
 
  pointer(FSOUND_GetCurrentLevels)               := GetAddress(FMODHandle, '_FSOUND_GetCurrentLevels@12');
684
 
  pointer(FSOUND_GetNumSubChannels)              := GetAddress(FMODHandle, '_FSOUND_GetNumSubChannels@4');
685
 
  pointer(FSOUND_GetSubChannel)                  := GetAddress(FMODHandle, '_FSOUND_GetSubChannel@8');
686
 
  pointer(FSOUND_3D_GetAttributes)               := GetAddress(FMODHandle, '_FSOUND_3D_GetAttributes@12');
687
 
  pointer(FSOUND_3D_GetMinMaxDistance)           := GetAddress(FMODHandle, '_FSOUND_3D_GetMinMaxDistance@12');
688
 
  pointer(FSOUND_3D_Listener_SetCurrent)         := GetAddress(FMODHandle, '_FSOUND_3D_Listener_SetCurrent@8');
689
 
  pointer(FSOUND_3D_Listener_SetAttributes)      := GetAddress(FMODHandle, '_FSOUND_3D_Listener_SetAttributes@32');
690
 
  pointer(FSOUND_3D_Listener_GetAttributes)      := GetAddress(FMODHandle, '_FSOUND_3D_Listener_GetAttributes@32');
691
 
  pointer(FSOUND_3D_SetDopplerFactor)            := GetAddress(FMODHandle, '_FSOUND_3D_SetDopplerFactor@4');
692
 
  pointer(FSOUND_3D_SetDistanceFactor)           := GetAddress(FMODHandle, '_FSOUND_3D_SetDistanceFactor@4');
693
 
  pointer(FSOUND_3D_SetRolloffFactor)            := GetAddress(FMODHandle, '_FSOUND_3D_SetRolloffFactor@4');
694
 
  pointer(FSOUND_FX_Enable)                      := GetAddress(FMODHandle, '_FSOUND_FX_Enable@8');
695
 
  pointer(FSOUND_FX_SetChorus)                   := GetAddress(FMODHandle, '_FSOUND_FX_SetChorus@32');
696
 
  pointer(FSOUND_FX_SetCompressor)               := GetAddress(FMODHandle, '_FSOUND_FX_SetCompressor@28');
697
 
  pointer(FSOUND_FX_SetDistortion)               := GetAddress(FMODHandle, '_FSOUND_FX_SetDistortion@24');
698
 
  pointer(FSOUND_FX_SetEcho)                     := GetAddress(FMODHandle, '_FSOUND_FX_SetEcho@24');
699
 
  pointer(FSOUND_FX_SetFlanger)                  := GetAddress(FMODHandle, '_FSOUND_FX_SetFlanger@32');
700
 
  pointer(FSOUND_FX_SetGargle)                   := GetAddress(FMODHandle, '_FSOUND_FX_SetGargle@12');
701
 
  pointer(FSOUND_FX_SetI3DL2Reverb)              := GetAddress(FMODHandle, '_FSOUND_FX_SetI3DL2Reverb@52');
702
 
  pointer(FSOUND_FX_SetParamEQ)                  := GetAddress(FMODHandle, '_FSOUND_FX_SetParamEQ@16');
703
 
  pointer(FSOUND_FX_SetWavesReverb)              := GetAddress(FMODHandle, '_FSOUND_FX_SetWavesReverb@20');
704
 
  pointer(FSOUND_Stream_Open)                    := GetAddress(FMODHandle, '_FSOUND_Stream_Open@16');
705
 
  pointer(FSOUND_Stream_Create)                  := GetAddress(FMODHandle, '_FSOUND_Stream_Create@20');
706
 
  pointer(FSOUND_Stream_Close)                   := GetAddress(FMODHandle, '_FSOUND_Stream_Close@4');
707
 
  pointer(FSOUND_Stream_Play)                    := GetAddress(FMODHandle, '_FSOUND_Stream_Play@8');
708
 
  pointer(FSOUND_Stream_PlayEx)                  := GetAddress(FMODHandle, '_FSOUND_Stream_PlayEx@16');
709
 
  pointer(FSOUND_Stream_Stop)                    := GetAddress(FMODHandle, '_FSOUND_Stream_Stop@4');
710
 
  pointer(FSOUND_Stream_SetEndCallback)          := GetAddress(FMODHandle, '_FSOUND_Stream_SetEndCallback@12');
711
 
  pointer(FSOUND_Stream_SetSyncCallback)         := GetAddress(FMODHandle, '_FSOUND_Stream_SetSyncCallback@12');
712
 
  pointer(FSOUND_Stream_GetSample)               := GetAddress(FMODHandle, '_FSOUND_Stream_GetSample@4');
713
 
  pointer(FSOUND_Stream_CreateDSP)               := GetAddress(FMODHandle, '_FSOUND_Stream_CreateDSP@16');
714
 
  pointer(FSOUND_Stream_SetBufferSize)           := GetAddress(FMODHandle, '_FSOUND_Stream_SetBufferSize@4');
715
 
  pointer(FSOUND_Stream_SetPosition)             := GetAddress(FMODHandle, '_FSOUND_Stream_SetPosition@8');
716
 
  pointer(FSOUND_Stream_GetPosition)             := GetAddress(FMODHandle, '_FSOUND_Stream_GetPosition@4');
717
 
  pointer(FSOUND_Stream_SetTime)                 := GetAddress(FMODHandle, '_FSOUND_Stream_SetTime@8');
718
 
  pointer(FSOUND_Stream_GetTime)                 := GetAddress(FMODHandle, '_FSOUND_Stream_GetTime@4');
719
 
  pointer(FSOUND_Stream_GetLength)               := GetAddress(FMODHandle, '_FSOUND_Stream_GetLength@4');
720
 
  pointer(FSOUND_Stream_GetLengthMs)             := GetAddress(FMODHandle, '_FSOUND_Stream_GetLengthMs@4');
721
 
  pointer(FSOUND_Stream_SetMode)                 := GetAddress(FMODHandle, '_FSOUND_Stream_SetMode@8');
722
 
  pointer(FSOUND_Stream_GetMode)                 := GetAddress(FMODHandle, '_FSOUND_Stream_GetMode@4');
723
 
  pointer(FSOUND_Stream_SetLoopPoints)           := GetAddress(FMODHandle, '_FSOUND_Stream_SetLoopPoints@12');
724
 
  pointer(FSOUND_Stream_SetLoopCount)            := GetAddress(FMODHandle, '_FSOUND_Stream_SetLoopCount@8');
725
 
  pointer(FSOUND_Stream_GetOpenState)            := GetAddress(FMODHandle, '_FSOUND_Stream_GetOpenState@4');
726
 
  pointer(FSOUND_Stream_AddSyncPoint)            := GetAddress(FMODHandle, '_FSOUND_Stream_AddSyncPoint@12');
727
 
  pointer(FSOUND_Stream_DeleteSyncPoint)         := GetAddress(FMODHandle, '_FSOUND_Stream_DeleteSyncPoint@4');
728
 
  pointer(FSOUND_Stream_GetNumSyncPoints)        := GetAddress(FMODHandle, '_FSOUND_Stream_GetNumSyncPoints@4');
729
 
  pointer(FSOUND_Stream_GetSyncPoint)            := GetAddress(FMODHandle, '_FSOUND_Stream_GetSyncPoint@8');
730
 
  pointer(FSOUND_Stream_GetSyncPointInfo)        := GetAddress(FMODHandle, '_FSOUND_Stream_GetSyncPointInfo@8');
731
 
  pointer(FSOUND_Stream_SetSubStream)            := GetAddress(FMODHandle, '_FSOUND_Stream_SetSubStream@8');
732
 
  pointer(FSOUND_Stream_GetNumSubStreams)        := GetAddress(FMODHandle, '_FSOUND_Stream_GetNumSubStreams@4');
733
 
  pointer(FSOUND_Stream_SetSubStreamSentence)    := GetAddress(FMODHandle, '_FSOUND_Stream_SetSubStreamSentence@12');
734
 
  pointer(FSOUND_Stream_GetNumTagFields)         := GetAddress(FMODHandle, '_FSOUND_Stream_GetNumTagFields@8');
735
 
  pointer(FSOUND_Stream_GetTagField)             := GetAddress(FMODHandle, '_FSOUND_Stream_GetTagField@24');
736
 
  pointer(FSOUND_Stream_FindTagField)            := GetAddress(FMODHandle, '_FSOUND_Stream_FindTagField@20');
737
 
  pointer(FSOUND_Stream_Net_SetProxy)            := GetAddress(FMODHandle, '_FSOUND_Stream_Net_SetProxy@4');
738
 
  pointer(FSOUND_Stream_Net_GetLastServerStatus) := GetAddress(FMODHandle, '_FSOUND_Stream_Net_GetLastServerStatus@0');
739
 
  pointer(FSOUND_Stream_Net_SetBufferProperties) := GetAddress(FMODHandle, '_FSOUND_Stream_Net_SetBufferProperties@12');
740
 
  pointer(FSOUND_Stream_Net_GetBufferProperties) := GetAddress(FMODHandle, '_FSOUND_Stream_Net_GetBufferProperties@12');
741
 
  pointer(FSOUND_Stream_Net_SetMetadataCallback) := GetAddress(FMODHandle, '_FSOUND_Stream_Net_SetMetadataCallback@12');
742
 
  pointer(FSOUND_Stream_Net_GetStatus)           := GetAddress(FMODHandle, '_FSOUND_Stream_Net_GetStatus@20');
743
 
  pointer(FSOUND_CD_Play)                        := GetAddress(FMODHandle, '_FSOUND_CD_Play@8');
744
 
  pointer(FSOUND_CD_SetPlayMode)                 := GetAddress(FMODHandle, '_FSOUND_CD_SetPlayMode@8');
745
 
  pointer(FSOUND_CD_Stop)                        := GetAddress(FMODHandle, '_FSOUND_CD_Stop@4');
746
 
  pointer(FSOUND_CD_SetPaused)                   := GetAddress(FMODHandle, '_FSOUND_CD_SetPaused@8');
747
 
  pointer(FSOUND_CD_SetVolume)                   := GetAddress(FMODHandle, '_FSOUND_CD_SetVolume@8');
748
 
  pointer(FSOUND_CD_SetTrackTime)                := GetAddress(FMODHandle, '_FSOUND_CD_SetTrackTime@8');
749
 
  pointer(FSOUND_CD_OpenTray)                    := GetAddress(FMODHandle, '_FSOUND_CD_OpenTray@8');
750
 
  pointer(FSOUND_CD_GetPaused)                   := GetAddress(FMODHandle, '_FSOUND_CD_GetPaused@4');
751
 
  pointer(FSOUND_CD_GetTrack)                    := GetAddress(FMODHandle, '_FSOUND_CD_GetTrack@4');
752
 
  pointer(FSOUND_CD_GetNumTracks)                := GetAddress(FMODHandle, '_FSOUND_CD_GetNumTracks@4');
753
 
  pointer(FSOUND_CD_GetVolume)                   := GetAddress(FMODHandle, '_FSOUND_CD_GetVolume@4');
754
 
  pointer(FSOUND_CD_GetTrackLength)              := GetAddress(FMODHandle, '_FSOUND_CD_GetTrackLength@8');
755
 
  pointer(FSOUND_CD_GetTrackTime)                := GetAddress(FMODHandle, '_FSOUND_CD_GetTrackTime@4');
756
 
  pointer(FSOUND_DSP_Create)                     := GetAddress(FMODHandle, '_FSOUND_DSP_Create@12');
757
 
  pointer(FSOUND_DSP_Free)                       := GetAddress(FMODHandle, '_FSOUND_DSP_Free@4');
758
 
  pointer(FSOUND_DSP_SetPriority)                := GetAddress(FMODHandle, '_FSOUND_DSP_SetPriority@8');
759
 
  pointer(FSOUND_DSP_GetPriority)                := GetAddress(FMODHandle, '_FSOUND_DSP_GetPriority@4');
760
 
  pointer(FSOUND_DSP_SetActive)                  := GetAddress(FMODHandle, '_FSOUND_DSP_SetActive@8');
761
 
  pointer(FSOUND_DSP_GetActive)                  := GetAddress(FMODHandle, '_FSOUND_DSP_GetActive@4');
762
 
  pointer(FSOUND_DSP_GetClearUnit)               := GetAddress(FMODHandle, '_FSOUND_DSP_GetClearUnit@0');
763
 
  pointer(FSOUND_DSP_GetSFXUnit)                 := GetAddress(FMODHandle, '_FSOUND_DSP_GetSFXUnit@0');
764
 
  pointer(FSOUND_DSP_GetMusicUnit)               := GetAddress(FMODHandle, '_FSOUND_DSP_GetMusicUnit@0');
765
 
  pointer(FSOUND_DSP_GetClipAndCopyUnit)         := GetAddress(FMODHandle, '_FSOUND_DSP_GetClipAndCopyUnit@0');
766
 
  pointer(FSOUND_DSP_GetFFTUnit)                 := GetAddress(FMODHandle, '_FSOUND_DSP_GetFFTUnit@0');
767
 
  pointer(FSOUND_DSP_MixBuffers)                 := GetAddress(FMODHandle, '_FSOUND_DSP_MixBuffers@28');
768
 
  pointer(FSOUND_DSP_ClearMixBuffer)             := GetAddress(FMODHandle, '_FSOUND_DSP_ClearMixBuffer@0');
769
 
  pointer(FSOUND_DSP_GetBufferLength)            := GetAddress(FMODHandle, '_FSOUND_DSP_GetBufferLength@0');
770
 
  pointer(FSOUND_DSP_GetBufferLengthTotal)       := GetAddress(FMODHandle, '_FSOUND_DSP_GetBufferLengthTotal@0');
771
 
  pointer(FSOUND_DSP_GetSpectrum)                := GetAddress(FMODHandle, '_FSOUND_DSP_GetSpectrum@0');
772
 
  pointer(FSOUND_Reverb_SetProperties)           := GetAddress(FMODHandle, '_FSOUND_Reverb_SetProperties@4');
773
 
  pointer(FSOUND_Reverb_GetProperties)           := GetAddress(FMODHandle, '_FSOUND_Reverb_GetProperties@4');
774
 
  pointer(FSOUND_Reverb_SetChannelProperties)    := GetAddress(FMODHandle, '_FSOUND_Reverb_SetChannelProperties@8');
775
 
  pointer(FSOUND_Reverb_GetChannelProperties)    := GetAddress(FMODHandle, '_FSOUND_Reverb_GetChannelProperties@8');
776
 
  pointer(FSOUND_Record_SetDriver)               := GetAddress(FMODHandle, '_FSOUND_Record_SetDriver@4');
777
 
  pointer(FSOUND_Record_GetNumDrivers)           := GetAddress(FMODHandle, '_FSOUND_Record_GetNumDrivers@0');
778
 
  pointer(FSOUND_Record_GetDriverName)           := GetAddress(FMODHandle, '_FSOUND_Record_GetDriverName@4');
779
 
  pointer(FSOUND_Record_GetDriver)               := GetAddress(FMODHandle, '_FSOUND_Record_GetDriver@0');
780
 
  pointer(FSOUND_Record_StartSample)             := GetAddress(FMODHandle, '_FSOUND_Record_StartSample@8');
781
 
  pointer(FSOUND_Record_Stop)                    := GetAddress(FMODHandle, '_FSOUND_Record_Stop@0');
782
 
  pointer(FSOUND_Record_GetPosition)             := GetAddress(FMODHandle, '_FSOUND_Record_GetPosition@0');
783
 
  pointer(FSOUND_File_SetCallbacks)              := GetAddress(FMODHandle, '_FSOUND_File_SetCallbacks@20');
784
 
  pointer(FMUSIC_LoadSong)                       := GetAddress(FMODHandle, '_FMUSIC_LoadSong@4');
785
 
  pointer(FMUSIC_LoadSongEx)                     := GetAddress(FMODHandle, '_FMUSIC_LoadSongEx@24');
786
 
  pointer(FMUSIC_GetOpenState)                   := GetAddress(FMODHandle, '_FMUSIC_GetOpenState@4');
787
 
  pointer(FMUSIC_FreeSong)                       := GetAddress(FMODHandle, '_FMUSIC_FreeSong@4');
788
 
  pointer(FMUSIC_PlaySong)                       := GetAddress(FMODHandle, '_FMUSIC_PlaySong@4');
789
 
  pointer(FMUSIC_StopSong)                       := GetAddress(FMODHandle, '_FMUSIC_StopSong@4');
790
 
  pointer(FMUSIC_StopAllSongs)                   := GetAddress(FMODHandle, '_FMUSIC_StopAllSongs@0');
791
 
  pointer(FMUSIC_SetZxxCallback)                 := GetAddress(FMODHandle, '_FMUSIC_SetZxxCallback@8');
792
 
  pointer(FMUSIC_SetRowCallback)                 := GetAddress(FMODHandle, '_FMUSIC_SetRowCallback@12');
793
 
  pointer(FMUSIC_SetOrderCallback)               := GetAddress(FMODHandle, '_FMUSIC_SetOrderCallback@12');
794
 
  pointer(FMUSIC_SetInstCallback)                := GetAddress(FMODHandle, '_FMUSIC_SetInstCallback@12');
795
 
  pointer(FMUSIC_SetSample)                      := GetAddress(FMODHandle, '_FMUSIC_SetSample@12');
796
 
  pointer(FMUSIC_SetUserData)                    := GetAddress(FMODHandle, '_FMUSIC_SetUserData@8');
797
 
  pointer(FMUSIC_OptimizeChannels)               := GetAddress(FMODHandle, '_FMUSIC_OptimizeChannels@12');
798
 
  pointer(FMUSIC_SetReverb)                      := GetAddress(FMODHandle, '_FMUSIC_SetReverb@4');
799
 
  pointer(FMUSIC_SetLooping)                     := GetAddress(FMODHandle, '_FMUSIC_SetLooping@8');
800
 
  pointer(FMUSIC_SetOrder)                       := GetAddress(FMODHandle, '_FMUSIC_SetOrder@8');
801
 
  pointer(FMUSIC_SetPaused)                      := GetAddress(FMODHandle, '_FMUSIC_SetPaused@8');
802
 
  pointer(FMUSIC_SetMasterVolume)                := GetAddress(FMODHandle, '_FMUSIC_SetMasterVolume@8');
803
 
  pointer(FMUSIC_SetMasterSpeed)                 := GetAddress(FMODHandle, '_FMUSIC_SetMasterSpeed@8');
804
 
  pointer(FMUSIC_SetPanSeperation)               := GetAddress(FMODHandle, '_FMUSIC_SetPanSeperation@8');
805
 
  pointer(FMUSIC_GetName)                        := GetAddress(FMODHandle, '_FMUSIC_GetName@4');
806
 
  pointer(FMUSIC_GetType)                        := GetAddress(FMODHandle, '_FMUSIC_GetType@4');
807
 
  pointer(FMUSIC_GetNumOrders)                   := GetAddress(FMODHandle, '_FMUSIC_GetNumOrders@4');
808
 
  pointer(FMUSIC_GetNumPatterns)                 := GetAddress(FMODHandle, '_FMUSIC_GetNumPatterns@4');
809
 
  pointer(FMUSIC_GetNumInstruments)              := GetAddress(FMODHandle, '_FMUSIC_GetNumInstruments@4');
810
 
  pointer(FMUSIC_GetNumSamples)                  := GetAddress(FMODHandle, '_FMUSIC_GetNumSamples@4');
811
 
  pointer(FMUSIC_GetNumChannels)                 := GetAddress(FMODHandle, '_FMUSIC_GetNumChannels@4');
812
 
  pointer(FMUSIC_GetSample)                      := GetAddress(FMODHandle, '_FMUSIC_GetSample@8');
813
 
  pointer(FMUSIC_GetPatternLength)               := GetAddress(FMODHandle, '_FMUSIC_GetPatternLength@8');
814
 
  pointer(FMUSIC_IsFinished)                     := GetAddress(FMODHandle, '_FMUSIC_IsFinished@4');
815
 
  pointer(FMUSIC_IsPlaying)                      := GetAddress(FMODHandle, '_FMUSIC_IsPlaying@4');
816
 
  pointer(FMUSIC_GetMasterVolume)                := GetAddress(FMODHandle, '_FMUSIC_GetMasterVolume@4');
817
 
  pointer(FMUSIC_GetGlobalVolume)                := GetAddress(FMODHandle, '_FMUSIC_GetGlobalVolume@4');
818
 
  pointer(FMUSIC_GetOrder)                       := GetAddress(FMODHandle, '_FMUSIC_GetOrder@4');
819
 
  pointer(FMUSIC_GetPattern)                     := GetAddress(FMODHandle, '_FMUSIC_GetPattern@4');
820
 
  pointer(FMUSIC_GetSpeed)                       := GetAddress(FMODHandle, '_FMUSIC_GetSpeed@4');
821
 
  pointer(FMUSIC_GetBPM)                         := GetAddress(FMODHandle, '_FMUSIC_GetBPM@4');
822
 
  pointer(FMUSIC_GetRow)                         := GetAddress(FMODHandle, '_FMUSIC_GetRow@4');
823
 
  pointer(FMUSIC_GetPaused)                      := GetAddress(FMODHandle, '_FMUSIC_GetPaused@4');
824
 
  pointer(FMUSIC_GetTime)                        := GetAddress(FMODHandle, '_FMUSIC_GetTime@4');
825
 
  pointer(FMUSIC_GetRealChannel)                 := GetAddress(FMODHandle, '_FMUSIC_GetRealChannel@8');
826
 
  pointer(FMUSIC_GetUserData)                    := GetAddress(FMODHandle, '_FMUSIC_GetUserData@4');
827
 
 {$ELSE}
828
 
  pointer(FSOUND_SetOutput)                      := GetAddress(FMODHandle, 'FSOUND_SetOutput');
829
 
  pointer(FSOUND_SetDriver)                      := GetAddress(FMODHandle, 'FSOUND_SetDriver');
830
 
  pointer(FSOUND_SetMixer)                       := GetAddress(FMODHandle, 'FSOUND_SetMixer');
831
 
  pointer(FSOUND_SetBufferSize)                  := GetAddress(FMODHandle, 'FSOUND_SetBufferSize');
832
 
  pointer(FSOUND_SetHWND)                        := GetAddress(FMODHandle, 'FSOUND_SetHWND');
833
 
  pointer(FSOUND_SetMinHardwareChannels)         := GetAddress(FMODHandle, 'FSOUND_SetMinHardwareChannels');
834
 
  pointer(FSOUND_SetMaxHardwareChannels)         := GetAddress(FMODHandle, 'FSOUND_SetMaxHardwareChannels');
835
 
  pointer(FSOUND_SetMemorySystem)                := GetAddress(FMODHandle, 'FSOUND_SetMemorySystem');
836
 
  pointer(FSOUND_Init)                           := GetAddress(FMODHandle, 'FSOUND_Init');
837
 
  pointer(FSOUND_Close)                          := GetAddress(FMODHandle, 'FSOUND_Close');
838
 
  pointer(FSOUND_Update)                         := GetAddress(FMODHandle, 'FSOUND_Update');
839
 
  pointer(FSOUND_SetSpeakerMode)                 := GetAddress(FMODHandle, 'FSOUND_SetSpeakerMode');
840
 
  pointer(FSOUND_SetSFXMasterVolume)             := GetAddress(FMODHandle, 'FSOUND_SetSFXMasterVolume');
841
 
  pointer(FSOUND_SetPanSeperation)               := GetAddress(FMODHandle, 'FSOUND_SetPanSeperation');
842
 
  pointer(FSOUND_GetError)                       := GetAddress(FMODHandle, 'FSOUND_GetError');
843
 
  pointer(FSOUND_GetVersion)                     := GetAddress(FMODHandle, 'FSOUND_GetVersion');
844
 
  pointer(FSOUND_GetOutput)                      := GetAddress(FMODHandle, 'FSOUND_GetOutput');
845
 
  pointer(FSOUND_GetOutputHandle)                := GetAddress(FMODHandle, 'FSOUND_GetOutputHandle');
846
 
  pointer(FSOUND_GetDriver)                      := GetAddress(FMODHandle, 'FSOUND_GetDriver');
847
 
  pointer(FSOUND_GetMixer)                       := GetAddress(FMODHandle, 'FSOUND_GetMixer');
848
 
  pointer(FSOUND_GetNumDrivers)                  := GetAddress(FMODHandle, 'FSOUND_GetNumDrivers');
849
 
  pointer(FSOUND_GetDriverName)                  := GetAddress(FMODHandle, 'FSOUND_GetDriverName');
850
 
  pointer(FSOUND_GetDriverCaps)                  := GetAddress(FMODHandle, 'FSOUND_GetDriverCaps');
851
 
  pointer(FSOUND_GetOutputRate)                  := GetAddress(FMODHandle, 'FSOUND_GetOutputRate');
852
 
  pointer(FSOUND_GetMaxChannels)                 := GetAddress(FMODHandle, 'FSOUND_GetMaxChannels');
853
 
  pointer(FSOUND_GetMaxSamples)                  := GetAddress(FMODHandle, 'FSOUND_GetMaxSamples');
854
 
  pointer(FSOUND_GetSpeakerMode)                 := GetAddress(FMODHandle, 'FSOUND_GetSpeakerMode');
855
 
  pointer(FSOUND_GetSFXMasterVolume)             := GetAddress(FMODHandle, 'FSOUND_GetSFXMasterVolume');
856
 
  pointer(FSOUND_GetNumHWChannels)               := GetAddress(FMODHandle, 'FSOUND_GetNumHWChannels');
857
 
  pointer(FSOUND_GetChannelsPlaying)             := GetAddress(FMODHandle, 'FSOUND_GetChannelsPlaying');
858
 
  pointer(FSOUND_GetCPUUsage)                    := GetAddress(FMODHandle, 'FSOUND_GetCPUUsage');
859
 
  pointer(FSOUND_GetMemoryStats)                 := GetAddress(FMODHandle, 'FSOUND_GetMemoryStats');
860
 
  pointer(FSOUND_Sample_Load)                    := GetAddress(FMODHandle, 'FSOUND_Sample_Load');
861
 
  pointer(FSOUND_Sample_Alloc)                   := GetAddress(FMODHandle, 'FSOUND_Sample_Alloc');
862
 
  pointer(FSOUND_Sample_Free)                    := GetAddress(FMODHandle, 'FSOUND_Sample_Free');
863
 
  pointer(FSOUND_Sample_Upload)                  := GetAddress(FMODHandle, 'FSOUND_Sample_Upload');
864
 
  pointer(FSOUND_Sample_Lock)                    := GetAddress(FMODHandle, 'FSOUND_Sample_Lock');
865
 
  pointer(FSOUND_Sample_Unlock)                  := GetAddress(FMODHandle, 'FSOUND_Sample_Unlock');
866
 
  pointer(FSOUND_Sample_SetMode)                 := GetAddress(FMODHandle, 'FSOUND_Sample_SetMode');
867
 
  pointer(FSOUND_Sample_SetLoopPoints)           := GetAddress(FMODHandle, 'FSOUND_Sample_SetLoopPoints');
868
 
  pointer(FSOUND_Sample_SetDefaults)             := GetAddress(FMODHandle, 'FSOUND_Sample_SetDefaults');
869
 
  pointer(FSOUND_Sample_SetDefaultsEx)           := GetAddress(FMODHandle, 'FSOUND_Sample_SetDefaultsEx');
870
 
  pointer(FSOUND_Sample_SetMinMaxDistance)       := GetAddress(FMODHandle, 'FSOUND_Sample_SetMinMaxDistance');
871
 
  pointer(FSOUND_Sample_SetMaxPlaybacks)         := GetAddress(FMODHandle, 'FSOUND_Sample_SetMaxPlaybacks');
872
 
  pointer(FSOUND_Sample_Get)                     := GetAddress(FMODHandle, 'FSOUND_Sample_Get');
873
 
  pointer(FSOUND_Sample_GetName)                 := GetAddress(FMODHandle, 'FSOUND_Sample_GetName');
874
 
  pointer(FSOUND_Sample_GetLength)               := GetAddress(FMODHandle, 'FSOUND_Sample_GetLength');
875
 
  pointer(FSOUND_Sample_GetLoopPoints)           := GetAddress(FMODHandle, 'FSOUND_Sample_GetLoopPoints');
876
 
  pointer(FSOUND_Sample_GetDefaults)             := GetAddress(FMODHandle, 'FSOUND_Sample_GetDefaults');
877
 
  pointer(FSOUND_Sample_GetDefaultsEx)           := GetAddress(FMODHandle, 'FSOUND_Sample_GetDefaultsEx');
878
 
  pointer(FSOUND_Sample_GetMode)                 := GetAddress(FMODHandle, 'FSOUND_Sample_GetMode');
879
 
  pointer(FSOUND_Sample_GetMinMaxDistance)       := GetAddress(FMODHandle, 'FSOUND_Sample_GetMinMaxDistance');
880
 
  pointer(FSOUND_PlaySound)                      := GetAddress(FMODHandle, 'FSOUND_PlaySound');
881
 
  pointer(FSOUND_PlaySoundEx)                    := GetAddress(FMODHandle, 'FSOUND_PlaySoundEx');
882
 
  pointer(FSOUND_StopSound)                      := GetAddress(FMODHandle, 'FSOUND_StopSound');
883
 
  pointer(FSOUND_SetFrequency)                   := GetAddress(FMODHandle, 'FSOUND_SetFrequency');
884
 
  pointer(FSOUND_SetVolume)                      := GetAddress(FMODHandle, 'FSOUND_SetVolume');
885
 
  pointer(FSOUND_SetVolumeAbsolute)              := GetAddress(FMODHandle, 'FSOUND_SetVolumeAbsolute');
886
 
  pointer(FSOUND_SetPan)                         := GetAddress(FMODHandle, 'FSOUND_SetPan');
887
 
  pointer(FSOUND_SetSurround)                    := GetAddress(FMODHandle, 'FSOUND_SetSurround');
888
 
  pointer(FSOUND_SetMute)                        := GetAddress(FMODHandle, 'FSOUND_SetMute');
889
 
  pointer(FSOUND_SetPriority)                    := GetAddress(FMODHandle, 'FSOUND_SetPriority');
890
 
  pointer(FSOUND_SetReserved)                    := GetAddress(FMODHandle, 'FSOUND_SetReserved');
891
 
  pointer(FSOUND_SetPaused)                      := GetAddress(FMODHandle, 'FSOUND_SetPaused');
892
 
  pointer(FSOUND_SetLoopMode)                    := GetAddress(FMODHandle, 'FSOUND_SetLoopMode');
893
 
  pointer(FSOUND_SetCurrentPosition)             := GetAddress(FMODHandle, 'FSOUND_SetCurrentPosition');
894
 
  pointer(FSOUND_3D_SetAttributes)               := GetAddress(FMODHandle, 'FSOUND_3D_SetAttributes');
895
 
  pointer(FSOUND_3D_SetMinMaxDistance)           := GetAddress(FMODHandle, 'FSOUND_3D_SetMinMaxDistance');
896
 
  pointer(FSOUND_IsPlaying)                      := GetAddress(FMODHandle, 'FSOUND_IsPlaying');
897
 
  pointer(FSOUND_GetFrequency)                   := GetAddress(FMODHandle, 'FSOUND_GetFrequency');
898
 
  pointer(FSOUND_GetVolume)                      := GetAddress(FMODHandle, 'FSOUND_GetVolume');
899
 
  pointer(FSOUND_GetAmplitude)                   := GetAddress(FMODHandle, 'FSOUND_GetAmplitude');
900
 
  pointer(FSOUND_GetPan)                         := GetAddress(FMODHandle, 'FSOUND_GetPan');
901
 
  pointer(FSOUND_GetSurround)                    := GetAddress(FMODHandle, 'FSOUND_GetSurround');
902
 
  pointer(FSOUND_GetMute)                        := GetAddress(FMODHandle, 'FSOUND_GetMute');
903
 
  pointer(FSOUND_GetPriority)                    := GetAddress(FMODHandle, 'FSOUND_GetPriority');
904
 
  pointer(FSOUND_GetReserved)                    := GetAddress(FMODHandle, 'FSOUND_GetReserved');
905
 
  pointer(FSOUND_GetPaused)                      := GetAddress(FMODHandle, 'FSOUND_GetPaused');
906
 
  pointer(FSOUND_GetLoopMode)                    := GetAddress(FMODHandle, 'FSOUND_GetLoopMode');
907
 
  pointer(FSOUND_GetCurrentPosition)             := GetAddress(FMODHandle, 'FSOUND_GetCurrentPosition');
908
 
  pointer(FSOUND_GetCurrentSample)               := GetAddress(FMODHandle, 'FSOUND_GetCurrentSample');
909
 
  pointer(FSOUND_GetCurrentLevels)               := GetAddress(FMODHandle, 'FSOUND_GetCurrentLevels');
910
 
  pointer(FSOUND_GetNumSubChannels)              := GetAddress(FMODHandle, 'FSOUND_GetNumSubChannels');
911
 
  pointer(FSOUND_GetSubChannel)                  := GetAddress(FMODHandle, 'FSOUND_GetSubChannel');
912
 
  pointer(FSOUND_3D_GetAttributes)               := GetAddress(FMODHandle, 'FSOUND_3D_GetAttributes');
913
 
  pointer(FSOUND_3D_GetMinMaxDistance)           := GetAddress(FMODHandle, 'FSOUND_3D_GetMinMaxDistance');
914
 
  pointer(FSOUND_3D_Listener_SetCurrent)         := GetAddress(FMODHandle, 'FSOUND_3D_Listener_SetCurrent');
915
 
  pointer(FSOUND_3D_Listener_SetAttributes)      := GetAddress(FMODHandle, 'FSOUND_3D_Listener_SetAttributes');
916
 
  pointer(FSOUND_3D_Listener_GetAttributes)      := GetAddress(FMODHandle, 'FSOUND_3D_Listener_GetAttributes');
917
 
  pointer(FSOUND_3D_SetDopplerFactor)            := GetAddress(FMODHandle, 'FSOUND_3D_SetDopplerFactor');
918
 
  pointer(FSOUND_3D_SetDistanceFactor)           := GetAddress(FMODHandle, 'FSOUND_3D_SetDistanceFactor');
919
 
  pointer(FSOUND_3D_SetRolloffFactor)            := GetAddress(FMODHandle, 'FSOUND_3D_SetRolloffFactor');
920
 
  pointer(FSOUND_FX_Enable)                      := GetAddress(FMODHandle, 'FSOUND_FX_Enable');
921
 
  pointer(FSOUND_FX_SetChorus)                   := GetAddress(FMODHandle, 'FSOUND_FX_SetChorus');
922
 
  pointer(FSOUND_FX_SetCompressor)               := GetAddress(FMODHandle, 'FSOUND_FX_SetCompressor');
923
 
  pointer(FSOUND_FX_SetDistortion)               := GetAddress(FMODHandle, 'FSOUND_FX_SetDistortion');
924
 
  pointer(FSOUND_FX_SetEcho)                     := GetAddress(FMODHandle, 'FSOUND_FX_SetEcho');
925
 
  pointer(FSOUND_FX_SetFlanger)                  := GetAddress(FMODHandle, 'FSOUND_FX_SetFlanger');
926
 
  pointer(FSOUND_FX_SetGargle)                   := GetAddress(FMODHandle, 'FSOUND_FX_SetGargle');
927
 
  pointer(FSOUND_FX_SetI3DL2Reverb)              := GetAddress(FMODHandle, 'FSOUND_FX_SetI3DL2Reverb');
928
 
  pointer(FSOUND_FX_SetParamEQ)                  := GetAddress(FMODHandle, 'FSOUND_FX_SetParamEQ');
929
 
  pointer(FSOUND_FX_SetWavesReverb)              := GetAddress(FMODHandle, 'FSOUND_FX_SetWavesReverb');
930
 
  pointer(FSOUND_Stream_Open)                    := GetAddress(FMODHandle, 'FSOUND_Stream_Open');
931
 
  pointer(FSOUND_Stream_Create)                  := GetAddress(FMODHandle, 'FSOUND_Stream_Create');
932
 
  pointer(FSOUND_Stream_Close)                   := GetAddress(FMODHandle, 'FSOUND_Stream_Close');
933
 
  pointer(FSOUND_Stream_Play)                    := GetAddress(FMODHandle, 'FSOUND_Stream_Play');
934
 
  pointer(FSOUND_Stream_PlayEx)                  := GetAddress(FMODHandle, 'FSOUND_Stream_PlayEx');
935
 
  pointer(FSOUND_Stream_Stop)                    := GetAddress(FMODHandle, 'FSOUND_Stream_Stop');
936
 
  pointer(FSOUND_Stream_SetEndCallback)          := GetAddress(FMODHandle, 'FSOUND_Stream_SetEndCallback');
937
 
  pointer(FSOUND_Stream_SetSyncCallback)         := GetAddress(FMODHandle, 'FSOUND_Stream_SetSyncCallback');
938
 
  pointer(FSOUND_Stream_GetSample)               := GetAddress(FMODHandle, 'FSOUND_Stream_GetSample');
939
 
  pointer(FSOUND_Stream_CreateDSP)               := GetAddress(FMODHandle, 'FSOUND_Stream_CreateDSP');
940
 
  pointer(FSOUND_Stream_SetBufferSize)           := GetAddress(FMODHandle, 'FSOUND_Stream_SetBufferSize');
941
 
  pointer(FSOUND_Stream_SetPosition)             := GetAddress(FMODHandle, 'FSOUND_Stream_SetPosition');
942
 
  pointer(FSOUND_Stream_GetPosition)             := GetAddress(FMODHandle, 'FSOUND_Stream_GetPosition');
943
 
  pointer(FSOUND_Stream_SetTime)                 := GetAddress(FMODHandle, 'FSOUND_Stream_SetTime');
944
 
  pointer(FSOUND_Stream_GetTime)                 := GetAddress(FMODHandle, 'FSOUND_Stream_GetTime');
945
 
  pointer(FSOUND_Stream_GetLength)               := GetAddress(FMODHandle, 'FSOUND_Stream_GetLength');
946
 
  pointer(FSOUND_Stream_GetLengthMs)             := GetAddress(FMODHandle, 'FSOUND_Stream_GetLengthMs');
947
 
  pointer(FSOUND_Stream_SetMode)                 := GetAddress(FMODHandle, 'FSOUND_Stream_SetMode');
948
 
  pointer(FSOUND_Stream_GetMode)                 := GetAddress(FMODHandle, 'FSOUND_Stream_GetMode');
949
 
  pointer(FSOUND_Stream_SetLoopPoints)           := GetAddress(FMODHandle, 'FSOUND_Stream_SetLoopPoints');
950
 
  pointer(FSOUND_Stream_SetLoopCount)            := GetAddress(FMODHandle, 'FSOUND_Stream_SetLoopCount');
951
 
  pointer(FSOUND_Stream_GetOpenState)            := GetAddress(FMODHandle, 'FSOUND_Stream_GetOpenState');
952
 
  pointer(FSOUND_Stream_AddSyncPoint)            := GetAddress(FMODHandle, 'FSOUND_Stream_AddSyncPoint');
953
 
  pointer(FSOUND_Stream_DeleteSyncPoint)         := GetAddress(FMODHandle, 'FSOUND_Stream_DeleteSyncPoint');
954
 
  pointer(FSOUND_Stream_GetNumSyncPoints)        := GetAddress(FMODHandle, 'FSOUND_Stream_GetNumSyncPoints');
955
 
  pointer(FSOUND_Stream_GetSyncPoint)            := GetAddress(FMODHandle, 'FSOUND_Stream_GetSyncPoint');
956
 
  pointer(FSOUND_Stream_GetSyncPointInfo)        := GetAddress(FMODHandle, 'FSOUND_Stream_GetSyncPointInfo');
957
 
  pointer(FSOUND_Stream_SetSubStream)            := GetAddress(FMODHandle, 'FSOUND_Stream_SetSubStream');
958
 
  pointer(FSOUND_Stream_GetNumSubStreams)        := GetAddress(FMODHandle, 'FSOUND_Stream_GetNumSubStreams');
959
 
  pointer(FSOUND_Stream_SetSubStreamSentence)    := GetAddress(FMODHandle, 'FSOUND_Stream_SetSubStreamSentence');
960
 
  pointer(FSOUND_Stream_GetNumTagFields)         := GetAddress(FMODHandle, 'FSOUND_Stream_GetNumTagFields');
961
 
  pointer(FSOUND_Stream_GetTagField)             := GetAddress(FMODHandle, 'FSOUND_Stream_GetTagField');
962
 
  pointer(FSOUND_Stream_FindTagField)            := GetAddress(FMODHandle, 'FSOUND_Stream_FindTagField');
963
 
  pointer(FSOUND_Stream_Net_SetProxy)            := GetAddress(FMODHandle, 'FSOUND_Stream_Net_SetProxy');
964
 
  pointer(FSOUND_Stream_Net_GetLastServerStatus) := GetAddress(FMODHandle, 'FSOUND_Stream_Net_GetLastServerStatus');
965
 
  pointer(FSOUND_Stream_Net_SetBufferProperties) := GetAddress(FMODHandle, 'FSOUND_Stream_Net_SetBufferProperties');
966
 
  pointer(FSOUND_Stream_Net_GetBufferProperties) := GetAddress(FMODHandle, 'FSOUND_Stream_Net_GetBufferProperties');
967
 
  pointer(FSOUND_Stream_Net_SetMetadataCallback) := GetAddress(FMODHandle, 'FSOUND_Stream_Net_SetMetadataCallback');
968
 
  pointer(FSOUND_Stream_Net_GetStatus)           := GetAddress(FMODHandle, 'FSOUND_Stream_Net_GetStatus');
969
 
  pointer(FSOUND_CD_Play)                        := GetAddress(FMODHandle, 'FSOUND_CD_Play');
970
 
  pointer(FSOUND_CD_SetPlayMode)                 := GetAddress(FMODHandle, 'FSOUND_CD_SetPlayMode');
971
 
  pointer(FSOUND_CD_Stop)                        := GetAddress(FMODHandle, 'FSOUND_CD_Stop');
972
 
  pointer(FSOUND_CD_SetPaused)                   := GetAddress(FMODHandle, 'FSOUND_CD_SetPaused');
973
 
  pointer(FSOUND_CD_SetVolume)                   := GetAddress(FMODHandle, 'FSOUND_CD_SetVolume');
974
 
  pointer(FSOUND_CD_SetTrackTime)                := GetAddress(FMODHandle, 'FSOUND_CD_SetTrackTime');
975
 
  pointer(FSOUND_CD_OpenTray)                    := GetAddress(FMODHandle, 'FSOUND_CD_OpenTray');
976
 
  pointer(FSOUND_CD_GetPaused)                   := GetAddress(FMODHandle, 'FSOUND_CD_GetPaused');
977
 
  pointer(FSOUND_CD_GetTrack)                    := GetAddress(FMODHandle, 'FSOUND_CD_GetTrack');
978
 
  pointer(FSOUND_CD_GetNumTracks)                := GetAddress(FMODHandle, 'FSOUND_CD_GetNumTracks');
979
 
  pointer(FSOUND_CD_GetVolume)                   := GetAddress(FMODHandle, 'FSOUND_CD_GetVolume');
980
 
  pointer(FSOUND_CD_GetTrackLength)              := GetAddress(FMODHandle, 'FSOUND_CD_GetTrackLength');
981
 
  pointer(FSOUND_CD_GetTrackTime)                := GetAddress(FMODHandle, 'FSOUND_CD_GetTrackTime');
982
 
  pointer(FSOUND_DSP_Create)                     := GetAddress(FMODHandle, 'FSOUND_DSP_Create');
983
 
  pointer(FSOUND_DSP_Free)                       := GetAddress(FMODHandle, 'FSOUND_DSP_Free');
984
 
  pointer(FSOUND_DSP_SetPriority)                := GetAddress(FMODHandle, 'FSOUND_DSP_SetPriority');
985
 
  pointer(FSOUND_DSP_GetPriority)                := GetAddress(FMODHandle, 'FSOUND_DSP_GetPriority');
986
 
  pointer(FSOUND_DSP_SetActive)                  := GetAddress(FMODHandle, 'FSOUND_DSP_SetActive');
987
 
  pointer(FSOUND_DSP_GetActive)                  := GetAddress(FMODHandle, 'FSOUND_DSP_GetActive');
988
 
  pointer(FSOUND_DSP_GetClearUnit)               := GetAddress(FMODHandle, 'FSOUND_DSP_GetClearUnit');
989
 
  pointer(FSOUND_DSP_GetSFXUnit)                 := GetAddress(FMODHandle, 'FSOUND_DSP_GetSFXUnit');
990
 
  pointer(FSOUND_DSP_GetMusicUnit)               := GetAddress(FMODHandle, 'FSOUND_DSP_GetMusicUnit');
991
 
  pointer(FSOUND_DSP_GetClipAndCopyUnit)         := GetAddress(FMODHandle, 'FSOUND_DSP_GetClipAndCopyUnit');
992
 
  pointer(FSOUND_DSP_GetFFTUnit)                 := GetAddress(FMODHandle, 'FSOUND_DSP_GetFFTUnit');
993
 
  pointer(FSOUND_DSP_MixBuffers)                 := GetAddress(FMODHandle, 'FSOUND_DSP_MixBuffers');
994
 
  pointer(FSOUND_DSP_ClearMixBuffer)             := GetAddress(FMODHandle, 'FSOUND_DSP_ClearMixBuffer');
995
 
  pointer(FSOUND_DSP_GetBufferLength)            := GetAddress(FMODHandle, 'FSOUND_DSP_GetBufferLength');
996
 
  pointer(FSOUND_DSP_GetBufferLengthTotal)       := GetAddress(FMODHandle, 'FSOUND_DSP_GetBufferLengthTotal');
997
 
  pointer(FSOUND_DSP_GetSpectrum)                := GetAddress(FMODHandle, 'FSOUND_DSP_GetSpectrum');
998
 
  pointer(FSOUND_Reverb_SetProperties)           := GetAddress(FMODHandle, 'FSOUND_Reverb_SetProperties');
999
 
  pointer(FSOUND_Reverb_GetProperties)           := GetAddress(FMODHandle, 'FSOUND_Reverb_GetProperties');
1000
 
  pointer(FSOUND_Reverb_SetChannelProperties)    := GetAddress(FMODHandle, 'FSOUND_Reverb_SetChannelProperties');
1001
 
  pointer(FSOUND_Reverb_GetChannelProperties)    := GetAddress(FMODHandle, 'FSOUND_Reverb_GetChannelProperties');
1002
 
  pointer(FSOUND_Record_SetDriver)               := GetAddress(FMODHandle, 'FSOUND_Record_SetDriver');
1003
 
  pointer(FSOUND_Record_GetNumDrivers)           := GetAddress(FMODHandle, 'FSOUND_Record_GetNumDrivers');
1004
 
  pointer(FSOUND_Record_GetDriverName)           := GetAddress(FMODHandle, 'FSOUND_Record_GetDriverName');
1005
 
  pointer(FSOUND_Record_GetDriver)               := GetAddress(FMODHandle, 'FSOUND_Record_GetDriver');
1006
 
  pointer(FSOUND_Record_StartSample)             := GetAddress(FMODHandle, 'FSOUND_Record_StartSample');
1007
 
  pointer(FSOUND_Record_Stop)                    := GetAddress(FMODHandle, 'FSOUND_Record_Stop');
1008
 
  pointer(FSOUND_Record_GetPosition)             := GetAddress(FMODHandle, 'FSOUND_Record_GetPosition');
1009
 
  pointer(FSOUND_File_SetCallbacks)              := GetAddress(FMODHandle, 'FSOUND_File_SetCallbacks');
1010
 
  pointer(FMUSIC_LoadSong)                       := GetAddress(FMODHandle, 'FMUSIC_LoadSong');
1011
 
  pointer(FMUSIC_LoadSongEx)                     := GetAddress(FMODHandle, 'FMUSIC_LoadSongEx');
1012
 
  pointer(FMUSIC_GetOpenState)                   := GetAddress(FMODHandle, 'FMUSIC_GetOpenState');
1013
 
  pointer(FMUSIC_FreeSong)                       := GetAddress(FMODHandle, 'FMUSIC_FreeSong');
1014
 
  pointer(FMUSIC_PlaySong)                       := GetAddress(FMODHandle, 'FMUSIC_PlaySong');
1015
 
  pointer(FMUSIC_StopSong)                       := GetAddress(FMODHandle, 'FMUSIC_StopSong');
1016
 
  pointer(FMUSIC_StopAllSongs)                   := GetAddress(FMODHandle, 'FMUSIC_StopAllSongs');
1017
 
  pointer(FMUSIC_SetZxxCallback)                 := GetAddress(FMODHandle, 'FMUSIC_SetZxxCallback');
1018
 
  pointer(FMUSIC_SetRowCallback)                 := GetAddress(FMODHandle, 'FMUSIC_SetRowCallback');
1019
 
  pointer(FMUSIC_SetOrderCallback)               := GetAddress(FMODHandle, 'FMUSIC_SetOrderCallback');
1020
 
  pointer(FMUSIC_SetInstCallback)                := GetAddress(FMODHandle, 'FMUSIC_SetInstCallback');
1021
 
  pointer(FMUSIC_SetSample)                      := GetAddress(FMODHandle, 'FMUSIC_SetSample');
1022
 
  pointer(FMUSIC_SetUserData)                    := GetAddress(FMODHandle, 'FMUSIC_SetUserData');
1023
 
  pointer(FMUSIC_OptimizeChannels)               := GetAddress(FMODHandle, 'FMUSIC_OptimizeChannels');
1024
 
  pointer(FMUSIC_SetReverb)                      := GetAddress(FMODHandle, 'FMUSIC_SetReverb');
1025
 
  pointer(FMUSIC_SetLooping)                     := GetAddress(FMODHandle, 'FMUSIC_SetLooping');
1026
 
  pointer(FMUSIC_SetOrder)                       := GetAddress(FMODHandle, 'FMUSIC_SetOrder');
1027
 
  pointer(FMUSIC_SetPaused)                      := GetAddress(FMODHandle, 'FMUSIC_SetPaused');
1028
 
  pointer(FMUSIC_SetMasterVolume)                := GetAddress(FMODHandle, 'FMUSIC_SetMasterVolume');
1029
 
  pointer(FMUSIC_SetMasterSpeed)                 := GetAddress(FMODHandle, 'FMUSIC_SetMasterSpeed');
1030
 
  pointer(FMUSIC_SetPanSeperation)               := GetAddress(FMODHandle, 'FMUSIC_SetPanSeperation');
1031
 
  pointer(FMUSIC_GetName)                        := GetAddress(FMODHandle, 'FMUSIC_GetName');
1032
 
  pointer(FMUSIC_GetType)                        := GetAddress(FMODHandle, 'FMUSIC_GetType');
1033
 
  pointer(FMUSIC_GetNumOrders)                   := GetAddress(FMODHandle, 'FMUSIC_GetNumOrders');
1034
 
  pointer(FMUSIC_GetNumPatterns)                 := GetAddress(FMODHandle, 'FMUSIC_GetNumPatterns');
1035
 
  pointer(FMUSIC_GetNumInstruments)              := GetAddress(FMODHandle, 'FMUSIC_GetNumInstruments');
1036
 
  pointer(FMUSIC_GetNumSamples)                  := GetAddress(FMODHandle, 'FMUSIC_GetNumSamples');
1037
 
  pointer(FMUSIC_GetNumChannels)                 := GetAddress(FMODHandle, 'FMUSIC_GetNumChannels');
1038
 
  pointer(FMUSIC_GetSample)                      := GetAddress(FMODHandle, 'FMUSIC_GetSample');
1039
 
  pointer(FMUSIC_GetPatternLength)               := GetAddress(FMODHandle, 'FMUSIC_GetPatternLength');
1040
 
  pointer(FMUSIC_IsFinished)                     := GetAddress(FMODHandle, 'FMUSIC_IsFinished');
1041
 
  pointer(FMUSIC_IsPlaying)                      := GetAddress(FMODHandle, 'FMUSIC_IsPlaying');
1042
 
  pointer(FMUSIC_GetMasterVolume)                := GetAddress(FMODHandle, 'FMUSIC_GetMasterVolume');
1043
 
  pointer(FMUSIC_GetGlobalVolume)                := GetAddress(FMODHandle, 'FMUSIC_GetGlobalVolume');
1044
 
  pointer(FMUSIC_GetOrder)                       := GetAddress(FMODHandle, 'FMUSIC_GetOrder');
1045
 
  pointer(FMUSIC_GetPattern)                     := GetAddress(FMODHandle, 'FMUSIC_GetPattern');
1046
 
  pointer(FMUSIC_GetSpeed)                       := GetAddress(FMODHandle, 'FMUSIC_GetSpeed');
1047
 
  pointer(FMUSIC_GetBPM)                         := GetAddress(FMODHandle, 'FMUSIC_GetBPM');
1048
 
  pointer(FMUSIC_GetRow)                         := GetAddress(FMODHandle, 'FMUSIC_GetRow');
1049
 
  pointer(FMUSIC_GetPaused)                      := GetAddress(FMODHandle, 'FMUSIC_GetPaused');
1050
 
  pointer(FMUSIC_GetTime)                        := GetAddress(FMODHandle, 'FMUSIC_GetTime');
1051
 
  pointer(FMUSIC_GetRealChannel)                 := GetAddress(FMODHandle, 'FMUSIC_GetRealChannel');
1052
 
  pointer(FMUSIC_GetUserData)                    := GetAddress(FMODHandle, 'FMUSIC_GetUserData');
1053
 
 
1054
 
{$ENDIF}
1055
 
  Result := True;
1056
 
end;
1057
 
 
1058
 
procedure FMOD_Unload;
1059
 
begin
1060
 
  { Only free the library if it was already loaded }
1061
 
  if FMODHandle <> INVALID_MODULEHANDLE_VALUE then
1062
 
{$IFDEF WINDOWS}
1063
 
    FreeLibrary(FMODHandle);
1064
 
{$ELSE}
1065
 
    dlclose(FMODHandle);
1066
 
{$ENDIF}
1067
 
  FMODHandle := INVALID_MODULEHANDLE_VALUE;
1068
 
end;
1069
 
 
1070
 
var
1071
 
  Saved8087CW: Word;
1072
 
 
1073
 
{{$ifdef FPC} //FPC do not have this function in its RTL
1074
 
const
1075
 
  Default8087CW = $1332; //according to the FPC site it's the value used in the
1076
 
                         //startup code.
1077
 
procedure Set8087CW( value :word ); Assembler;
1078
 
asm
1079
 
   FLDCW  value
1080
 
end;
1081
 
{$endif}
1082
 
 }
1083
 
initialization
1084
 
  FMODHandle := INVALID_MODULEHANDLE_VALUE;
1085
 
 
1086
 
  { Save the current FPU state and then disable FPU exceptions }
1087
 
  Saved8087CW := Default8087CW;
1088
 
  Set8087CW($133f); { Disable all fpu exceptions }
1089
 
 
1090
 
finalization
1091
 
  { Make sure the library is unloaded }
1092
 
  FMOD_Unload;
1093
 
 
1094
 
  { Reset the FPU to the previous state }
1095
 
  Set8087CW(Saved8087CW);
1096
 
end.