GXS.Sounds.FMOD.pas 74 KB

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