瀏覽代碼

fixed sound package

GLScene 2 年之前
父節點
當前提交
f1be5cf864
共有 59 個文件被更改,包括 532 次插入6033 次删除
  1. 2 2
      Examples/Demos/sound/3DSoundFMOD/fSoundFMOD.pas
  2. 49 25
      Packages/GLScene.groupproj
  3. 1 1
      Packages/GLScene_SDL_rt.dpk
  4. 3 3
      Packages/GLScene_SDL_rt.dproj
  5. 1 1
      Packages/GLScene_Sounds_DT.dpk
  6. 1 1
      Packages/GLScene_Sounds_DT.dproj
  7. 10 10
      Packages/GLScene_Sounds_RT.dpk
  8. 10 10
      Packages/GLScene_Sounds_RT.dproj
  9. 27 3
      Packagex/GLXcene.groupproj
  10. 1 0
      Packagex/GLXcene_DT.dpk
  11. 1 1
      Packagex/GLXcene_DT.dproj
  12. 2 2
      Packagex/GLXcene_GPU_DT.dproj
  13. 3 3
      Packagex/GLXcene_SDL_DT.dpk
  14. 1 5
      Packagex/GLXcene_SDL_DT.dproj
  15. 3 3
      Packagex/GLXcene_SDL_RT.dpk
  16. 1 5
      Packagex/GLXcene_SDL_RT.dproj
  17. 1 1
      Packagex/GLXcene_Scripts_DT.dpk
  18. 1 1
      Packagex/GLXcene_Scripts_DT.dproj
  19. 8 8
      Packagex/GLXcene_Scripts_RT.dpk
  20. 6 10
      Packagex/GLXcene_Scripts_RT.dproj
  21. 1 1
      Packagex/GLXcene_Sounds_DT.dpk
  22. 1 1
      Packagex/GLXcene_Sounds_DT.dproj
  23. 7 7
      Packagex/GLXcene_Sounds_RT.dpk
  24. 8 8
      Packagex/GLXcene_Sounds_RT.dproj
  25. 3 3
      Resources/GLXceneObjects.rc
  26. 3 1
      Source/Common/BASS.Import.pas
  27. 2 2
      Source/Common/FMOD.Import.pas
  28. 2 2
      Source/Common/FMOD.errors.pas
  29. 3 4
      Source/Common/FMOD.presets.pas
  30. 5 5
      Source/Common/FMOD.types.pas
  31. 4 2
      Source/Common/OpenAL.Import.pas
  32. 2 2
      Source/FMX/DWSx.Classes.pas
  33. 1 1
      Source/FMX/DWSx.HelperFunc.pas
  34. 2 2
      Source/FMX/DWSx.Objects.pas
  35. 1 1
      Source/FMX/DWSx.OpenGL.pas
  36. 3 3
      Source/FMX/DWSx.Scene.pas
  37. 66 63
      Source/FMX/DWSx.Script.pas
  38. 1 1
      Source/FMX/DWSx.VectorGeometry.pas
  39. 0 1
      Source/FMX/GLX.SceneRegister.pas
  40. 0 280
      Source/FMX/GLX.ScriptDWS.pas
  41. 1 1
      Source/FMX/Pythonx.Script.pas
  42. 2 5
      Source/FMX/SDLx.Context.pas
  43. 1 1
      Source/FMX/SDLx.Window.pas
  44. 0 1262
      Source/FMX/Soundx.BASSImport.pas
  45. 1 1
      Source/FMX/Soundx.FMOD.pas
  46. 0 72
      Source/FMX/Soundx.FMODErrors.pas
  47. 0 768
      Source/FMX/Soundx.FMODImport.pas
  48. 0 92
      Source/FMX/Soundx.FMODPresets.pas
  49. 0 803
      Source/FMX/Soundx.FMODtypes.pas
  50. 0 2291
      Source/FMX/Soundx.OpenALImport.pas
  51. 2 1
      Source/FMX/Soundx.Register.pas
  52. 1 2
      Source/FMX/Soundx.SMBASS.pas
  53. 269 242
      Source/FMX/Soundx.SMFMOD.pas
  54. 2 1
      Source/FMX/Soundx.SMOpenAL.pas
  55. 1 1
      Source/VCL/Sounds.BASS.pas
  56. 3 3
      Source/VCL/Sounds.FMOD.pas
  57. 1 1
      Source/VCL/Sounds.OpenAL.pas
  58. 1 1
      Source/VCL/Sounds.Register.pas
  59. 0 0
      Source/VCL/Sounds.WaveOut.pas

+ 2 - 2
Examples/Demos/sound/3DSoundFMOD/fSoundFMOD.pas

@@ -61,7 +61,7 @@ type
     procedure Button1Click(Sender: TObject);
     procedure Button1Click(Sender: TObject);
     procedure btnHowlClick(Sender: TObject);
     procedure btnHowlClick(Sender: TObject);
   private
   private
-
+    Path: TFileName;
   public
   public
 
 
   end;
   end;
@@ -75,7 +75,7 @@ implementation
 
 
 procedure TFormSoundFMOD.FormCreate(Sender: TObject);
 procedure TFormSoundFMOD.FormCreate(Sender: TObject);
 begin
 begin
-  var Path: TFileName := GetCurrentAssetPath();
+  Path := GetCurrentAssetPath();
   SetCurrentDir(Path + '\audio');
   SetCurrentDir(Path + '\audio');
 
 
   // Load our sound sample
   // Load our sound sample

+ 49 - 25
Packages/GLScene.groupproj

@@ -15,16 +15,16 @@
         <Projects Include="GLScene_Sounds_DT.dproj">
         <Projects Include="GLScene_Sounds_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
-        <Projects Include="GLScene_Cg_RT.dproj">
+        <Projects Include="GLScene_Physics_RT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
-        <Projects Include="GLScene_Cg_DT.dproj">
+        <Projects Include="GLScene_Physics_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
-        <Projects Include="GLScene_Physics_RT.dproj">
+        <Projects Include="GLScene_Cg_RT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
-        <Projects Include="GLScene_Physics_DT.dproj">
+        <Projects Include="GLScene_Cg_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
         <Projects Include="GLScene_GPU_RT.dproj">
         <Projects Include="GLScene_GPU_RT.dproj">
@@ -33,6 +33,12 @@
         <Projects Include="GLScene_GPU_DT.dproj">
         <Projects Include="GLScene_GPU_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
+        <Projects Include="GLScene_SDL_RT.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="GLScene_SDL_DT.dproj">
+            <Dependencies/>
+        </Projects>
     </ItemGroup>
     </ItemGroup>
     <ProjectExtensions>
     <ProjectExtensions>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
@@ -77,24 +83,6 @@
     <Target Name="GLScene_Sounds_DT:Make">
     <Target Name="GLScene_Sounds_DT:Make">
         <MSBuild Projects="GLScene_Sounds_DT.dproj" Targets="Make"/>
         <MSBuild Projects="GLScene_Sounds_DT.dproj" Targets="Make"/>
     </Target>
     </Target>
-    <Target Name="GLScene_Cg_RT">
-        <MSBuild Projects="GLScene_Cg_RT.dproj"/>
-    </Target>
-    <Target Name="GLScene_Cg_RT:Clean">
-        <MSBuild Projects="GLScene_Cg_RT.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GLScene_Cg_RT:Make">
-        <MSBuild Projects="GLScene_Cg_RT.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="GLScene_Cg_DT">
-        <MSBuild Projects="GLScene_Cg_DT.dproj"/>
-    </Target>
-    <Target Name="GLScene_Cg_DT:Clean">
-        <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GLScene_Cg_DT:Make">
-        <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Make"/>
-    </Target>
     <Target Name="GLScene_Physics_RT">
     <Target Name="GLScene_Physics_RT">
         <MSBuild Projects="GLScene_Physics_RT.dproj"/>
         <MSBuild Projects="GLScene_Physics_RT.dproj"/>
     </Target>
     </Target>
@@ -113,6 +101,24 @@
     <Target Name="GLScene_Physics_DT:Make">
     <Target Name="GLScene_Physics_DT:Make">
         <MSBuild Projects="GLScene_Physics_DT.dproj" Targets="Make"/>
         <MSBuild Projects="GLScene_Physics_DT.dproj" Targets="Make"/>
     </Target>
     </Target>
+    <Target Name="GLScene_Cg_RT">
+        <MSBuild Projects="GLScene_Cg_RT.dproj"/>
+    </Target>
+    <Target Name="GLScene_Cg_RT:Clean">
+        <MSBuild Projects="GLScene_Cg_RT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLScene_Cg_RT:Make">
+        <MSBuild Projects="GLScene_Cg_RT.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="GLScene_Cg_DT">
+        <MSBuild Projects="GLScene_Cg_DT.dproj"/>
+    </Target>
+    <Target Name="GLScene_Cg_DT:Clean">
+        <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLScene_Cg_DT:Make">
+        <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Make"/>
+    </Target>
     <Target Name="GLScene_GPU_RT">
     <Target Name="GLScene_GPU_RT">
         <MSBuild Projects="GLScene_GPU_RT.dproj"/>
         <MSBuild Projects="GLScene_GPU_RT.dproj"/>
     </Target>
     </Target>
@@ -131,14 +137,32 @@
     <Target Name="GLScene_GPU_DT:Make">
     <Target Name="GLScene_GPU_DT:Make">
         <MSBuild Projects="GLScene_GPU_DT.dproj" Targets="Make"/>
         <MSBuild Projects="GLScene_GPU_DT.dproj" Targets="Make"/>
     </Target>
     </Target>
+    <Target Name="GLScene_SDL_RT">
+        <MSBuild Projects="GLScene_SDL_RT.dproj"/>
+    </Target>
+    <Target Name="GLScene_SDL_RT:Clean">
+        <MSBuild Projects="GLScene_SDL_RT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLScene_SDL_RT:Make">
+        <MSBuild Projects="GLScene_SDL_RT.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="GLScene_SDL_DT">
+        <MSBuild Projects="GLScene_SDL_DT.dproj"/>
+    </Target>
+    <Target Name="GLScene_SDL_DT:Clean">
+        <MSBuild Projects="GLScene_SDL_DT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLScene_SDL_DT:Make">
+        <MSBuild Projects="GLScene_SDL_DT.dproj" Targets="Make"/>
+    </Target>
     <Target Name="Build">
     <Target Name="Build">
-        <CallTarget Targets="GLScene_RT;GLScene_DT;GLScene_Sounds_RT;GLScene_Sounds_DT;GLScene_Cg_RT;GLScene_Cg_DT;GLScene_Physics_RT;GLScene_Physics_DT;GLScene_GPU_RT;GLScene_GPU_DT"/>
+        <CallTarget Targets="GLScene_RT;GLScene_DT;GLScene_Sounds_RT;GLScene_Sounds_DT;GLScene_Physics_RT;GLScene_Physics_DT;GLScene_Cg_RT;GLScene_Cg_DT;GLScene_GPU_RT;GLScene_GPU_DT;GLScene_SDL_RT;GLScene_SDL_DT"/>
     </Target>
     </Target>
     <Target Name="Clean">
     <Target Name="Clean">
-        <CallTarget Targets="GLScene_RT:Clean;GLScene_DT:Clean;GLScene_Sounds_RT:Clean;GLScene_Sounds_DT:Clean;GLScene_Cg_RT:Clean;GLScene_Cg_DT:Clean;GLScene_Physics_RT:Clean;GLScene_Physics_DT:Clean;GLScene_GPU_RT:Clean;GLScene_GPU_DT:Clean"/>
+        <CallTarget Targets="GLScene_RT:Clean;GLScene_DT:Clean;GLScene_Sounds_RT:Clean;GLScene_Sounds_DT:Clean;GLScene_Physics_RT:Clean;GLScene_Physics_DT:Clean;GLScene_Cg_RT:Clean;GLScene_Cg_DT:Clean;GLScene_GPU_RT:Clean;GLScene_GPU_DT:Clean;GLScene_SDL_RT:Clean;GLScene_SDL_DT:Clean"/>
     </Target>
     </Target>
     <Target Name="Make">
     <Target Name="Make">
-        <CallTarget Targets="GLScene_RT:Make;GLScene_DT:Make;GLScene_Sounds_RT:Make;GLScene_Sounds_DT:Make;GLScene_Cg_RT:Make;GLScene_Cg_DT:Make;GLScene_Physics_RT:Make;GLScene_Physics_DT:Make;GLScene_GPU_RT:Make;GLScene_GPU_DT:Make"/>
+        <CallTarget Targets="GLScene_RT:Make;GLScene_DT:Make;GLScene_Sounds_RT:Make;GLScene_Sounds_DT:Make;GLScene_Physics_RT:Make;GLScene_Physics_DT:Make;GLScene_Cg_RT:Make;GLScene_Cg_DT:Make;GLScene_GPU_RT:Make;GLScene_GPU_DT:Make;GLScene_SDL_RT:Make;GLScene_SDL_DT:Make"/>
     </Target>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>
 </Project>

+ 1 - 1
Packages/GLScene_SDL_rt.dpk

@@ -36,7 +36,7 @@ requires
 
 
 contains
 contains
   SDL.Window in '..\Source\VCL\SDL.Window.pas',
   SDL.Window in '..\Source\VCL\SDL.Window.pas',
-  SDL.Import in '..\Source\VCL\SDL.Import.pas';
+  SDL.Import in '..\Source\Common\SDL.Import.pas';
 
 
 end.
 end.
 
 

+ 3 - 3
Packages/GLScene_SDL_rt.dproj

@@ -136,7 +136,7 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="..\Source\VCL\SDL.Window.pas"/>
         <DCCReference Include="..\Source\VCL\SDL.Window.pas"/>
-        <DCCReference Include="..\Source\VCL\SDL.Import.pas"/>
+        <DCCReference Include="..\Source\Common\SDL.Import.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>
@@ -169,9 +169,9 @@
                 <Platform value="Win64">True</Platform>
                 <Platform value="Win64">True</Platform>
             </Platforms>
             </Platforms>
             <Deployment Version="3">
             <Deployment Version="3">
-                <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GLScene_SDL_rt.bpl" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GLScene_SDL_RT.bpl" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
                     <Platform Name="Win32">
-                        <RemoteName>GLScene_SDL_rt.bpl</RemoteName>
+                        <RemoteName>GLScene_SDL_RT.bpl</RemoteName>
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>

+ 1 - 1
Packages/GLScene_Sounds_DT.dpk

@@ -38,6 +38,6 @@ requires
   GLScene_Sounds_RT;
   GLScene_Sounds_RT;
 
 
 contains
 contains
-  Sounds.SoundRegister in '..\Source\Sounds.SoundRegister.pas';
+  Sounds.Register in '..\Source\VCL\Sounds.Register.pas';
 
 
 end.
 end.

+ 1 - 1
Packages/GLScene_Sounds_DT.dproj

@@ -110,7 +110,7 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="GLScene_Sounds_RT.dcp"/>
         <DCCReference Include="GLScene_Sounds_RT.dcp"/>
-        <DCCReference Include="..\Source\Sounds.SoundRegister.pas"/>
+        <DCCReference Include="..\Source\VCL\Sounds.Register.pas"/>
         <RcCompile Include="..\Resources\GLSceneSounds.rc">
         <RcCompile Include="..\Resources\GLSceneSounds.rc">
             <Form>GLSceneSounds.res</Form>
             <Form>GLSceneSounds.res</Form>
         </RcCompile>
         </RcCompile>

+ 10 - 10
Packages/GLScene_Sounds_RT.dpk

@@ -35,15 +35,15 @@ requires
   GLScene_RT;
   GLScene_RT;
 
 
 contains
 contains
-  Sounds.FMODImport in '..\Source\Sounds.FMODImport.pas',
-  Sounds.FMODpresets in '..\Source\Sounds.FMODpresets.pas',
-  Sounds.FMODtypes in '..\Source\Sounds.FMODtypes.pas',
-  Sounds.FMODerrors in '..\Source\Sounds.FMODerrors.pas',
-  Sounds.OpenALImport in '..\Source\Sounds.OpenALImport.pas',
-  Sounds.BASS in '..\Source\Sounds.BASS.pas',
-  Sounds.FMOD in '..\Source\Sounds.FMOD.pas',
-  Sounds.OpenAL in '..\Source\Sounds.OpenAL.pas',
-  Sounds.WaveOut in '..\Source\Sounds.WaveOut.pas',
-  Sounds.BASSImport in '..\Source\Sounds.BASSImport.pas';
+  FMOD.Import in '..\Source\Common\FMOD.Import.pas',
+  FMOD.presets in '..\Source\Common\FMOD.presets.pas',
+  FMOD.types in '..\Source\Common\FMOD.types.pas',
+  FMOD.errors in '..\Source\Common\FMOD.errors.pas',
+  BASS.Import in '..\Source\Common\BASS.Import.pas',
+  OpenAL.Import in '..\Source\Common\OpenAL.Import.pas',
+  Sounds.FMOD in '..\Source\VCL\Sounds.FMOD.pas',
+  Sounds.BASS in '..\Source\VCL\Sounds.BASS.pas',
+  Sounds.OpenAL in '..\Source\VCL\Sounds.OpenAL.pas',
+  Sounds.WaveOut in '..\Source\VCL\Sounds.WaveOut.pas';
 
 
 end.
 end.

+ 10 - 10
Packages/GLScene_Sounds_RT.dproj

@@ -144,16 +144,16 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="rtl.dcp"/>
         <DCCReference Include="rtl.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
-        <DCCReference Include="..\Source\Sounds.FMODImport.pas"/>
-        <DCCReference Include="..\Source\Sounds.FMODpresets.pas"/>
-        <DCCReference Include="..\Source\Sounds.FMODtypes.pas"/>
-        <DCCReference Include="..\Source\Sounds.FMODerrors.pas"/>
-        <DCCReference Include="..\Source\Sounds.OpenALImport.pas"/>
-        <DCCReference Include="..\Source\Sounds.BASS.pas"/>
-        <DCCReference Include="..\Source\Sounds.FMOD.pas"/>
-        <DCCReference Include="..\Source\Sounds.OpenAL.pas"/>
-        <DCCReference Include="..\Source\Sounds.WaveOut.pas"/>
-        <DCCReference Include="..\Source\Sounds.BASSImport.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.Import.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.presets.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.types.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.errors.pas"/>
+        <DCCReference Include="..\Source\Common\BASS.Import.pas"/>
+        <DCCReference Include="..\Source\Common\OpenAL.Import.pas"/>
+        <DCCReference Include="..\Source\VCL\Sounds.FMOD.pas"/>
+        <DCCReference Include="..\Source\VCL\Sounds.BASS.pas"/>
+        <DCCReference Include="..\Source\VCL\Sounds.OpenAL.pas"/>
+        <DCCReference Include="..\Source\VCL\Sounds.WaveOut.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>

+ 27 - 3
Packagex/GLXcene.groupproj

@@ -21,6 +21,9 @@
         <Projects Include="GLXcene_Scripts_RT.dproj">
         <Projects Include="GLXcene_Scripts_RT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
+        <Projects Include="GLXcene_SDL_RT.dproj">
+            <Dependencies/>
+        </Projects>
         <Projects Include="GLXcene_DT.dproj">
         <Projects Include="GLXcene_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
@@ -39,6 +42,9 @@
         <Projects Include="GLXcene_GPU_DT.dproj">
         <Projects Include="GLXcene_GPU_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
+        <Projects Include="GLXcene_SDL_DT.dproj">
+            <Dependencies/>
+        </Projects>
     </ItemGroup>
     </ItemGroup>
     <ProjectExtensions>
     <ProjectExtensions>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
@@ -101,6 +107,15 @@
     <Target Name="GLXcene_Scripts_RT:Make">
     <Target Name="GLXcene_Scripts_RT:Make">
         <MSBuild Projects="GLXcene_Scripts_RT.dproj" Targets="Make"/>
         <MSBuild Projects="GLXcene_Scripts_RT.dproj" Targets="Make"/>
     </Target>
     </Target>
+    <Target Name="GLXcene_SDL_RT">
+        <MSBuild Projects="GLXcene_SDL_RT.dproj"/>
+    </Target>
+    <Target Name="GLXcene_SDL_RT:Clean">
+        <MSBuild Projects="GLXcene_SDL_RT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLXcene_SDL_RT:Make">
+        <MSBuild Projects="GLXcene_SDL_RT.dproj" Targets="Make"/>
+    </Target>
     <Target Name="GLXcene_DT">
     <Target Name="GLXcene_DT">
         <MSBuild Projects="GLXcene_DT.dproj"/>
         <MSBuild Projects="GLXcene_DT.dproj"/>
     </Target>
     </Target>
@@ -155,14 +170,23 @@
     <Target Name="GLXcene_GPU_DT:Make">
     <Target Name="GLXcene_GPU_DT:Make">
         <MSBuild Projects="GLXcene_GPU_DT.dproj" Targets="Make"/>
         <MSBuild Projects="GLXcene_GPU_DT.dproj" Targets="Make"/>
     </Target>
     </Target>
+    <Target Name="GLXcene_SDL_DT">
+        <MSBuild Projects="GLXcene_SDL_DT.dproj"/>
+    </Target>
+    <Target Name="GLXcene_SDL_DT:Clean">
+        <MSBuild Projects="GLXcene_SDL_DT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLXcene_SDL_DT:Make">
+        <MSBuild Projects="GLXcene_SDL_DT.dproj" Targets="Make"/>
+    </Target>
     <Target Name="Build">
     <Target Name="Build">
-        <CallTarget Targets="GLXcene_RT;GLXcene_Sounds_RT;GLXcene_Physics_RT;GLXcene_Cg_RT;GLXcene_GPU_RT;GLXcene_Scripts_RT;GLXcene_DT;GLXcene_Cg_DT;GLXcene_Sounds_DT;GLXcene_Physics_DT;GLXcene_Scripts_DT;GLXcene_GPU_DT"/>
+        <CallTarget Targets="GLXcene_RT;GLXcene_Sounds_RT;GLXcene_Physics_RT;GLXcene_Cg_RT;GLXcene_GPU_RT;GLXcene_Scripts_RT;GLXcene_SDL_RT;GLXcene_DT;GLXcene_Cg_DT;GLXcene_Sounds_DT;GLXcene_Physics_DT;GLXcene_Scripts_DT;GLXcene_GPU_DT;GLXcene_SDL_DT"/>
     </Target>
     </Target>
     <Target Name="Clean">
     <Target Name="Clean">
-        <CallTarget Targets="GLXcene_RT:Clean;GLXcene_Sounds_RT:Clean;GLXcene_Physics_RT:Clean;GLXcene_Cg_RT:Clean;GLXcene_GPU_RT:Clean;GLXcene_Scripts_RT:Clean;GLXcene_DT:Clean;GLXcene_Cg_DT:Clean;GLXcene_Sounds_DT:Clean;GLXcene_Physics_DT:Clean;GLXcene_Scripts_DT:Clean;GLXcene_GPU_DT:Clean"/>
+        <CallTarget Targets="GLXcene_RT:Clean;GLXcene_Sounds_RT:Clean;GLXcene_Physics_RT:Clean;GLXcene_Cg_RT:Clean;GLXcene_GPU_RT:Clean;GLXcene_Scripts_RT:Clean;GLXcene_SDL_RT:Clean;GLXcene_DT:Clean;GLXcene_Cg_DT:Clean;GLXcene_Sounds_DT:Clean;GLXcene_Physics_DT:Clean;GLXcene_Scripts_DT:Clean;GLXcene_GPU_DT:Clean;GLXcene_SDL_DT:Clean"/>
     </Target>
     </Target>
     <Target Name="Make">
     <Target Name="Make">
-        <CallTarget Targets="GLXcene_RT:Make;GLXcene_Sounds_RT:Make;GLXcene_Physics_RT:Make;GLXcene_Cg_RT:Make;GLXcene_GPU_RT:Make;GLXcene_Scripts_RT:Make;GLXcene_DT:Make;GLXcene_Cg_DT:Make;GLXcene_Sounds_DT:Make;GLXcene_Physics_DT:Make;GLXcene_Scripts_DT:Make;GLXcene_GPU_DT:Make"/>
+        <CallTarget Targets="GLXcene_RT:Make;GLXcene_Sounds_RT:Make;GLXcene_Physics_RT:Make;GLXcene_Cg_RT:Make;GLXcene_GPU_RT:Make;GLXcene_Scripts_RT:Make;GLXcene_SDL_RT:Make;GLXcene_DT:Make;GLXcene_Cg_DT:Make;GLXcene_Sounds_DT:Make;GLXcene_Physics_DT:Make;GLXcene_Scripts_DT:Make;GLXcene_GPU_DT:Make;GLXcene_SDL_DT:Make"/>
     </Target>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>
 </Project>

+ 1 - 0
Packagex/GLXcene_DT.dpk

@@ -27,6 +27,7 @@ package GLXcene_DT;
 {$ENDIF IMPLICITBUILDING}
 {$ENDIF IMPLICITBUILDING}
 {$DESCRIPTION 'GLXcene Graphics'}
 {$DESCRIPTION 'GLXcene Graphics'}
 {$RUNONLY}
 {$RUNONLY}
+{$DESIGNONLY}
 {$IMPLICITBUILD ON}
 {$IMPLICITBUILD ON}
 
 
 requires
 requires

+ 1 - 1
Packagex/GLXcene_DT.dproj

@@ -58,7 +58,6 @@
         <Base>true</Base>
         <Base>true</Base>
     </PropertyGroup>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base)'!=''">
     <PropertyGroup Condition="'$(Base)'!=''">
-        <RuntimeOnlyPackage>true</RuntimeOnlyPackage>
         <VerInfo_Locale>1049</VerInfo_Locale>
         <VerInfo_Locale>1049</VerInfo_Locale>
         <DCC_Description>GLScene FMX OpenGL 3D library</DCC_Description>
         <DCC_Description>GLScene FMX OpenGL 3D library</DCC_Description>
         <DCC_E>false</DCC_E>
         <DCC_E>false</DCC_E>
@@ -73,6 +72,7 @@
         <DCC_S>false</DCC_S>
         <DCC_S>false</DCC_S>
         <DCC_N>false</DCC_N>
         <DCC_N>false</DCC_N>
         <GenDll>true</GenDll>
         <GenDll>true</GenDll>
+        <DesignOnlyPackage>true</DesignOnlyPackage>
     </PropertyGroup>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <DCC_Description>GLSceneVKS Vulkan 3D library</DCC_Description>
         <DCC_Description>GLSceneVKS Vulkan 3D library</DCC_Description>

+ 2 - 2
Packagex/GLXcene_GPU_DT.dproj

@@ -169,12 +169,12 @@
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>

+ 3 - 3
Packagex/GLXcene_SDL_DT.dpk

@@ -14,8 +14,8 @@ package GLXcene_SDL_DT;
 {$LONGSTRINGS ON}
 {$LONGSTRINGS ON}
 {$OPENSTRINGS ON}
 {$OPENSTRINGS ON}
 {$OPTIMIZATION OFF}
 {$OPTIMIZATION OFF}
-{$OVERFLOWCHECKS OFF}
-{$RANGECHECKS OFF}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
 {$REFERENCEINFO ON}
 {$REFERENCEINFO ON}
 {$SAFEDIVIDE OFF}
 {$SAFEDIVIDE OFF}
 {$STACKFRAMES ON}
 {$STACKFRAMES ON}
@@ -39,7 +39,7 @@ requires
   GLXcene_SDL_RT;
   GLXcene_SDL_RT;
 
 
 contains
 contains
-  GLX.SDLContext in '..\Source\FMX\GLX.SDLContext.pas';
+  SDLx.Context in '..\Source\FMX\SDLx.Context.pas';
 
 
 end.
 end.
 
 

+ 1 - 5
Packagex/GLXcene_SDL_DT.dproj

@@ -75,7 +75,7 @@
         <DCCReference Include="fmximg.dcp"/>
         <DCCReference Include="fmximg.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_SDL_RT.dcp"/>
         <DCCReference Include="GLXcene_SDL_RT.dcp"/>
-        <DCCReference Include="..\Source\FMX\GLX.SDLContext.pas"/>
+        <DCCReference Include="..\Source\FMX\SDLx.Context.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>
@@ -98,11 +98,7 @@
                 </Source>
                 </Source>
             </Delphi.Personality>
             </Delphi.Personality>
             <Platforms>
             <Platforms>
-                <Platform value="Android">False</Platform>
-                <Platform value="iOSDevice32">False</Platform>
-                <Platform value="iOSSimulator">False</Platform>
                 <Platform value="Linux64">True</Platform>
                 <Platform value="Linux64">True</Platform>
-                <Platform value="OSX32">False</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">False</Platform>
                 <Platform value="Win64">False</Platform>
             </Platforms>
             </Platforms>

+ 3 - 3
Packagex/GLXcene_SDL_RT.dpk

@@ -13,8 +13,8 @@ package GLXcene_SDL_RT;
 {$LONGSTRINGS ON}
 {$LONGSTRINGS ON}
 {$OPENSTRINGS ON}
 {$OPENSTRINGS ON}
 {$OPTIMIZATION OFF}
 {$OPTIMIZATION OFF}
-{$OVERFLOWCHECKS OFF}
-{$RANGECHECKS OFF}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
 {$REFERENCEINFO ON}
 {$REFERENCEINFO ON}
 {$SAFEDIVIDE OFF}
 {$SAFEDIVIDE OFF}
 {$STACKFRAMES ON}
 {$STACKFRAMES ON}
@@ -36,7 +36,7 @@ requires
 
 
 contains
 contains
   SDL.Import in '..\Source\Common\SDL.Import.pas',
   SDL.Import in '..\Source\Common\SDL.Import.pas',
-  GLX.SDLWindow in '..\Source\FMX\GLX.SDLWindow.pas';
+  SDLx.Window in '..\Source\FMX\SDLx.Window.pas';
 
 
 end.
 end.
 
 

+ 1 - 5
Packagex/GLXcene_SDL_RT.dproj

@@ -72,7 +72,7 @@
         <DCCReference Include="fmx.dcp"/>
         <DCCReference Include="fmx.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="..\Source\Common\SDL.Import.pas"/>
         <DCCReference Include="..\Source\Common\SDL.Import.pas"/>
-        <DCCReference Include="..\Source\FMX\GLX.SDLWindow.pas"/>
+        <DCCReference Include="..\Source\FMX\SDLx.Window.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>
@@ -95,11 +95,7 @@
                 </Source>
                 </Source>
             </Delphi.Personality>
             </Delphi.Personality>
             <Platforms>
             <Platforms>
-                <Platform value="Android">False</Platform>
-                <Platform value="iOSDevice32">False</Platform>
-                <Platform value="iOSSimulator">False</Platform>
                 <Platform value="Linux64">True</Platform>
                 <Platform value="Linux64">True</Platform>
-                <Platform value="OSX32">False</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">False</Platform>
                 <Platform value="Win64">False</Platform>
             </Platforms>
             </Platforms>

+ 1 - 1
Packagex/GLXcene_Scripts_DT.dpk

@@ -38,6 +38,6 @@ requires
   GLXcene_Scripts_RT;
   GLXcene_Scripts_RT;
 
 
 contains
 contains
-  DWX.Scene in '..\Source\FMX\DWX.Scene.pas';
+  DWSx.Scene in '..\Source\FMX\DWSx.Scene.pas';
 
 
 end.
 end.

+ 1 - 1
Packagex/GLXcene_Scripts_DT.dproj

@@ -74,7 +74,7 @@
         <DCCReference Include="dws.Runtime.dcp"/>
         <DCCReference Include="dws.Runtime.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_Scripts_RT.dcp"/>
         <DCCReference Include="GLXcene_Scripts_RT.dcp"/>
-        <DCCReference Include="..\Source\FMX\DWX.Scene.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.Scene.pas"/>
         <RcCompile Include="..\Resources\GLXceneDWS.rc">
         <RcCompile Include="..\Resources\GLXceneDWS.rc">
             <Form>GLXceneDWS.res</Form>
             <Form>GLXceneDWS.res</Form>
         </RcCompile>
         </RcCompile>

+ 8 - 8
Packagex/GLXcene_Scripts_RT.dpk

@@ -13,8 +13,8 @@ package GLXcene_Scripts_RT;
 {$LONGSTRINGS ON}
 {$LONGSTRINGS ON}
 {$OPENSTRINGS ON}
 {$OPENSTRINGS ON}
 {$OPTIMIZATION OFF}
 {$OPTIMIZATION OFF}
-{$OVERFLOWCHECKS OFF}
-{$RANGECHECKS OFF}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
 {$REFERENCEINFO ON}
 {$REFERENCEINFO ON}
 {$SAFEDIVIDE OFF}
 {$SAFEDIVIDE OFF}
 {$STACKFRAMES ON}
 {$STACKFRAMES ON}
@@ -37,11 +37,11 @@ requires
 
 
 contains
 contains
   Pythonx.Script in '..\Source\FMX\Pythonx.Script.pas',
   Pythonx.Script in '..\Source\FMX\Pythonx.Script.pas',
-  DWX.Classes in '..\Source\FMX\DWX.Classes.pas',
-  DWX.HelperFunc in '..\Source\FMX\DWX.HelperFunc.pas',
-  DWX.Objects in '..\Source\FMX\DWX.Objects.pas',
-  DWX.OpenGL in '..\Source\FMX\DWX.OpenGL.pas',
-  DWX.Script in '..\Source\FMX\DWX.Script.pas',
-  DWX.VectorGeometry in '..\Source\FMX\DWX.VectorGeometry.pas';
+  DWSx.Classes in '..\Source\FMX\DWSx.Classes.pas',
+  DWSx.HelperFunc in '..\Source\FMX\DWSx.HelperFunc.pas',
+  DWSx.Objects in '..\Source\FMX\DWSx.Objects.pas',
+  DWSx.OpenGL in '..\Source\FMX\DWSx.OpenGL.pas',
+  DWSx.Script in '..\Source\FMX\DWSx.Script.pas',
+  DWSx.VectorGeometry in '..\Source\FMX\DWSx.VectorGeometry.pas';
 
 
 end.
 end.

+ 6 - 10
Packagex/GLXcene_Scripts_RT.dproj

@@ -73,12 +73,12 @@
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="dws_Runtime.dcp"/>
         <DCCReference Include="dws_Runtime.dcp"/>
         <DCCReference Include="..\Source\FMX\Pythonx.Script.pas"/>
         <DCCReference Include="..\Source\FMX\Pythonx.Script.pas"/>
-        <DCCReference Include="..\Source\FMX\DWX.Classes.pas"/>
-        <DCCReference Include="..\Source\FMX\DWX.HelperFunc.pas"/>
-        <DCCReference Include="..\Source\FMX\DWX.Objects.pas"/>
-        <DCCReference Include="..\Source\FMX\DWX.OpenGL.pas"/>
-        <DCCReference Include="..\Source\FMX\DWX.Script.pas"/>
-        <DCCReference Include="..\Source\FMX\DWX.VectorGeometry.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.Classes.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.HelperFunc.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.Objects.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.OpenGL.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.Script.pas"/>
+        <DCCReference Include="..\Source\FMX\DWSx.VectorGeometry.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>
@@ -101,11 +101,7 @@
                 </Source>
                 </Source>
             </Delphi.Personality>
             </Delphi.Personality>
             <Platforms>
             <Platforms>
-                <Platform value="Android">False</Platform>
-                <Platform value="iOSDevice32">False</Platform>
-                <Platform value="iOSSimulator">False</Platform>
                 <Platform value="Linux64">True</Platform>
                 <Platform value="Linux64">True</Platform>
-                <Platform value="OSX32">False</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">False</Platform>
                 <Platform value="Win64">False</Platform>
             </Platforms>
             </Platforms>

+ 1 - 1
Packagex/GLXcene_Sounds_DT.dpk

@@ -37,6 +37,6 @@ requires
   GLXcene_Sounds_RT;
   GLXcene_Sounds_RT;
 
 
 contains
 contains
-  GLX.SoundRegister in '..\Source\FMX\GLX.SoundRegister.pas';
+  Soundx.Register in '..\Source\FMX\Soundx.Register.pas';
 
 
 end.
 end.

+ 1 - 1
Packagex/GLXcene_Sounds_DT.dproj

@@ -112,7 +112,7 @@
         <DCCReference Include="fmx.dcp"/>
         <DCCReference Include="fmx.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_Sounds_RT.dcp"/>
         <DCCReference Include="GLXcene_Sounds_RT.dcp"/>
-        <DCCReference Include="..\Source\FMX\GLX.SoundRegister.pas"/>
+        <DCCReference Include="..\Source\FMX\Soundx.Register.pas"/>
         <RcCompile Include="..\Resources\GLXceneSounds.rc">
         <RcCompile Include="..\Resources\GLXceneSounds.rc">
             <Form>GLXceneSounds.res</Form>
             <Form>GLXceneSounds.res</Form>
         </RcCompile>
         </RcCompile>

+ 7 - 7
Packagex/GLXcene_Sounds_RT.dpk

@@ -34,16 +34,16 @@ requires
   GLXcene_RT;
   GLXcene_RT;
 
 
 contains
 contains
-  Soundx.BASSImport in '..\Source\FMX\Soundx.BASSImport.pas',
-  Soundx.FMODImport in '..\Source\FMX\Soundx.FMODImport.pas',
   Soundx.FMOD in '..\Source\FMX\Soundx.FMOD.pas',
   Soundx.FMOD in '..\Source\FMX\Soundx.FMOD.pas',
-  Soundx.FMODErrors in '..\Source\FMX\Soundx.FMODErrors.pas',
-  Soundx.FMODPresets in '..\Source\FMX\Soundx.FMODPresets.pas',
-  Soundx.FMODTypes in '..\Source\FMX\Soundx.FMODTypes.pas',
   Soundx.SMFMOD in '..\Source\FMX\Soundx.SMFMOD.pas',
   Soundx.SMFMOD in '..\Source\FMX\Soundx.SMFMOD.pas',
   Soundx.SMOpenAL in '..\Source\FMX\Soundx.SMOpenAL.pas',
   Soundx.SMOpenAL in '..\Source\FMX\Soundx.SMOpenAL.pas',
   Soundx.SMWaveOut in '..\Source\FMX\Soundx.SMWaveOut.pas',
   Soundx.SMWaveOut in '..\Source\FMX\Soundx.SMWaveOut.pas',
-  Soundx.OpenALImport in '..\Source\FMX\Soundx.OpenALImport.pas',
-  Soundx.SMBASS in '..\Source\FMX\Soundx.SMBASS.pas';
+  Soundx.SMBASS in '..\Source\FMX\Soundx.SMBASS.pas',
+  FMOD.errors in '..\Source\Common\FMOD.errors.pas',
+  FMOD.Import in '..\Source\Common\FMOD.Import.pas',
+  FMOD.presets in '..\Source\Common\FMOD.presets.pas',
+  FMOD.types in '..\Source\Common\FMOD.types.pas',
+  BASS.Import in '..\Source\Common\BASS.Import.pas',
+  OpenAL.Import in '..\Source\Common\OpenAL.Import.pas';
 
 
 end.
 end.

+ 8 - 8
Packagex/GLXcene_Sounds_RT.dproj

@@ -156,17 +156,17 @@
         </DelphiCompile>
         </DelphiCompile>
         <DCCReference Include="rtl.dcp"/>
         <DCCReference Include="rtl.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
-        <DCCReference Include="..\Source\FMX\Soundx.BASSImport.pas"/>
-        <DCCReference Include="..\Source\FMX\Soundx.FMODImport.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.FMOD.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.FMOD.pas"/>
-        <DCCReference Include="..\Source\FMX\Soundx.FMODErrors.pas"/>
-        <DCCReference Include="..\Source\FMX\Soundx.FMODPresets.pas"/>
-        <DCCReference Include="..\Source\FMX\Soundx.FMODTypes.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMFMOD.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMFMOD.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMOpenAL.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMOpenAL.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMWaveOut.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMWaveOut.pas"/>
-        <DCCReference Include="..\Source\FMX\Soundx.OpenALImport.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMBASS.pas"/>
         <DCCReference Include="..\Source\FMX\Soundx.SMBASS.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.errors.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.Import.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.presets.pas"/>
+        <DCCReference Include="..\Source\Common\FMOD.types.pas"/>
+        <DCCReference Include="..\Source\Common\BASS.Import.pas"/>
+        <DCCReference Include="..\Source\Common\OpenAL.Import.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>
@@ -200,12 +200,12 @@
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>

+ 3 - 3
Resources/GLXceneObjects.rc

@@ -1,6 +1,6 @@
-glx_camera BITMAP objects\glx_camera.bmp
-glx_lights BITMAP objects\glx_lights.bmp
-glx_objects BITMAP objects\glx_objects.bmp
+glx_camera BITMAP fmx\objects\glx_camera.bmp
+glx_lights BITMAP fmx\objects\glx_lights.bmp
+glx_objects BITMAP fmx\objects\glx_objects.bmp
 glx_root BITMAP fmx\objects\glx_root.bmp
 glx_root BITMAP fmx\objects\glx_root.bmp
 glx_cross BITMAP fmx\objects\glx_cross.bmp
 glx_cross BITMAP fmx\objects\glx_cross.bmp
 
 

+ 3 - 1
Source/Sounds.BASSImport.pas → Source/Common/BASS.Import.pas

@@ -1,3 +1,4 @@
+unit BASS.Import;
 (*
 (*
   BASS 2.4 Delphi unit
   BASS 2.4 Delphi unit
   Copyright (c) 1999-2021 Un4seen Developments Ltd.
   Copyright (c) 1999-2021 Un4seen Developments Ltd.
@@ -11,7 +12,6 @@
 
 
   NOTE: Delphi users should use the BASS_UNICODE flag where possible
   NOTE: Delphi users should use the BASS_UNICODE flag where possible
 *)
 *)
-unit Sounds.BASSImport;
 
 
 interface
 interface
 
 
@@ -1081,7 +1081,9 @@ function BASS_Load(LibName: PChar ): Boolean;
 procedure BASS_UnLoad;
 procedure BASS_UnLoad;
 function BASS_IsLoaded:boolean;
 function BASS_IsLoaded:boolean;
 
 
+//==================================================
 implementation
 implementation
+//==================================================
 const
 const
   INVALID_MODULEHANDLE_VALUE = TBASSModuleHandle(0);
   INVALID_MODULEHANDLE_VALUE = TBASSModuleHandle(0);
 
 

+ 2 - 2
Source/Sounds.FMODImport.pas → Source/Common/FMOD.Import.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit Sounds.FMODImport;
+unit FMOD.Import;
 
 
 (*============================================================================================== 
 (*============================================================================================== 
   FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.               
   FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.               
@@ -32,7 +32,7 @@ uses
 {$IFDEF MSWINDOWS}
 {$IFDEF MSWINDOWS}
   Winapi.Windows,
   Winapi.Windows,
 {$ENDIF}
 {$ENDIF}
-  Sounds.FMODtypes;
+  FMOD.Types;
 
 
 
 
  const
  const

+ 2 - 2
Source/Sounds.FMODerrors.pas → Source/Common/FMOD.errors.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit Sounds.FMODerrors;
+unit FMOD.errors;
 
 
 (* ===============================================================================================
 (* ===============================================================================================
   FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.
   FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.
@@ -26,7 +26,7 @@ unit Sounds.FMODerrors;
 interface
 interface
 
 
 uses
 uses
-  Sounds.FMODtypes;
+  FMOD.Types;
 
 
 (*
 (*
   Disable warning for unsafe types in Delphi 7
   Disable warning for unsafe types in Delphi 7

+ 3 - 4
Source/Sounds.FMODpresets.pas → Source/Common/FMOD.presets.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit Sounds.FMODpresets;
+unit FMOD.presets;
 
 
 (*===============================================================================================
 (*===============================================================================================
   FMOD presets header file. Copyright (c), FireLight Technologies Pty, Ltd. 1999-2004.
   FMOD presets header file. Copyright (c), FireLight Technologies Pty, Ltd. 1999-2004.
@@ -26,7 +26,7 @@ unit Sounds.FMODpresets;
 interface
 interface
 
 
 uses
 uses
-  Sounds.FMODtypes;
+  FMOD.Types;
 
 
 (*
 (*
 [DEFINE_START]
 [DEFINE_START]
@@ -79,8 +79,7 @@ const
   FSOUND_PRESET_PSYCHOTIC:        TFSoundReverbProperties = (Environment: 25; EnvSize: 1.0;   EnvDiffusion: 0.50;   Room: -1000;  RoomHF: -151;   RoomLF: 0;  DecayTime: 7.56;  DecayHFRatio: 0.91; DecayLFRatio: 1.0;  Reflections: -626;  ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 774;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 4.00; ModulationDepth: 1.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
   FSOUND_PRESET_PSYCHOTIC:        TFSoundReverbProperties = (Environment: 25; EnvSize: 1.0;   EnvDiffusion: 0.50;   Room: -1000;  RoomHF: -151;   RoomLF: 0;  DecayTime: 7.56;  DecayHFRatio: 0.91; DecayLFRatio: 1.0;  Reflections: -626;  ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 774;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 4.00; ModulationDepth: 1.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
 
 
 (* PlayStation 2 Only presets *)
 (* PlayStation 2 Only presets *)
-(* Delphi/Kylix cannot create PlayStation 2 executables, so there is no need to
-   convert the PlayStation 2 presets. *)
+(* Delphi cannot create PlayStation 2 executables, so there is no need in the PlayStation 2 presets. *)
 {$J-}
 {$J-}
 
 
 (* [DEFINE_END] *)
 (* [DEFINE_END] *)

+ 5 - 5
Source/Sounds.FMODtypes.pas → Source/Common/FMOD.types.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit Sounds.FMODtypes;
+unit FMOD.types;
 
 
 (*=============================================================================================== 
 (*=============================================================================================== 
   FMOD Types header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.              
   FMOD Types header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.              
@@ -28,12 +28,12 @@ interface
 
 
 {$IFDEF MSWINDOWS}
 {$IFDEF MSWINDOWS}
 uses
 uses
-  Windows;
+  Winapi.Windows;
 {$ENDIF}
 {$ENDIF}
 
 
-(*=============================================================================================== 
-  DEFINITIONS                                                                                     
- ===============================================================================================*) 
+(*===============================================================================================
+  DEFINITIONS
+ ===============================================================================================*)
 
 
 (*
 (*
   Force four-byte enums
   Force four-byte enums

+ 4 - 2
Source/Sounds.OpenALImport.pas → Source/Common/OpenAL.Import.pas

@@ -38,7 +38,7 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  * the terms of any one of the MPL, the GPL or the LGPL.
  *)
  *)
 
 
-unit Sounds.OpenALImport;
+unit OpenAL.Import;
 
 
 interface
 interface
 
 
@@ -46,7 +46,9 @@ interface
 
 
 uses
 uses
   System.SysUtils
   System.SysUtils
-  {$IFDEF MSWINDOWS},  Winapi.Windows{$ENDIF};
+  {$IFDEF MSWINDOWS},
+  Winapi.Windows
+  {$ENDIF};
 
 
 { $ DEFINE ALUT} //define ALUT to use alut.dll
 { $ DEFINE ALUT} //define ALUT to use alut.dll
 
 

+ 2 - 2
Source/FMX/DWX.Classes.pas → Source/FMX/DWSx.Classes.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics rendering platform GLScene http://glscene.org
 // The graphics rendering platform GLScene http://glscene.org
 //
 //
-unit DWX.Classes;
+unit DWSx.Classes;
 
 
 (* DelphiWebScript symbol creation for base FMX classes. *)
 (* DelphiWebScript symbol creation for base FMX classes. *)
 
 
@@ -385,7 +385,7 @@ end;
 
 
 procedure Register;
 procedure Register;
 begin
 begin
-  RegisterComponents('GLXcene DWS', [TdwxClassesUnit]);
+  RegisterComponents('GLXcene DWSx', [TdwxClassesUnit]);
 end;
 end;
 
 
 
 

+ 1 - 1
Source/FMX/DWX.HelperFunc.pas → Source/FMX/DWSx.HelperFunc.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics rendering platform GLScene http://glscene.org
 // The graphics rendering platform GLScene http://glscene.org
 //
 //
-unit DWX.HelperFunc;
+unit DWSx.HelperFunc;
 
 
 (*
 (*
   Helper functions for creating class, properties and
   Helper functions for creating class, properties and

+ 2 - 2
Source/FMX/DWX.Objects.pas → Source/FMX/DWSx.Objects.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics rendering platform GLXcene http://glscene.org
 // The graphics rendering platform GLXcene http://glscene.org
 //
 //
-unit DWX.Objects;
+unit DWSx.Objects;
 (*
 (*
   Base classes and logic for DelphiWebScript enabled objects
   Base classes and logic for DelphiWebScript enabled objects
 *)
 *)
@@ -18,7 +18,7 @@ uses
   GLX.BaseClasses,
   GLX.BaseClasses,
   GLX.Manager,
   GLX.Manager,
 
 
-  DWX.Script,
+  DWSx.Script,
 
 
   dwsComp, // dwxComp,...
   dwsComp, // dwxComp,...
   dwsExprs,
   dwsExprs,

+ 1 - 1
Source/FMX/DWX.OpenGL.pas → Source/FMX/DWSx.OpenGL.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics rendering platform GLScene http://glscene.org
 // The graphics rendering platform GLScene http://glscene.org
 //
 //
-unit DWX.OpenGL;
+unit DWSx.OpenGL;
 (*
 (*
    DelphiWebScript symbol creation for OpenGL procedures and functions.
    DelphiWebScript symbol creation for OpenGL procedures and functions.
    This unit is still under development.
    This unit is still under development.

+ 3 - 3
Source/FMX/DWX.Scene.pas → Source/FMX/DWSx.Scene.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics rendering platform GLScene http://glscene.org
 // The graphics rendering platform GLScene http://glscene.org
 //
 //
-unit DWX.Scene;
+unit DWSx.Scene;
 
 
 (*
 (*
   DelphiWebScript symbol creation for base FMX classes.
   DelphiWebScript symbol creation for base FMX classes.
@@ -21,8 +21,8 @@ uses
   GLX.VectorGeometry,
   GLX.VectorGeometry,
   GLX.Coordinates,
   GLX.Coordinates,
 
 
-  DWX.HelperFunc,
-  dwsExprs,  // dwxExprs, ...
+  DWSx.HelperFunc,
+  dwsExprs,  // dwxExprs, ... ?
   dwsSymbols,
   dwsSymbols,
   dwsComp,
   dwsComp,
   dwsCompStrings,
   dwsCompStrings,

+ 66 - 63
Source/FMX/DWX.Script.pas → Source/FMX/DWSx.Script.pas

@@ -1,48 +1,50 @@
 //
 //
-// The graphics rendering platform GLScene http://glscene.org
+// Graphic Scene Engine, http://glscene.org
 //
 //
-unit DWX.Script;
-
-(* DelphiWebScript implementation for the GLXcene scripting layer *)
+(*
+  DelphiWebScript implementation
+*)
+unit DWSx.Script;
 
 
 interface
 interface
 
 
 uses
 uses
   System.Classes,
   System.Classes,
   System.SysUtils,
   System.SysUtils,
+  dwsComp,
+  dwsExprs,
+  dwsSymbols,
 
 
   GLX.XCollection,
   GLX.XCollection,
-  GXLX.ScriptBase,
-  GLX.Manager,
-
-  dwsComp, // dwxComp,...
-  dwsExprs,
-  dwsSymbols;
+  GLX.ScriptBase,
+  GLX.Manager;
 
 
 type
 type
-  (* This class only adds manager registration logic to the TDelphiWebScriptII
-    class to enable the XCollection items (ie. TGLScriptDWS) retain it's
-    assigned compiler from design to run -time. *)
-  TGLDelphiWebScript = class(TDelphiWebScript)
+  (*
+    This class only adds manager registration logic to the TDelphiWebScriptII
+    class to enable the XCollection items (ie. TgxScriptDWS) retain it's
+    assigned compiler from design to run -time.
+  *)
+  TgxDelphiWebScript = class(TDelphiWebScriptII)
   public
   public
     constructor Create(AOnwer: TComponent); override;
     constructor Create(AOnwer: TComponent); override;
     destructor Destroy; override;
     destructor Destroy; override;
   end;
   end;
 
 
-  // Implements DelphiWebScript scripting functionality through the abstracted GXL.ScriptBase
+  (* Implements DelphiWebScriptII scripting functionality through the
+    abstracted GLX.ScriptBase . *)
   TgxScriptDWS = class(TgxScriptBase)
   TgxScriptDWS = class(TgxScriptBase)
   private
   private
-    FDWSProgram: TProgram;
-    FCompiler: TGLDelphiWebScript;
+    FDWS2Program: TProgram;
+    FCompiler: TgxDelphiWebScriptII;
     FCompilerName: String;
     FCompilerName: String;
   protected
   protected
-    procedure SetCompiler(const Value: TGLDelphiWebScriptII);
+    procedure SetCompiler(const Value: TgxDelphiWebScriptII);
     procedure ReadFromFiler(reader: TReader); override;
     procedure ReadFromFiler(reader: TReader); override;
     procedure WriteToFiler(writer: TWriter); override;
     procedure WriteToFiler(writer: TWriter); override;
     procedure Loaded; override;
     procedure Loaded; override;
-    procedure Notification(AComponent: TComponent;
-      Operation: TOperation); override;
-    function GetState: TGLScriptState; override;
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    function GetState: TgxScriptState; override;
   public
   public
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
@@ -57,30 +59,39 @@ type
     class function ItemCategory: String; override;
     class function ItemCategory: String; override;
     property DWS2Program: TProgram read FDWS2Program;
     property DWS2Program: TProgram read FDWS2Program;
   published
   published
-    property Compiler: TGLDelphiWebScriptII read FCompiler write SetCompiler;
+    property Compiler: TgxDelphiWebScriptII read FCompiler write SetCompiler;
+
   end;
   end;
 
 
 procedure Register;
 procedure Register;
 
 
 // --------------------------------------------------
 // --------------------------------------------------
 implementation
 implementation
+
 // --------------------------------------------------
 // --------------------------------------------------
 
 
 // ---------------
 // ---------------
 // --------------- Miscellaneous ---------------
 // --------------- Miscellaneous ---------------
 // ---------------
 // ---------------
 
 
+procedure Register;
+begin
+  RegisterClasses([TgxDelphiWebScriptII, TgxScriptDWS]);
+  RegisterComponents('GLXcene DWSx', [TgxDelphiWebScript]);
+end;
+
+
 // ----------
 // ----------
-// ---------- TGLDelphiWebScript ----------
+// ---------- TgxDelphiWebScript ----------
 // ----------
 // ----------
 
 
-constructor TGLDelphiWebScript.Create(AOnwer: TComponent);
+constructor TgxDelphiWebScript.Create(AOnwer: TComponent);
 begin
 begin
   inherited;
   inherited;
   RegisterManager(Self);
   RegisterManager(Self);
 end;
 end;
 
 
-destructor TGLDelphiWebScript.Destroy;
+destructor TgxDelphiWebScript.Destroy;
 begin
 begin
   DeregisterManager(Self);
   DeregisterManager(Self);
   inherited;
   inherited;
@@ -88,25 +99,25 @@ end;
 
 
 
 
 // ---------------
 // ---------------
-// --------------- TGLScriptDWS ---------------
+// --------------- TgxScriptDWS ---------------
 // ---------------
 // ---------------
 
 
-destructor TGLScriptDWS.Destroy;
+destructor TgxScriptDWS.Destroy;
 begin
 begin
   Invalidate;
   Invalidate;
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLScriptDWS.Assign(Source: TPersistent);
+procedure TgxScriptDWS.Assign(Source: TPersistent);
 begin
 begin
   inherited;
   inherited;
-  if Source is TGLScriptDWS then
+  if Source is TgxScriptDWS then
   begin
   begin
-    Compiler := TGLScriptDWS(Source).Compiler;
+    Compiler := TgxScriptDWS(Source).Compiler;
   end;
   end;
 end;
 end;
 
 
-procedure TGLScriptDWS.ReadFromFiler(reader: TReader);
+procedure TgxScriptDWS.ReadFromFiler(reader: TReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -120,7 +131,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLScriptDWS.WriteToFiler(writer: TWriter);
+procedure TgxScriptDWS.WriteToFiler(writer: TWriter);
 begin
 begin
   inherited;
   inherited;
   writer.WriteInteger(0); // archiveVersion
   writer.WriteInteger(0); // archiveVersion
@@ -134,43 +145,42 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLScriptDWS.Loaded;
+procedure TgxScriptDWS.Loaded;
 var
 var
   temp: TComponent;
   temp: TComponent;
 begin
 begin
   inherited;
   inherited;
   if FCompilerName <> '' then
   if FCompilerName <> '' then
   begin
   begin
-    temp := FindManager(TGLDelphiWebScript, FCompilerName);
+    temp := FindManager(TgxDelphiWebScript, FCompilerName);
     if Assigned(temp) then
     if Assigned(temp) then
-      Compiler := TGLDelphiWebScript(temp);
+      Compiler := TgxDelphiWebScript(temp);
     FCompilerName := '';
     FCompilerName := '';
   end;
   end;
 end;
 end;
 
 
-procedure TGLScriptDWS.Notification(AComponent: TComponent;
-  Operation: TOperation);
+procedure TgxScriptDWS.Notification(AComponent: TComponent; Operation: TOperation);
 begin
 begin
   if (AComponent = Compiler) and (Operation = opRemove) then
   if (AComponent = Compiler) and (Operation = opRemove) then
     Compiler := nil;
     Compiler := nil;
 end;
 end;
 
 
-class function TGLScriptDWS.FriendlyName: String;
+class function TgxScriptDWS.FriendlyName: String;
 begin
 begin
-  Result := 'GLScriptDWS';
+  Result := 'GLX.ScriptDWS';
 end;
 end;
 
 
-class function TGLScriptDWS.FriendlyDescription: String;
+class function TgxScriptDWS.FriendlyDescription: String;
 begin
 begin
   Result := 'DelphiWebScript script';
   Result := 'DelphiWebScript script';
 end;
 end;
 
 
-class function TGLScriptDWS.ItemCategory: String;
+class function TgxScriptDWS.ItemCategory: String;
 begin
 begin
   Result := '';
   Result := '';
 end;
 end;
 
 
-procedure TGLScriptDWS.Compile;
+procedure TgxScriptDWS.Compile;
 begin
 begin
   Invalidate;
   Invalidate;
   if Assigned(Compiler) then
   if Assigned(Compiler) then
@@ -179,7 +189,7 @@ begin
     raise Exception.Create('No compiler assigned!');
     raise Exception.Create('No compiler assigned!');
 end;
 end;
 
 
-procedure TGLScriptDWS.Execute;
+procedure TgxScriptDWS.Execute;
 begin
 begin
   if (State = ssUncompiled) then
   if (State = ssUncompiled) then
     Compile
     Compile
@@ -189,7 +199,7 @@ begin
     FDWS2Program.Execute;
     FDWS2Program.Execute;
 end;
 end;
 
 
-procedure TGLScriptDWS.Invalidate;
+procedure TgxScriptDWS.Invalidate;
 begin
 begin
   if (State <> ssUncompiled) or Assigned(FDWSProgram) then
   if (State <> ssUncompiled) or Assigned(FDWSProgram) then
   begin
   begin
@@ -198,7 +208,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLScriptDWS.Start;
+procedure TgxScriptDWS.Start;
 begin
 begin
   if (State = ssUncompiled) then
   if (State = ssUncompiled) then
     Compile;
     Compile;
@@ -206,13 +216,13 @@ begin
     FDWS2Program.BeginProgram(False);
     FDWS2Program.BeginProgram(False);
 end;
 end;
 
 
-procedure TGLScriptDWS.Stop;
+procedure TgxScriptDWS.Stop;
 begin
 begin
   if (State = ssRunning) then
   if (State = ssRunning) then
     FDWS2Program.EndProgram;
     FDWS2Program.EndProgram;
 end;
 end;
 
 
-function TGLScriptDWS.Call(aName: String; aParams: array of Variant): Variant;
+function TgxScriptDWS.Call(aName: String; aParams: array of Variant): Variant;
 var
 var
   Symbol: TSymbol;
   Symbol: TSymbol;
   Output: IInfo;
   Output: IInfo;
@@ -231,15 +241,15 @@ begin
           Result := Output.Value;
           Result := Output.Value;
       end
       end
       else
       else
-        raise Exception.Create('Expected TFuncSymbol but found ' +
-          Symbol.ClassName + ' for ' + aName);
+        raise Exception.Create('Expected TFuncSymbol but found ' + Symbol.ClassName +
+          ' for ' + aName);
     end
     end
     else
     else
       raise Exception.Create('Symbol not found for ' + aName);
       raise Exception.Create('Symbol not found for ' + aName);
   end;
   end;
 end;
 end;
 
 
-procedure TGLScriptDWS.SetCompiler(const Value: TGLDelphiWebScript);
+procedure TgxScriptDWS.SetCompiler(const Value: TgxDelphiWebScript);
 begin
 begin
   if Value <> FCompiler then
   if Value <> FCompiler then
   begin
   begin
@@ -248,7 +258,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-function TGLScriptDWS.GetState: TGLScriptState;
+function TgxScriptDWS.GetState: TgxScriptState;
 begin
 begin
   Result := ssUncompiled;
   Result := ssUncompiled;
   if Assigned(FDWSProgram) then
   if Assigned(FDWSProgram) then
@@ -263,32 +273,25 @@ begin
       begin
       begin
         if FDWSProgram.Msgs.HasCompilerErrors then
         if FDWSProgram.Msgs.HasCompilerErrors then
           Result := ssCompileErrors
           Result := ssCompileErrors
-        else if FDWSProgram.Msgs.HasExecutionErrors then
+        else if FDWS2Program.Msgs.HasExecutionErrors then
           Result := ssRunningErrors;
           Result := ssRunningErrors;
-        Errors.Text := FDWSProgram.Msgs.AsInfo;
+        Errors.Text := FDWS2Program.Msgs.AsInfo;
       end;
       end;
     end;
     end;
   end;
   end;
 end;
 end;
 
 
-
-procedure Register;
-begin
-  RegisterClasses([TgxDelphiWebScript, TgxScriptDWS]);
-  RegisterComponents('GLXcene DWS', [TGLDelphiWebScript]);
-end;
-
-
 // --------------------------------------------------
 // --------------------------------------------------
 initialization
 initialization
+
 // --------------------------------------------------
 // --------------------------------------------------
 
 
-RegisterXCollectionItemClass(TGLScriptDWS);
+RegisterXCollectionItemClass(TgxScriptDWS);
 
 
 // --------------------------------------------------
 // --------------------------------------------------
 finalization
 finalization
 // --------------------------------------------------
 // --------------------------------------------------
 
 
-UnregisterXCollectionItemClass(TGLScriptDWS);
+UnregisterXCollectionItemClass(TgxScriptDWS);
 
 
 end.
 end.

+ 1 - 1
Source/FMX/DWX.VectorGeometry.pas → Source/FMX/DWSx.VectorGeometry.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics rendering platform GLScene http://glscene.org
 // The graphics rendering platform GLScene http://glscene.org
 //
 //
-unit DWX.VectorGeometry;
+unit DWSx.VectorGeometry;
 
 
 (* DelphiWebScript symbol creation for GLS.VectorGeometry types and functions *)
 (* DelphiWebScript symbol creation for GLS.VectorGeometry types and functions *)
 
 

+ 0 - 1
Source/FMX/GLX.SceneRegister.pas

@@ -309,7 +309,6 @@ uses
   GLX.VectorTypes,
   GLX.VectorTypes,
   GLX.VectorGeometry,
   GLX.VectorGeometry,
   GLX.ApplicationFileIO,
   GLX.ApplicationFileIO,
-  GLX.Strings,
 
 
   GLX.AsmShader,
   GLX.AsmShader,
   GLX.AsyncHDS,
   GLX.AsyncHDS,

+ 0 - 280
Source/FMX/GLX.ScriptDWS.pas

@@ -1,280 +0,0 @@
-//
-// Graphic Scene Engine, http://glscene.org
-//
-{
-   DelphiWebScript implementation
-    
-}
-unit GLX.ScriptDWS;
-
-interface
-
-uses
-  System.Classes, 
-  System.SysUtils, 
-  DwsComp, 
-  DwsExprs, 
-  DwsSymbols, 
-
-  GLX.GLX.XCollection, 
-  GLX.ScriptBase, 
-  GLX.Manager;
-
-type
-  { This class only adds manager registration logic to the TDelphiWebScriptII
-     class to enable the XCollection items (ie. TgxScriptDWS) retain it's
-     assigned compiler from design to run -time. }
-  TgxDelphiWebScriptII = class(TDelphiWebScriptII)
-    public
-      constructor Create(AOnwer : TComponent); override;
-      destructor Destroy; override;
-  end;
-
-  { Implements DelphiWebScriptII scripting functionality through the
-     abstracted GLX.ScriptBase . }
-  TgxScriptDWS = class(TgxScriptBase)
-    private
-      
-      FDWS2Program : TProgram;
-      FCompiler : TgxDelphiWebScriptII;
-      FCompilerName : String;
-    protected
-      procedure SetCompiler(const Value : TgxDelphiWebScriptII);
-      procedure ReadFromFiler(reader : TReader); override;
-      procedure WriteToFiler(writer : TWriter); override;
-      procedure Loaded; override;
-      procedure Notification(AComponent: TComponent; Operation: TOperation); override;
-      function GetState : TgxScriptState; override;
-    public
-      destructor Destroy; override;
-      procedure Assign(Source: TPersistent); override;
-      procedure Compile; override;
-      procedure Start; override;
-      procedure Stop; override;
-      procedure Execute; override;
-      procedure Invalidate; override;
-      function Call(aName : String;
-        aParams : array of Variant) : Variant; override;
-      class function FriendlyName : String; override;
-      class function FriendlyDescription : String; override;
-      class function ItemCategory : String; override;
-      property DWS2Program : TProgram read FDWS2Program;
-    published
-      property Compiler : TgxDelphiWebScriptII read FCompiler write SetCompiler;
-
-  end;
-
-procedure Register;
-
-// --------------------------------------------------
-implementation
-// --------------------------------------------------
-
-// ---------------
-// --------------- Miscellaneous ---------------
-// ---------------
-
-procedure Register;
-begin
-  RegisterClasses([TgxDelphiWebScriptII, TgxScriptDWS]);
-  RegisterComponents('GLXcene DWS2', [TgxDelphiWebScriptII]);
-end;
-
-
-// ----------
-// ---------- TgxDelphiWebScriptII ----------
-// ----------
-
-constructor TgxDelphiWebScriptII.Create(AOnwer : TComponent);
-begin
-  inherited;
-  RegisterManager(Self);
-end;
-
-destructor TgxDelphiWebScriptII.Destroy;
-begin
-  DeregisterManager(Self);
-  inherited;
-end;
-
-
-// ---------------
-// --------------- TgxScriptDWS ---------------
-// ---------------
-
-destructor TgxScriptDWS.Destroy;
-begin
-  Invalidate;
-  inherited;
-end;
-
-procedure TgxScriptDWS.Assign(Source: TPersistent);
-begin
-  inherited;
-  if Source is TgxScriptDWS then begin
-    Compiler:=TgxScriptDWS(Source).Compiler;
-  end;
-end;
-
-procedure TgxScriptDWS.ReadFromFiler(reader : TReader);
-var
-  archiveVersion : Integer;
-begin
-  inherited;
-  archiveVersion:=reader.ReadInteger;
-  Assert(archiveVersion = 0);
-
-  with reader do begin
-    FCompilerName:=ReadString;
-  end;
-end;
-
-procedure TgxScriptDWS.WriteToFiler(writer : TWriter);
-begin
-  inherited;
-  writer.WriteInteger(0); // archiveVersion
-
-  with writer do begin
-    if Assigned(FCompiler) then
-      WriteString(FCompiler.GetNamePath)
-    else
-      WriteString('');
-  end;
-end;
-
-procedure TgxScriptDWS.Loaded;
-var
-  temp : TComponent;
-begin
-  inherited;
-  if FCompilerName<>'' then begin
-    temp:=FindManager(TgxDelphiWebScript, FCompilerName);
-    if Assigned(temp) then
-      Compiler:=TgxDelphiWebScript(temp);
-    FCompilerName:='';
-  end;
-end;
-
-procedure TgxScriptDWS.Notification(AComponent: TComponent; Operation: TOperation);
-begin
-  if (AComponent = Compiler) and (Operation = opRemove) then
-    Compiler:=nil;
-end;
-
-class function TgxScriptDWS.FriendlyName : String;
-begin
-  Result:='GLX.ScriptDWS';
-end;
-
-class function TgxScriptDWS.FriendlyDescription : String;
-begin
-  Result:='DelphiWebScript script';
-end;
-
-class function TgxScriptDWS.ItemCategory : String;
-begin
-  Result:='';
-end;
-
-procedure TgxScriptDWS.Compile;
-begin
-  Invalidate;
-  if Assigned(Compiler) then
-    FDWS2Program:=Compiler.Compile(Text.Text)
-  else
-    raise Exception.Create('No compiler assigned!');
-end;
-
-procedure TgxScriptDWS.Execute;
-begin
-  if (State = ssUncompiled) then
-    Compile
-  else if (State = ssRunning) then
-    Stop;
-  if (State = ssCompiled) then
-    FDWS2Program.Execute;
-end;
-
-procedure TgxScriptDWS.Invalidate;
-begin
-  if (State <> ssUncompiled) or Assigned(FDWSProgram) then begin
-    Stop;
-    FreeAndNil(FDWSProgram);
-  end;
-end;
-
-procedure TgxScriptDWS.Start;
-begin
-  if (State = ssUncompiled) then
-    Compile;
-  if (State = ssCompiled) then
-    FDWS2Program.BeginProgram(False);
-end;
-
-procedure TgxScriptDWS.Stop;
-begin
-  if (State = ssRunning) then
-    FDWS2Program.EndProgram;
-end;
-
-function TgxScriptDWS.Call(aName: String; aParams: array of Variant) : Variant;
-var
-  Symbol : TSymbol;
-  Output : IInfo;
-begin
-  if (State <> ssRunning) then
-    Start;
-  if State = ssRunning then begin
-    Symbol:=FDWSProgram.Table.FindSymbol(aName);
-    if Assigned(Symbol) then begin
-      if Symbol is TFuncSymbol then begin
-        Output:=FDWSProgram.Info.Func[aName].Call(aParams);
-        if Assigned(Output) then
-          Result:=Output.Value;
-      end else
-        raise Exception.Create('Expected TFuncSymbol but found '+Symbol.ClassName+' for '+aName);
-    end else
-      raise Exception.Create('Symbol not found for '+aName);
-  end;
-end;
-
-procedure TgxScriptDWS.SetCompiler(const Value : TgxDelphiWebScript);
-begin
-  if Value<>FCompiler then begin
-    FCompiler:=Value;
-    Invalidate;
-  end;
-end;
-
-function TgxScriptDWS.GetState : TgxScriptState;
-begin
-  Result:=ssUncompiled;
-  if Assigned(FDWSProgram) then begin
-    case FDWSProgram.ProgramState of
-      psReadyToRun : Result:=ssCompiled;
-      psRunning : Result:=ssRunning;
-    else
-      if FDWSProgram.Msgs.HasErrors then begin
-        if FDWSProgram.Msgs.HasCompilerErrors then
-          Result:=ssCompileErrors
-        else if FDWS2Program.Msgs.HasExecutionErrors then
-          Result:=ssRunningErrors;
-        Errors.Text:=FDWS2Program.Msgs.AsInfo;
-      end;
-    end;
-  end;
-end;
-
-// --------------------------------------------------
-initialization
-// --------------------------------------------------
-
-  RegisterXCollectionItemClass(TgxScriptDWS);
-
-// --------------------------------------------------
-finalization
-// --------------------------------------------------
-
-  UnregisterXCollectionItemClass(TgxScriptDWS);
-
-end.

+ 1 - 1
Source/FMX/Pythonx.Script.pas

@@ -16,7 +16,7 @@ uses
   GXL.ScriptBase,
   GXL.ScriptBase,
   GXL.Manager,
   GXL.Manager,
 
 
-  Python.Engine;
+  Python.Engine; // from ... current version of pyscript
 
 
 type
 type
   (* This class only adds manager registration logic to the TPythonEngine
   (* This class only adds manager registration logic to the TPythonEngine

+ 2 - 5
Source/FMX/GLX.SDLContext.pas → Source/FMX/SDLx.Context.pas

@@ -1,10 +1,7 @@
 //
 //
-//
 // The graphics platform GLXcene https://github.com/glscene
 // The graphics platform GLXcene https://github.com/glscene
 //
 //
-//
-
-unit GLX.SDLContext;
+unit SDLx.Context;
 
 
 (*
 (*
    SDL specific Context and Viewer.
    SDL specific Context and Viewer.
@@ -27,7 +24,7 @@ uses
   GLX.XOpenGL,
   GLX.XOpenGL,
   GLX.Scene,
   GLX.Scene,
   GLX.Context,
   GLX.Context,
-  GLX.SDLWindow;
+  SDLx.Window;
 
 
 type
 type
 
 

+ 1 - 1
Source/FMX/GLX.SDLWindow.pas → Source/FMX/SDLx.Window.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLXcene https://github.com/glscene
 // The graphics platform GLXcene https://github.com/glscene
 //
 //
-unit GLX.SDLWindow;
+unit SDLx.Window;
 
 
 (*
 (*
   Non visual wrapper around basic SDL window features.
   Non visual wrapper around basic SDL window features.

+ 0 - 1262
Source/FMX/Soundx.BASSImport.pas

@@ -1,1262 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit Soundx.BASSImport;
-
-(*
-  BASS 2.4 Delphi unit
-  Copyright (c) 1999-2013 Un4seen Developments Ltd.
-  See the BASS.CHM file for more detailed documentation
-  How to install
-  --------------
-  Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir
-  NOTE: Delphi users should use the BASS_UNICODE flag where possible
-*)
-
-interface
-
-{$I GLX.Scene.inc}
-
-{$IFDEF MSWINDOWS}
-uses
-  Winapi.Windows;
-{$ENDIF}
-
-const
-  BASSVERSION = $204;             // API version
-  BASSVERSIONTEXT = '2.4';
-
-  // Use these to test for error from functions that return a DWORD or QWORD
-  DW_ERROR = LongWord(-1); // -1 (DWORD)
-  QW_ERROR = Int64(-1);    // -1 (QWORD)
-
-  // Error codes returned by BASS_ErrorGetCode()
-  BASS_OK                 = 0;    // all is OK
-  BASS_ERROR_MEM          = 1;    // memory error
-  BASS_ERROR_FILEOPEN     = 2;    // can't open the file
-  BASS_ERROR_DRIVER       = 3;    // can't find a free sound driver
-  BASS_ERROR_BUFLOST      = 4;    // the sample buffer was lost
-  BASS_ERROR_HANDLE       = 5;    // invalid handle
-  BASS_ERROR_FORMAT       = 6;    // unsupported sample format
-  BASS_ERROR_POSITION     = 7;    // invalid position
-  BASS_ERROR_INIT         = 8;    // BASS_Init has not been successfully called
-  BASS_ERROR_START        = 9;    // BASS_Start has not been successfully called
-  BASS_ERROR_ALREADY      = 14;   // already initialized/paused/whatever
-  BASS_ERROR_NOCHAN       = 18;   // can't get a free channel
-  BASS_ERROR_ILLTYPE      = 19;   // an illegal type was specified
-  BASS_ERROR_ILLPARAM     = 20;   // an illegal parameter was specified
-  BASS_ERROR_NO3D         = 21;   // no 3D support
-  BASS_ERROR_NOEAX        = 22;   // no EAX support
-  BASS_ERROR_DEVICE       = 23;   // illegal device number
-  BASS_ERROR_NOPLAY       = 24;   // not playing
-  BASS_ERROR_FREQ         = 25;   // illegal sample rate
-  BASS_ERROR_NOTFILE      = 27;   // the stream is not a file stream
-  BASS_ERROR_NOHW         = 29;   // no hardware voices available
-  BASS_ERROR_EMPTY        = 31;   // the MOD music has no sequence data
-  BASS_ERROR_NONET        = 32;   // no internet connection could be opened
-  BASS_ERROR_CREATE       = 33;   // couldn't create the file
-  BASS_ERROR_NOFX         = 34;   // effects are not enabled
-  BASS_ERROR_NOTAVAIL     = 37;   // requested data is not available
-  BASS_ERROR_DECODE       = 38;   // the channel is a "decoding channel"
-  BASS_ERROR_DX           = 39;   // a sufficient DirectX version is not installed
-  BASS_ERROR_TIMEOUT      = 40;   // connection timedout
-  BASS_ERROR_FILEFORM     = 41;   // unsupported file format
-  BASS_ERROR_SPEAKER      = 42;   // unavailable speaker
-  BASS_ERROR_VERSION      = 43;   // invalid BASS version (used by add-ons)
-  BASS_ERROR_CODEC        = 44;   // codec is not available/supported
-  BASS_ERROR_ENDED        = 45;   // the channel/file has ended
-  BASS_ERROR_BUSY         = 46;   // the device is busy
-  BASS_ERROR_UNKNOWN      = -1;   // some other mystery problem
-
-  // BASS_SetConfig options
-  BASS_CONFIG_BUFFER        = 0;
-  BASS_CONFIG_UPDATEPERIOD  = 1;
-  BASS_CONFIG_GVOL_SAMPLE   = 4;
-  BASS_CONFIG_GVOL_STREAM   = 5;
-  BASS_CONFIG_GVOL_MUSIC    = 6;
-  BASS_CONFIG_CURVE_VOL     = 7;
-  BASS_CONFIG_CURVE_PAN     = 8;
-  BASS_CONFIG_FLOATDSP      = 9;
-  BASS_CONFIG_3DALGORITHM   = 10;
-  BASS_CONFIG_NET_TIMEOUT   = 11;
-  BASS_CONFIG_NET_BUFFER    = 12;
-  BASS_CONFIG_PAUSE_NOPLAY  = 13;
-  BASS_CONFIG_NET_PREBUF    = 15;
-  BASS_CONFIG_NET_PASSIVE   = 18;
-  BASS_CONFIG_REC_BUFFER    = 19;
-  BASS_CONFIG_NET_PLAYLIST  = 21;
-  BASS_CONFIG_MUSIC_VIRTUAL = 22;
-  BASS_CONFIG_VERIFY        = 23;
-  BASS_CONFIG_UPDATETHREADS = 24;
-  BASS_CONFIG_DEV_BUFFER    = 27;
-  BASS_CONFIG_VISTA_TRUEPOS = 30;
-  BASS_CONFIG_IOS_MIXAUDIO  = 34;
-  BASS_CONFIG_DEV_DEFAULT   = 36;
-  BASS_CONFIG_NET_READTIMEOUT = 37;
-  BASS_CONFIG_VISTA_SPEAKERS = 38;
-  BASS_CONFIG_IOS_SPEAKER   = 39;
-  BASS_CONFIG_HANDLES       = 41;
-  BASS_CONFIG_UNICODE       = 42;
-  BASS_CONFIG_SRC           = 43;
-  BASS_CONFIG_SRC_SAMPLE    = 44;
-  BASS_CONFIG_ASYNCFILE_BUFFER = 45;
-  BASS_CONFIG_OGG_PRESCAN   = 47;
-
-  // BASS_SetConfigPtr options
-  BASS_CONFIG_NET_AGENT     = 16;
-  BASS_CONFIG_NET_PROXY     = 17;
-
-  // BASS_Init flags
-  BASS_DEVICE_8BITS       = 1;    // 8 bit resolution, else 16 bit
-  BASS_DEVICE_MONO        = 2;    // mono, else stereo
-  BASS_DEVICE_3D          = 4;    // enable 3D functionality
-  {
-    If the BASS_DEVICE_3D flag is not specified when
-    initilizing BASS, then the 3D flags (BASS_SAMPLE_3D
-    and BASS_MUSIC_3D) are ignored when loading/creating
-    a sample/stream/music.
-  }
-  BASS_DEVICE_LATENCY     = $100;  // calculate device latency (BASS_INFO struct)
-  BASS_DEVICE_CPSPEAKERS  = $400; // detect speakers via Windows control panel
-  BASS_DEVICE_SPEAKERS    = $800; // force enabling of speaker assignment
-  BASS_DEVICE_NOSPEAKER   = $1000; // ignore speaker arrangement
-  BASS_DEVICE_DMIX        = $2000; // use ALSA "dmix" plugin
-  BASS_DEVICE_FREQ        = $4000; // set device sample rate
-
-  // DirectSound interfaces (for use with BASS_GetDSoundObject)
-  BASS_OBJECT_DS          = 1;   // IDirectSound
-  BASS_OBJECT_DS3DL       = 2;   // IDirectSound3DListener
-
-  // BASS_DEVICEINFO flags
-  BASS_DEVICE_ENABLED     = 1;
-  BASS_DEVICE_DEFAULT     = 2;
-  BASS_DEVICE_INIT        = 4;
-
-  // BASS_INFO flags (from DSOUND.H)
-  DSCAPS_CONTINUOUSRATE   = $00000010;     // supports all sample rates between min/maxrate
-  DSCAPS_EMULDRIVER       = $00000020;     // device does NOT have hardware DirectSound support
-  DSCAPS_CERTIFIED        = $00000040;     // device driver has been certified by Microsoft
-  {
-    The following flags tell what type of samples are
-    supported by HARDWARE mixing, all these formats are
-    supported by SOFTWARE mixing
-  }
-  DSCAPS_SECONDARYMONO    = $00000100;     // mono
-  DSCAPS_SECONDARYSTEREO  = $00000200;     // stereo
-  DSCAPS_SECONDARY8BIT    = $00000400;     // 8 bit
-  DSCAPS_SECONDARY16BIT   = $00000800;     // 16 bit
-
-  // BASS_RECORDINFO flags (from DSOUND.H)
-  DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER;  // device does NOT have hardware DirectSound recording support
-  DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED;    // device driver has been certified by Microsoft
-
-  // defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)
-  {$IFDEF VXS_DELPHI_XE_DOWN}
-  WAVE_FORMAT_1M08       = $00000001;      // 11.025 kHz, Mono,   8-bit
-  WAVE_FORMAT_1S08       = $00000002;      // 11.025 kHz, Stereo, 8-bit
-  WAVE_FORMAT_1M16       = $00000004;      // 11.025 kHz, Mono,   16-bit
-  WAVE_FORMAT_1S16       = $00000008;      // 11.025 kHz, Stereo, 16-bit
-  WAVE_FORMAT_2M08       = $00000010;      // 22.05  kHz, Mono,   8-bit
-  WAVE_FORMAT_2S08       = $00000020;      // 22.05  kHz, Stereo, 8-bit
-  WAVE_FORMAT_2M16       = $00000040;      // 22.05  kHz, Mono,   16-bit
-  WAVE_FORMAT_2S16       = $00000080;      // 22.05  kHz, Stereo, 16-bit
-  WAVE_FORMAT_4M08       = $00000100;      // 44.1   kHz, Mono,   8-bit
-  WAVE_FORMAT_4S08       = $00000200;      // 44.1   kHz, Stereo, 8-bit
-  WAVE_FORMAT_4M16       = $00000400;      // 44.1   kHz, Mono,   16-bit
-  WAVE_FORMAT_4S16       = $00000800;      // 44.1   kHz, Stereo, 16-bit
-  {$ENDIF}
-  BASS_SAMPLE_8BITS       = 1;   // 8 bit
-  BASS_SAMPLE_FLOAT       = 256; // 32-bit floating-point
-  BASS_SAMPLE_MONO        = 2;   // mono
-  BASS_SAMPLE_LOOP        = 4;   // looped
-  BASS_SAMPLE_3D          = 8;   // 3D functionality
-  BASS_SAMPLE_SOFTWARE    = 16;  // not using hardware mixing
-  BASS_SAMPLE_MUTEMAX     = 32;  // mute at max distance (3D only)
-  BASS_SAMPLE_VAM         = 64;  // DX7 voice allocation & management
-  BASS_SAMPLE_FX          = 128; // old implementation of DX8 effects
-  BASS_SAMPLE_OVER_VOL    = $10000; // override lowest volume
-  BASS_SAMPLE_OVER_POS    = $20000; // override longest playing
-  BASS_SAMPLE_OVER_DIST   = $30000; // override furthest from listener (3D only)
-
-  BASS_STREAM_PRESCAN     = $20000; // enable pin-point seeking/length (MP3/MP2/MP1)
-  BASS_MP3_SETPOS         = BASS_STREAM_PRESCAN;
-  BASS_STREAM_AUTOFREE	  = $40000; // automatically free the stream when it stop/ends
-  BASS_STREAM_RESTRATE	  = $80000; // restrict the download rate of internet file streams
-  BASS_STREAM_BLOCK       = $100000;// download/play internet file stream in small blocks
-  BASS_STREAM_DECODE      = $200000;// don't play the stream, only decode (BASS_ChannelGetData)
-  BASS_STREAM_STATUS      = $800000;// give server status info (HTTP/ICY tags) in DOWNLOADPROC
-
-  BASS_MUSIC_FLOAT        = BASS_SAMPLE_FLOAT; // 32-bit floating-point
-  BASS_MUSIC_MONO         = BASS_SAMPLE_MONO; // force mono mixing (less CPU usage)
-  BASS_MUSIC_LOOP         = BASS_SAMPLE_LOOP; // loop music
-  BASS_MUSIC_3D           = BASS_SAMPLE_3D; // enable 3D functionality
-  BASS_MUSIC_FX           = BASS_SAMPLE_FX; // enable old implementation of DX8 effects
-  BASS_MUSIC_AUTOFREE     = BASS_STREAM_AUTOFREE; // automatically free the music when it stop/ends
-  BASS_MUSIC_DECODE       = BASS_STREAM_DECODE; // don't play the music, only decode (BASS_ChannelGetData)
-  BASS_MUSIC_PRESCAN      = BASS_STREAM_PRESCAN; // calculate playback length
-  BASS_MUSIC_CALCLEN      = BASS_MUSIC_PRESCAN;
-  BASS_MUSIC_RAMP         = $200;  // normal ramping
-  BASS_MUSIC_RAMPS        = $400;  // sensitive ramping
-  BASS_MUSIC_SURROUND     = $800;  // surround sound
-  BASS_MUSIC_SURROUND2    = $1000; // surround sound (mode 2)
-  BASS_MUSIC_FT2MOD       = $2000; // play .MOD as FastTracker 2 does
-  BASS_MUSIC_PT1MOD       = $4000; // play .MOD as ProTracker 1 does
-  BASS_MUSIC_NONINTER     = $10000; // non-interpolated sample mixing
-  BASS_MUSIC_SINCINTER    = $800000; // sinc interpolated sample mixing
-  BASS_MUSIC_POSRESET     = $8000; // stop all notes when moving position
-  BASS_MUSIC_POSRESETEX   = $400000; // stop all notes and reset bmp/etc when moving position
-  BASS_MUSIC_STOPBACK     = $80000; // stop the music on a backwards jump effect
-  BASS_MUSIC_NOSAMPLE     = $100000; // don't load the samples
-
-  // Speaker assignment flags
-  BASS_SPEAKER_FRONT      = $1000000;  // front speakers
-  BASS_SPEAKER_REAR       = $2000000;  // rear/side speakers
-  BASS_SPEAKER_CENLFE     = $3000000;  // center & LFE speakers (5.1)
-  BASS_SPEAKER_REAR2      = $4000000;  // rear center speakers (7.1)
-  BASS_SPEAKER_LEFT       = $10000000; // modifier: left
-  BASS_SPEAKER_RIGHT      = $20000000; // modifier: right
-  BASS_SPEAKER_FRONTLEFT  = BASS_SPEAKER_FRONT or BASS_SPEAKER_LEFT;
-  BASS_SPEAKER_FRONTRIGHT = BASS_SPEAKER_FRONT or BASS_SPEAKER_RIGHT;
-  BASS_SPEAKER_REARLEFT   = BASS_SPEAKER_REAR or BASS_SPEAKER_LEFT;
-  BASS_SPEAKER_REARRIGHT  = BASS_SPEAKER_REAR or BASS_SPEAKER_RIGHT;
-  BASS_SPEAKER_CENTER     = BASS_SPEAKER_CENLFE or BASS_SPEAKER_LEFT;
-  BASS_SPEAKER_LFE        = BASS_SPEAKER_CENLFE or BASS_SPEAKER_RIGHT;
-  BASS_SPEAKER_REAR2LEFT  = BASS_SPEAKER_REAR2 or BASS_SPEAKER_LEFT;
-  BASS_SPEAKER_REAR2RIGHT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_RIGHT;
-
-  BASS_ASYNCFILE          = $40000000;
-  BASS_UNICODE            = $80000000;
-
-  BASS_RECORD_PAUSE       = $8000; // start recording paused
-
-  // DX7 voice allocation & management flags
-  BASS_VAM_HARDWARE       = 1;
-  {
-    Play the sample in hardware. If no hardware voices are available then
-    the "play" call will fail
-  }
-  BASS_VAM_SOFTWARE       = 2;
-  {
-    Play the sample in software (ie. non-accelerated). No other VAM flags
-    may be used together with this flag.
-  }
-
-  // DX7 voice management flags
-  {
-    These flags enable hardware resource stealing... if the hardware has no
-    available voices, a currently playing buffer will be stopped to make room
-    for the new buffer. NOTE: only samples loaded/created with the
-    BASS_SAMPLE_VAM flag are considered for termination by the DX7 voice
-    management.
-  }
-  BASS_VAM_TERM_TIME      = 4;
-  {
-    If there are no free hardware voices, the buffer to be terminated will be
-    the one with the least time left to play.
-  }
-  BASS_VAM_TERM_DIST      = 8;
-  {
-    If there are no free hardware voices, the buffer to be terminated will be
-    one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is
-    beyond
-    it's max distance. If there are no buffers that match this criteria, then
-    the "play" call will fail.
-  }
-  BASS_VAM_TERM_PRIO      = 16;
-  {
-    If there are no free hardware voices, the buffer to be terminated will be
-    the one with the lowest priority.
-  }
-
-  // BASS_CHANNELINFO types
-  BASS_CTYPE_SAMPLE       = 1;
-  BASS_CTYPE_RECORD       = 2;
-  BASS_CTYPE_STREAM       = $10000;
-  BASS_CTYPE_STREAM_OGG   = $10002;
-  BASS_CTYPE_STREAM_MP1   = $10003;
-  BASS_CTYPE_STREAM_MP2   = $10004;
-  BASS_CTYPE_STREAM_MP3   = $10005;
-  BASS_CTYPE_STREAM_AIFF  = $10006;
-  BASS_CTYPE_STREAM_WAV   = $40000; // WAVE flag, LOWORD=codec
-  BASS_CTYPE_STREAM_WAV_PCM = $50001;
-  BASS_CTYPE_STREAM_WAV_FLOAT = $50003;
-  BASS_CTYPE_MUSIC_MOD    = $20000;
-  BASS_CTYPE_MUSIC_MTM    = $20001;
-  BASS_CTYPE_MUSIC_S3M    = $20002;
-  BASS_CTYPE_MUSIC_XM     = $20003;
-  BASS_CTYPE_MUSIC_IT     = $20004;
-  BASS_CTYPE_MUSIC_MO3    = $00100; // MO3 flag
-
-  // 3D channel modes
-  BASS_3DMODE_NORMAL      = 0; // normal 3D processing
-  BASS_3DMODE_RELATIVE    = 1; // position is relative to the listener
-  {
-    The channel's 3D position (position/velocity/
-    orientation) are relative to the listener. When the
-    listener's position/velocity/orientation is changed
-    with BASS_Set3DPosition, the channel's position
-    relative to the listener does not change.
-  }
-  BASS_3DMODE_OFF         = 2; // no 3D processing
-  {
-    Turn off 3D processing on the channel, the sound will
-    be played in the center.
-  }
-
-  // software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
-  BASS_3DALG_DEFAULT      = 0;
-  {
-    default algorithm (currently translates to BASS_3DALG_OFF)
-  }
-  BASS_3DALG_OFF          = 1;
-  {
-    Uses normal left and right panning. The vertical axis is ignored except
-    for scaling of volume due to distance. Doppler shift and volume scaling
-    are still applied, but the 3D filtering is not performed. This is the
-    most CPU efficient software implementation, but provides no virtual 3D
-    audio effect. Head Related Transfer Function processing will not be done.
-    Since only normal stereo panning is used, a channel using this algorithm
-    may be accelerated by a 2D hardware voice if no free 3D hardware voices
-    are available.
-  }
-  BASS_3DALG_FULL         = 2;
-  {
-    This algorithm gives the highest quality 3D audio effect, but uses more
-    CPU. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM
-    drivers, if this mode is not available then BASS_3DALG_OFF will be used
-    instead.
-  }
-  BASS_3DALG_LIGHT        = 3;
-  {
-    This algorithm gives a good 3D audio effect, and uses less CPU than the
-    FULL mode. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM
-    drivers, if this mode is not available then BASS_3DALG_OFF will be used
-    instead.
-  }
-
-  // EAX environments, use with BASS_SetEAXParameters
-  EAX_ENVIRONMENT_GENERIC           = 0;
-  EAX_ENVIRONMENT_PADDEDCELL        = 1;
-  EAX_ENVIRONMENT_ROOM              = 2;
-  EAX_ENVIRONMENT_BATHROOM          = 3;
-  EAX_ENVIRONMENT_LIVINGROOM        = 4;
-  EAX_ENVIRONMENT_STONEROOM         = 5;
-  EAX_ENVIRONMENT_AUDITORIUM        = 6;
-  EAX_ENVIRONMENT_CONCERTHALL       = 7;
-  EAX_ENVIRONMENT_CAVE              = 8;
-  EAX_ENVIRONMENT_ARENA             = 9;
-  EAX_ENVIRONMENT_HANGAR            = 10;
-  EAX_ENVIRONMENT_CARPETEDHALLWAY   = 11;
-  EAX_ENVIRONMENT_HALLWAY           = 12;
-  EAX_ENVIRONMENT_STONECORRIDOR     = 13;
-  EAX_ENVIRONMENT_ALLEY             = 14;
-  EAX_ENVIRONMENT_FOREST            = 15;
-  EAX_ENVIRONMENT_CITY              = 16;
-  EAX_ENVIRONMENT_MOUNTAINS         = 17;
-  EAX_ENVIRONMENT_QUARRY            = 18;
-  EAX_ENVIRONMENT_PLAIN             = 19;
-  EAX_ENVIRONMENT_PARKINGLOT        = 20;
-  EAX_ENVIRONMENT_SEWERPIPE         = 21;
-  EAX_ENVIRONMENT_UNDERWATER        = 22;
-  EAX_ENVIRONMENT_DRUGGED           = 23;
-  EAX_ENVIRONMENT_DIZZY             = 24;
-  EAX_ENVIRONMENT_PSYCHOTIC         = 25;
-  // total number of environments
-  EAX_ENVIRONMENT_COUNT             = 26;
-
-  BASS_STREAMPROC_END = $80000000; // end of user stream flag
-
-  // BASS_StreamCreateFileUser file systems
-  STREAMFILE_NOBUFFER     = 0;
-  STREAMFILE_BUFFER       = 1;
-  STREAMFILE_BUFFERPUSH   = 2;
-
-  // BASS_StreamPutFileData options
-  BASS_FILEDATA_END       = 0; // end & close the file
-
-  // BASS_StreamGetFilePosition modes
-  BASS_FILEPOS_CURRENT    = 0;
-  BASS_FILEPOS_DECODE     = BASS_FILEPOS_CURRENT;
-  BASS_FILEPOS_DOWNLOAD   = 1;
-  BASS_FILEPOS_END        = 2;
-  BASS_FILEPOS_START      = 3;
-  BASS_FILEPOS_CONNECTED  = 4;
-  BASS_FILEPOS_BUFFER     = 5;
-
-  // BASS_ChannelSetSync types
-  {
-    Sync types (with BASS_ChannelSetSync() "param" and
-    SYNCPROC "data" definitions) & flags.
-  }
-  BASS_SYNC_POS           = 0;
-  {
-    Sync when a channel reaches a position.
-    param: position in bytes
-    data : not used
-  }
-  BASS_SYNC_END           = 2;
-  {
-    Sync when a channel reaches the end.
-    param: not used
-    data : not used
-  }
-  BASS_SYNC_META          = 4;
-  {
-    Sync when metadata is received in a stream.
-    param: not used
-    data : pointer to the metadata
-  }
-  BASS_SYNC_SLIDE         = 5;
-  {
-    Sync when an attribute slide is completed.
-    param: not used
-    data : the type of slide completed (one of the BASS_SLIDE_xxx values)
-  }
-  BASS_SYNC_STALL         = 6;
-  {
-    Sync when playback has stalled.
-    param: not used
-    data : 0=stalled, 1=resumed
-  }
-  BASS_SYNC_DOWNLOAD      = 7;
-  {
-    Sync when downloading of an internet (or "buffered" user file) stream has ended.
-    param: not used
-    data : not used
-  }
-  BASS_SYNC_FREE          = 8;
-  {
-    Sync when a channel is freed.
-    param: not used
-    data : not used
-  }
-  BASS_SYNC_SETPOS        = 11;
-  {
-    Sync when a channel's position is set.
-    param: not used
-    data : 0 = playback buffer not flushed, 1 = playback buffer flushed
-  }
-  BASS_SYNC_MUSICPOS      = 10;
-  {
-    Sync when a MOD music reaches an order:row position.
-    param: LOWORD=order (0=first, -1=all) HIWORD=row (0=first, -1=all)
-    data : LOWORD=order HIWORD=row
-  }
-  BASS_SYNC_MUSICINST     = 1;
-  {
-    Sync when an instrument (sample for the non-instrument based formats)
-    is played in a MOD music (not including retrigs).
-    param: LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=all)
-    data : LOWORD=note HIWORD=volume (0-64)
-  }
-  BASS_SYNC_MUSICFX       = 3;
-  {
-    Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) is used.
-    param: 0:data=pos, 1:data="x" value
-    data : param=0: LOWORD=order HIWORD=row, param=1: "x" value
-  }
-  BASS_SYNC_OGG_CHANGE    = 12;
-  { FLAG: post a Windows message (instead of callback)
-    When using a window message "callback", the message to post is given in the "proc"
-    parameter of BASS_ChannelSetSync, and is posted to the window specified in the BASS_Init
-    call. The message parameters are: WPARAM = data, LPARAM = user.
-  }
-  BASS_SYNC_MIXTIME       = $40000000; // FLAG: sync at mixtime, else at playtime
-  BASS_SYNC_ONETIME       = $80000000; // FLAG: sync only once, else continuously
-
-  // BASS_ChannelIsActive return values
-  BASS_ACTIVE_STOPPED = 0;
-  BASS_ACTIVE_PLAYING = 1;
-  BASS_ACTIVE_STALLED = 2;
-  BASS_ACTIVE_PAUSED  = 3;
-
-  // Channel attributes
-  BASS_ATTRIB_FREQ                  = 1;
-  BASS_ATTRIB_VOL                   = 2;
-  BASS_ATTRIB_PAN                   = 3;
-  BASS_ATTRIB_EAXMIX                = 4;
-  BASS_ATTRIB_NOBUFFER              = 5;
-  BASS_ATTRIB_CPU                   = 7;
-  BASS_ATTRIB_SRC                   = 8;
-  BASS_ATTRIB_MUSIC_AMPLIFY         = $100;
-  BASS_ATTRIB_MUSIC_PANSEP          = $101;
-  BASS_ATTRIB_MUSIC_PSCALER         = $102;
-  BASS_ATTRIB_MUSIC_BPM             = $103;
-  BASS_ATTRIB_MUSIC_SPEED           = $104;
-  BASS_ATTRIB_MUSIC_VOL_GLOBAL      = $105;
-  BASS_ATTRIB_MUSIC_VOL_CHAN        = $200; // + channel #
-  BASS_ATTRIB_MUSIC_VOL_INST        = $300; // + instrument #
-
-  // BASS_ChannelGetData flags
-  BASS_DATA_AVAILABLE = 0;        // query how much data is buffered
-  BASS_DATA_FLOAT     = $40000000; // flag: return floating-point sample data
-  BASS_DATA_FFT256    = $80000000; // 256 sample FFT
-  BASS_DATA_FFT512    = $80000001; // 512 FFT
-  BASS_DATA_FFT1024   = $80000002; // 1024 FFT
-  BASS_DATA_FFT2048   = $80000003; // 2048 FFT
-  BASS_DATA_FFT4096   = $80000004; // 4096 FFT
-  BASS_DATA_FFT8192   = $80000005; // 8192 FFT
-  BASS_DATA_FFT16384  = $80000006; // 16384 FFT
-  BASS_DATA_FFT_INDIVIDUAL = $10; // FFT flag: FFT for each channel, else all combined
-  BASS_DATA_FFT_NOWINDOW = $20;   // FFT flag: no Hanning window
-  BASS_DATA_FFT_REMOVEDC = $40;   // FFT flag: pre-remove DC bias
-  BASS_DATA_FFT_COMPLEX = $80;    // FFT flag: return complex data
-
-  // BASS_ChannelGetTags types : what's returned
-  BASS_TAG_ID3        = 0; // ID3v1 tags : TAG_ID3 structure
-  BASS_TAG_ID3V2      = 1; // ID3v2 tags : variable length block
-  BASS_TAG_OGG        = 2; // OGG comments : series of null-terminated UTF-8 strings
-  BASS_TAG_HTTP       = 3; // HTTP headers : series of null-terminated ANSI strings
-  BASS_TAG_ICY        = 4; // ICY headers : series of null-terminated ANSI strings
-  BASS_TAG_META       = 5; // ICY metadata : ANSI string
-  BASS_TAG_APE        = 6; // APEv2 tags : series of null-terminated UTF-8 strings
-  BASS_TAG_MP4        = 7; // MP4/iTunes metadata : series of null-terminated UTF-8 strings
-  BASS_TAG_VENDOR     = 9; // OGG encoder : UTF-8 string
-  BASS_TAG_LYRICS3    = 10; // Lyric3v2 tag : ASCII string
-  BASS_TAG_CA_CODEC   = 11;	// CoreAudio codec info : TAG_CA_CODEC structure
-  BASS_TAG_MF         = 13;	// Media Foundation tags : series of null-terminated UTF-8 strings
-  BASS_TAG_WAVEFORMAT = 14;	// WAVE format : WAVEFORMATEEX structure
-  BASS_TAG_RIFF_INFO  = $100; // RIFF "INFO" tags : series of null-terminated ANSI strings
-  BASS_TAG_RIFF_BEXT  = $101; // RIFF/BWF "bext" tags : TAG_BEXT structure
-  BASS_TAG_RIFF_CART  = $102; // RIFF/BWF "cart" tags : TAG_CART structure
-  BASS_TAG_RIFF_DISP  = $103; // RIFF "DISP" text tag : ANSI string
-  BASS_TAG_APE_BINARY = $1000; // + index #, binary APEv2 tag : TAG_APE_BINARY structure
-  BASS_TAG_MUSIC_NAME = $10000;	// MOD music name : ANSI string
-  BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string
-  BASS_TAG_MUSIC_ORDERS = $10002; // MOD order list : BYTE array of pattern numbers
-  BASS_TAG_MUSIC_INST = $10100;	// + instrument #, MOD instrument name : ANSI string
-  BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string
-
-  // BASS_ChannelGetLength/GetPosition/SetPosition modes
-  BASS_POS_BYTE           = 0; // byte position
-  BASS_POS_MUSIC_ORDER    = 1; // order.row position, MAKELONG(order,row)
-  BASS_POS_OGG            = 3; // OGG bitstream number
-  BASS_POS_DECODE         = $10000000; // flag: get the decoding (not playing) position
-  BASS_POS_DECODETO       = $20000000; // flag: decode to the position instead of seeking
-
-  // BASS_RecordSetInput flags
-  BASS_INPUT_OFF    = $10000;
-  BASS_INPUT_ON     = $20000;
-
-  BASS_INPUT_TYPE_MASK    = $FF000000;
-  BASS_INPUT_TYPE_UNDEF   = $00000000;
-  BASS_INPUT_TYPE_DIGITAL = $01000000;
-  BASS_INPUT_TYPE_LINE    = $02000000;
-  BASS_INPUT_TYPE_MIC     = $03000000;
-  BASS_INPUT_TYPE_SYNTH   = $04000000;
-  BASS_INPUT_TYPE_CD      = $05000000;
-  BASS_INPUT_TYPE_PHONE   = $06000000;
-  BASS_INPUT_TYPE_SPEAKER = $07000000;
-  BASS_INPUT_TYPE_WAVE    = $08000000;
-  BASS_INPUT_TYPE_AUX     = $09000000;
-  BASS_INPUT_TYPE_ANALOG  = $0A000000;
-
-  BASS_FX_DX8_CHORUS	  = 0;
-  BASS_FX_DX8_COMPRESSOR  = 1;
-  BASS_FX_DX8_DISTORTION  = 2;
-  BASS_FX_DX8_ECHO        = 3;
-  BASS_FX_DX8_FLANGER     = 4;
-  BASS_FX_DX8_GARGLE      = 5;
-  BASS_FX_DX8_I3DL2REVERB = 6;
-  BASS_FX_DX8_PARAMEQ     = 7;
-  BASS_FX_DX8_REVERB      = 8;
-
-  BASS_DX8_PHASE_NEG_180 = 0;
-  BASS_DX8_PHASE_NEG_90  = 1;
-  BASS_DX8_PHASE_ZERO    = 2;
-  BASS_DX8_PHASE_90      = 3;
-  BASS_DX8_PHASE_180     = 4;
-
-type
-  DWORD = LongWord;
-  BOOL = LongBool;
-  FLOAT = Single;
-  QWORD = Int64;
-
-  HMUSIC = DWORD;       // MOD music handle
-  HSAMPLE = DWORD;      // sample handle
-  HCHANNEL = DWORD;     // playing sample's channel handle
-  HSTREAM = DWORD;      // sample stream handle
-  HRECORD = DWORD;      // recording handle
-  HSYNC = DWORD;        // synchronizer handle
-  HDSP = DWORD;         // DSP handle
-  HFX = DWORD;          // DX8 effect handle
-  HPLUGIN = DWORD;      // Plugin handle
-
-  // Device info structure
-  BASS_DEVICEINFO = record
-    name: PAnsiChar;    // description
-    driver: PAnsiChar;  // driver
-    flags: DWORD;
-  end;
-
-  BASS_INFO = record
-    flags: DWORD;       // device capabilities (DSCAPS_xxx flags)
-    hwsize: DWORD;      // size of total device hardware memory
-    hwfree: DWORD;      // size of free device hardware memory
-    freesam: DWORD;     // number of free sample slots in the hardware
-    free3d: DWORD;      // number of free 3D sample slots in the hardware
-    minrate: DWORD;     // min sample rate supported by the hardware
-    maxrate: DWORD;     // max sample rate supported by the hardware
-    eax: BOOL;          // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used)
-    minbuf: DWORD;      // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
-    dsver: DWORD;       // DirectSound version
-    latency: DWORD;     // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
-    initflags: DWORD;   // BASS_Init "flags" parameter
-    speakers: DWORD;    // number of speakers available
-    freq: DWORD;        // current output rate
-  end;
-
-  // Recording device info structure
-  BASS_RECORDINFO = record
-    flags: DWORD;       // device capabilities (DSCCAPS_xxx flags)
-    formats: DWORD;     // supported standard formats (WAVE_FORMAT_xxx flags)
-    inputs: DWORD;      // number of inputs
-    singlein: BOOL;     // only 1 input can be set at a time
-    freq: DWORD;        // current input rate
-  end;
-
-  // Sample info structure
-  BASS_SAMPLE = record
-    freq: DWORD;        // default playback rate
-    volume: FLOAT;      // default volume (0-100)
-    pan: FLOAT;         // default pan (-100=left, 0=middle, 100=right)
-    flags: DWORD;       // BASS_SAMPLE_xxx flags
-    length: DWORD;      // length (in samples, not bytes)
-    max: DWORD;         // maximum simultaneous playbacks
-    origres: DWORD;     // original resolution
-    chans: DWORD;       // number of channels
-    mingap: DWORD;      // minimum gap (ms) between creating channels
-    {
-      The following are the sample's default 3D attributes
-      (if the sample is 3D, BASS_SAMPLE_3D is in flags)
-      see BASS_ChannelSet3DAttributes
-    }
-    mode3d: DWORD;      // BASS_3DMODE_xxx mode
-    mindist: FLOAT;     // minimum distance
-    maxdist: FLOAT;     // maximum distance
-    iangle: DWORD;      // angle of inside projection cone
-    oangle: DWORD;      // angle of outside projection cone
-    outvol: FLOAT;      // delta-volume outside the projection cone
-    {
-      The following are the defaults used if the sample uses the DirectX 7
-      voice allocation/management features.
-    }
-    vam: DWORD;         // voice allocation/management flags (BASS_VAM_xxx)
-    priority: DWORD;    // priority (0=lowest, $ffffffff=highest)
-  end;
-
-  // Channel info structure
-  BASS_CHANNELINFO = record
-    freq: DWORD;        // default playback rate
-    chans: DWORD;       // channels
-    flags: DWORD;       // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
-    ctype: DWORD;       // type of channel
-    origres: DWORD;     // original resolution
-    plugin: HPLUGIN;    // plugin
-    sample: HSAMPLE;    // sample
-    {$IFDEF CPUX64}
-    padding: DWORD;
-    {$ENDIF}
-    filename: PChar;    // filename
-  end;
-
-  BASS_PLUGINFORM = record
-    ctype: DWORD;       // channel type
-    {$IFDEF CPUX64}
-    padding: DWORD;
-    {$ENDIF}
-    name: PAnsiChar;    // format description
-    exts: PAnsiChar;    // file extension filter (*.ext1;*.ext2;etc...)
-  end;
-  PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS;
-  TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM;
-
-  BASS_PLUGININFO = record
-    version: DWORD;             // version (same form as BASS_GetVersion)
-    formatc: DWORD;             // number of formats
-    formats: PBASS_PLUGINFORMS; // the array of formats
-  end;
-  PBASS_PLUGININFO = ^BASS_PLUGININFO;
-
-  // 3D vector (for 3D positions/velocities/orientations)
-  BASS_3DVECTOR = record
-    x: FLOAT;           // +=right, -=left
-    y: FLOAT;           // +=up, -=down
-    z: FLOAT;           // +=front, -=behind
-  end;
-
-  // User file stream callback functions
-  FILECLOSEPROC = procedure(user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  FILELENPROC = function(user: Pointer): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  FILEREADPROC = function(buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  FILESEEKPROC = function(offset: QWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-
-  BASS_FILEPROCS = record
-    close: FILECLOSEPROC;
-    length: FILELENPROC;
-    read: FILEREADPROC;
-    seek: FILESEEKPROC;
-  end;
-
-  // ID3v1 tag structure
-  TAG_ID3 = record
-    id: Array[0..2] of AnsiChar;
-    title: Array[0..29] of AnsiChar;
-    artist: Array[0..29] of AnsiChar;
-    album: Array[0..29] of AnsiChar;
-    year: Array[0..3] of AnsiChar;
-    comment: Array[0..29] of AnsiChar;
-    genre: Byte;
-  end;
-
-  // Binary APEv2 tag structure
-  TAG_APE_BINARY = record
-    key: PAnsiChar;
-    data: PAnsiChar;
-    length: DWORD;
-  end;
-
-  // BWF "bext" tag structure
-  TAG_BEXT = packed record
-    Description: Array[0..255] of AnsiChar;     // description
-    Originator: Array[0..31] of AnsiChar;       // name of the originator
-    OriginatorReference: Array[0..31] of AnsiChar; // reference of the originator
-    OriginationDate: Array[0..9] of AnsiChar;   // date of creation (yyyy-mm-dd)
-    OriginationTime: Array[0..7] of AnsiChar;   // time of creation (hh-mm-ss)
-    TimeReference: QWORD;                       // first sample count since midnight (little-endian)
-    Version: Word;                              // BWF version (little-endian)
-    UMID: Array[0..63] of Byte;                 // SMPTE UMID
-    Reserved: Array[0..189] of Byte;
-    Coding: Array of AnsiChar;           // history
-  end;
-
-  BASS_DX8_CHORUS = record
-    fWetDryMix: FLOAT;
-    fDepth: FLOAT;
-    fFeedback: FLOAT;
-    fFrequency: FLOAT;
-    lWaveform: DWORD;   // 0=triangle, 1=sine
-    fDelay: FLOAT;
-    lPhase: DWORD;      // BASS_DX8_PHASE_xxx
-  end;
-
-  BASS_DX8_COMPRESSOR = record
-    fGain: FLOAT;
-    fAttack: FLOAT;
-    fRelease: FLOAT;
-    fThreshold: FLOAT;
-    fRatio: FLOAT;
-    fPredelay: FLOAT;
-  end;
-
-  BASS_DX8_DISTORTION = record
-    fGain: FLOAT;
-    fEdge: FLOAT;
-    fPostEQCenterFrequency: FLOAT;
-    fPostEQBandwidth: FLOAT;
-    fPreLowpassCutoff: FLOAT;
-  end;
-
-  BASS_DX8_ECHO = record
-    fWetDryMix: FLOAT;
-    fFeedback: FLOAT;
-    fLeftDelay: FLOAT;
-    fRightDelay: FLOAT;
-    lPanDelay: BOOL;
-  end;
-
-  BASS_DX8_FLANGER = record
-    fWetDryMix: FLOAT;
-    fDepth: FLOAT;
-    fFeedback: FLOAT;
-    fFrequency: FLOAT;
-    lWaveform: DWORD;   // 0=triangle, 1=sine
-    fDelay: FLOAT;
-    lPhase: DWORD;      // BASS_DX8_PHASE_xxx
-  end;
-
-  BASS_DX8_GARGLE = record
-    dwRateHz: DWORD;               // Rate of modulation in hz
-    dwWaveShape: DWORD;            // 0=triangle, 1=square
-  end;
-
-  BASS_DX8_I3DL2REVERB = record
-    lRoom: LongInt;                // [-10000, 0]      default: -1000 mB
-    lRoomHF: LongInt;              // [-10000, 0]      default: 0 mB
-    flRoomRolloffFactor: FLOAT;    // [0.0, 10.0]      default: 0.0
-    flDecayTime: FLOAT;            // [0.1, 20.0]      default: 1.49s
-    flDecayHFRatio: FLOAT;         // [0.1, 2.0]       default: 0.83
-    lReflections: LongInt;         // [-10000, 1000]   default: -2602 mB
-    flReflectionsDelay: FLOAT;     // [0.0, 0.3]       default: 0.007 s
-    lReverb: LongInt;              // [-10000, 2000]   default: 200 mB
-    flReverbDelay: FLOAT;          // [0.0, 0.1]       default: 0.011 s
-    flDiffusion: FLOAT;            // [0.0, 100.0]     default: 100.0 %
-    flDensity: FLOAT;              // [0.0, 100.0]     default: 100.0 %
-    flHFReference: FLOAT;          // [20.0, 20000.0]  default: 5000.0 Hz
-  end;
-
-  BASS_DX8_PARAMEQ = record
-    fCenter: FLOAT;
-    fBandwidth: FLOAT;
-    fGain: FLOAT;
-  end;
-
-  BASS_DX8_REVERB = record
-    fInGain: FLOAT;                // [-96.0,0.0]            default: 0.0 dB
-    fReverbMix: FLOAT;             // [-96.0,0.0]            default: 0.0 db
-    fReverbTime: FLOAT;            // [0.001,3000.0]         default: 1000.0 ms
-    fHighFreqRTRatio: FLOAT;       // [0.001,0.999]          default: 0.001
-  end;
-
-  // callback function types
-  STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  {
-    User stream callback function. NOTE: A stream function should obviously be as
-    quick as possible, other streams (and MOD musics) can't be mixed until
-    it's finished.
-    handle : The stream that needs writing
-    buffer : Buffer to write the samples in
-    length : Number of bytes to write
-    user   : The 'user' parameter value given when calling BASS_StreamCreate
-    RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end
-             the stream.
-  }
-
-const
-  // special STREAMPROCs
-  STREAMPROC_DUMMY = Pointer(0);   // "dummy" stream
-  STREAMPROC_PUSH = Pointer(-1);   // push stream
-
-type
-
-  {  
-    User file stream callback function.
-    action : The action to perform, one of BASS_FILE_xxx values.
-    param1 : Depends on "action"
-    param2 : Depends on "action"
-    user   : The 'user' parameter value given when calling BASS_StreamCreate
-    RETURN : Depends on "action"
-  }
-
-  DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  {
-    Internet stream download callback function.
-    buffer : Buffer containing the downloaded data... NULL=end of download
-    length : Number of bytes in the buffer
-    user   : The 'user' parameter value given when calling BASS_StreamCreateURL
-  }
-
-  SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  {
-    Sync callback function. NOTE: a sync callback function should be very
-    quick as other syncs cannot be processed until it has finished. If the
-    sync is a "mixtime" sync, then other streams and MOD musics can not be
-    mixed until it's finished either.
-    handle : The sync that has occured
-    channel: Channel that the sync occured in
-    data   : Additional data associated with the sync's occurance
-    user   : The 'user' parameter given when calling BASS_ChannelSetSync
-  }
-
-  DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  {
-    DSP callback function. NOTE: A DSP function should obviously be as quick
-    as possible... other DSP functions, streams and MOD musics can not be
-    processed until it's finished.
-    handle : The DSP handle
-    channel: Channel that the DSP is being applied to
-    buffer : Buffer to apply the DSP to
-    length : Number of bytes in the buffer
-    user   : The 'user' parameter given when calling BASS_ChannelSetDSP
-  }
-
-  RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
-  {
-    Recording callback function.
-    handle : The recording handle
-    buffer : Buffer containing the recorded sample data
-    length : Number of bytes
-    user   : The 'user' parameter value given when calling BASS_RecordStart
-    RETURN : TRUE = continue recording, FALSE = stop
-  }
-
-
-// Functions
-const
-{$IFDEF MSWINDOWS}
-  bassdll = 'bass.dll';
-{$ENDIF}
-{$IFDEF LINUX}
-  bassdll = 'libbass.so';
-{$ENDIF}
-{$IFDEF MACOS}
-  bassdll = 'libbass.dylib';
-{$ENDIF}
-
-var
-BASS_SetConfig: function(option, value: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetConfig: function(option: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SetConfigPtr: function(option: DWORD; value: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetConfigPtr: function(option: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetVersion: function(): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ErrorGetCode: function(): LongInt; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetDeviceInfo: function(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-{$IFDEF MSWINDOWS}
-BASS_Init: function(device: LongInt; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall;// external bassdll;
-{$ELSE}
-BASS_Init: function(device: LongInt; freq, flags: DWORD; win: Pointer; clsid: Pointer): BOOL; cdecl; //external bassdll;
-{$ENDIF}
-BASS_SetDevice: function(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetDevice: function():DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Free: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-{$IFDEF MSWINDOWS}
-BASS_GetDSoundObject: function(obj: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-{$ENDIF}
-BASS_GetInfo: function(var info: BASS_INFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Update: function(length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetCPU: function():FLOAT; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Start: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Stop: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Pause: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SetVolume: function(volume: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetVolume: function():FLOAT; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_PluginLoad: function(filename: PChar; flags: DWORD): HPLUGIN; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_PluginFree: function(handle: HPLUGIN): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_PluginGetInfo: function(handle: HPLUGIN): PBASS_PLUGININFO; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_Set3DFactors: function(distf, rollf, doppf: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Get3DFactors: function(var distf, rollf, doppf: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Set3DPosition: function(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Get3DPosition: function(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_Apply3D: procedure(); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-{$IFDEF MSWINDOWS}
-BASS_SetEAXParameters: function(env: LongInt; vol, decay, damp: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_GetEAXParameters: function(var env: DWORD; var vol, decay, damp: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-{$ENDIF}
-
-BASS_MusicLoad: function(mem: BOOL; f: Pointer; offset: QWORD; length, flags, freq: DWORD): HMUSIC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_MusicFree: function(handle: HMUSIC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_SampleLoad: function(mem: BOOL; f: Pointer; offset: QWORD; length, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleCreate: function(length, freq, chans, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleFree: function(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleSetData: function(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleGetData: function(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleGetInfo: function(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleSetInfo: function(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleGetChannel: function(handle: HSAMPLE; onlynew: BOOL): HCHANNEL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleGetChannels: function(handle: HSAMPLE; channels: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_SampleStop: function(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_StreamCreate: function(freq, chans, flags: DWORD; proc: STREAMPROC; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamCreateFile: function(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamCreateURL: function(url: PAnsiChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamCreateFileUser: function(system, flags: DWORD; var procs: BASS_FILEPROCS; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamFree: function(handle: HSTREAM): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamGetFilePosition: function(handle: HSTREAM; mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamPutData: function(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_StreamPutFileData: function(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_RecordGetDeviceInfo: function(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordInit: function(device: LongInt):BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordSetDevice: function(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordGetDevice: function():DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordFree: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordGetInfo: function(var info: BASS_RECORDINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordGetInputName: function(input: LongInt): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordSetInput: function(input: LongInt; flags: DWORD; volume: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordGetInput: function(input: LongInt; var volume: FLOAT): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_RecordStart: function(freq, chans, flags: DWORD; proc: RECORDPROC; user: Pointer): HRECORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_ChannelBytes2Seconds: function(handle: DWORD; pos: QWORD): Double; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
-BASS_ChannelSeconds2Bytes: function(handle: DWORD; pos: Double): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
-BASS_ChannelGetDevice: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetDevice: function(handle, device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelIsActive: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
-BASS_ChannelGetInfo: function(handle: DWORD; var info: BASS_CHANNELINFO):BOOL;{$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
-BASS_ChannelGetTags: function(handle: HSTREAM; tags: DWORD): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelFlags: function(handle, flags, mask: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelUpdate: function(handle, length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelLock: function(handle: DWORD; lock: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelPlay: function(handle: DWORD; restart: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelStop: function(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelPause: function(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetAttribute: function(handle, attrib: DWORD; value: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGetAttribute: function(handle, attrib: DWORD; var value: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSlideAttribute: function(handle, attrib: DWORD; value: FLOAT; time: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelIsSliding: function(handle, attrib: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
-BASS_ChannelSet3DAttributes: function(handle: DWORD; mode: LongInt; min, max: FLOAT; iangle, oangle, outvol: LongInt): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGet3DAttributes: function(handle: DWORD; var mode: DWORD; var min, max: FLOAT; var iangle, oangle, outvol: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSet3DPosition: function(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGet3DPosition: function(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGetLength: function(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetPosition: function(handle: DWORD; pos: QWORD; mode: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGetPosition: function(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGetLevel: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelGetData: function(handle: DWORD; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetSync: function(handle: DWORD; type_: DWORD; param: QWORD; proc: SYNCPROC; user: Pointer): HSYNC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelRemoveSync: function(handle: DWORD; sync: HSYNC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetDSP: function(handle: DWORD; proc: DSPPROC; user: Pointer; priority: LongInt): HDSP; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelRemoveDSP: function(handle: DWORD; dsp: HDSP): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetLink: function(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelRemoveLink: function(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelSetFX: function(handle, type_: DWORD; priority: LongInt): HFX; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_ChannelRemoveFX: function(handle: DWORD; fx: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-BASS_FXSetParameters: function(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_FXGetParameters: function(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-BASS_FXReset: function(handle: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
-
-
-function BASS_SPEAKER_N(n: DWORD): DWORD;
-{$IFDEF MSWINDOWS}
-function BASS_SetEAXPreset(env: LongInt): BOOL;
-{
-  This function is defined in the implementation part of this unit.
-  It is not part of BASS.DLL but an extra function which makes it easier
-  to set the predefined EAX environments.
-  env    : a EAX_ENVIRONMENT_xxx constant
-}
-{$ENDIF}
-
-type
-  TBASSModuleHandle = HINST;
-
-function BASS_Load(LibName: PChar ): Boolean;
-procedure BASS_UnLoad;
-function BASS_IsLoaded:boolean;
-
-implementation
-const
-  INVALID_MODULEHANDLE_VALUE = TBASSModuleHandle(0);
-
-var
-  BASSHandle: TBASSModuleHandle;
-
-function BASS_SPEAKER_N(n: DWORD): DWORD;
-begin
-  Result := n shl 24;
-end;
-
-{$IFDEF MSWINDOWS}
-function BASS_SetEAXPreset(env: LongInt): BOOL;
-begin
-  case (env) of
-    EAX_ENVIRONMENT_GENERIC:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5);
-    EAX_ENVIRONMENT_PADDEDCELL:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0);
-    EAX_ENVIRONMENT_ROOM:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666);
-    EAX_ENVIRONMENT_BATHROOM:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166);
-    EAX_ENVIRONMENT_LIVINGROOM:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0);
-    EAX_ENVIRONMENT_STONEROOM:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888);
-    EAX_ENVIRONMENT_AUDITORIUM:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5);
-    EAX_ENVIRONMENT_CONCERTHALL:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5);
-    EAX_ENVIRONMENT_CAVE:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304);
-    EAX_ENVIRONMENT_ARENA:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332);
-    EAX_ENVIRONMENT_HANGAR:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HANGAR, 0.5, 10.0, 0.3);
-    EAX_ENVIRONMENT_CARPETEDHALLWAY:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2.0);
-    EAX_ENVIRONMENT_HALLWAY:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0);
-    EAX_ENVIRONMENT_STONECORRIDOR:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638);
-    EAX_ENVIRONMENT_ALLEY:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776);
-    EAX_ENVIRONMENT_FOREST:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472);
-    EAX_ENVIRONMENT_CITY:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224);
-    EAX_ENVIRONMENT_MOUNTAINS:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472);
-    EAX_ENVIRONMENT_QUARRY:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5);
-    EAX_ENVIRONMENT_PLAIN:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224);
-    EAX_ENVIRONMENT_PARKINGLOT:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5);
-    EAX_ENVIRONMENT_SEWERPIPE:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25);
-    EAX_ENVIRONMENT_UNDERWATER:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0);
-    EAX_ENVIRONMENT_DRUGGED:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388);
-    EAX_ENVIRONMENT_DIZZY:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666);
-    EAX_ENVIRONMENT_PSYCHOTIC:
-      Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806);
-    else
-      Result := FALSE;
-  end;
-end;
-{$ENDIF}
-
-function BASS_Load(LibName: PChar ): Boolean;
-begin
-  Result := False;
-
-  // Make sure the previous library is unloaded 
-  BASS_Unload;
-
-  // If no library name given, use the default library names 
-  if LibName = nil then
-    LibName := bassdll;
-
-  // Load the library 
-  BASSHandle := LoadLibrary(LibName);
-  if BASSHandle = INVALID_MODULEHANDLE_VALUE then
-    Exit;
-
-  // Get all the function addresses from the library 
-  BASS_SetConfig := getprocaddress(basshandle,'BASS_SetConfig');
-  BASS_GetConfig := getprocaddress(basshandle,'BASS_GetConfig');
-  BASS_SetConfigPtr := getprocaddress(basshandle,'BASS_SetConfigPtr');
-  BASS_GetConfigPtr := getprocaddress(basshandle,'BASS_GetConfigPtr');
-  BASS_GetVersion := getprocaddress(basshandle,'BASS_GetVersion');
-  BASS_ErrorGetCode := getprocaddress(basshandle,'BASS_ErrorGetCode');
-  BASS_GetDeviceInfo := getprocaddress(basshandle,'BASS_GetDeviceInfo');
-  {$IFDEF MSWINDOWS}
-  BASS_Init := getprocaddress(basshandle,'BASS_Init');
-  {$ELSE}
-  BASS_Init := getprocaddress(basshandle,'BASS_Init_');
- {$ENDIF}
-  BASS_SetDevice := getprocaddress(basshandle,'BASS_SetDevice');
-  BASS_GetDevice := getprocaddress(basshandle,'BASS_GetDevice');
-  BASS_Free := getprocaddress(basshandle,'BASS_Free');
-  {$IFDEF MSWINDOWS}
-  BASS_GetDSoundObject := getprocaddress(basshandle,'BASS_GetDSoundObject');
-  {$ENDIF}
-  BASS_GetInfo := getprocaddress(basshandle,'BASS_GetInfo');
-  BASS_Update := getprocaddress(basshandle,'BASS_Update');
-  BASS_GetCPU := getprocaddress(basshandle,'BASS_GetCPU');
-  BASS_Start := getprocaddress(basshandle,'BASS_Start');
-  BASS_Stop := getprocaddress(basshandle,'BASS_Stop');
-  BASS_Pause := getprocaddress(basshandle,'BASS_Pause');
-  BASS_SetVolume := getprocaddress(basshandle,'BASS_SetVolume');
-  BASS_GetVolume := getprocaddress(basshandle,'BASS_GetVolume');
-
-  BASS_PluginLoad := getprocaddress(basshandle, 'BASS_PluginLoad');
-  BASS_PluginFree := getprocaddress(basshandle, 'BASS_PluginFree');
-  BASS_PluginGetInfo := getprocaddress(basshandle, 'BASS_PluginGetInfo');
-
-  BASS_Set3DFactors := getprocaddress(basshandle,'BASS_Set3DFactors');
-  BASS_Get3DFactors := getprocaddress(basshandle,'BASS_Get3DFactors');
-  BASS_Set3DPosition := getprocaddress(basshandle,'BASS_Set3DPosition');
-  BASS_Get3DPosition := getprocaddress(basshandle,'BASS_Get3DPosition');
-  BASS_Apply3D := getprocaddress(basshandle,'BASS_Apply3D');
-  {$IFDEF MSWINDOWS}
-  BASS_SetEAXParameters := getprocaddress(basshandle,'BASS_SetEAXParameters');
-  BASS_GetEAXParameters := getprocaddress(basshandle,'BASS_GetEAXParameters');
-  {$ENDIF}
-
-  BASS_MusicLoad := getprocaddress(basshandle,'BASS_MusicLoad');
-  BASS_MusicFree := getprocaddress(basshandle,'BASS_MusicFree');
-
-  BASS_SampleLoad := getprocaddress(basshandle,'BASS_SampleLoad');
-  BASS_SampleCreate := getprocaddress(basshandle,'BASS_SampleCreate');
-  BASS_SampleFree := getprocaddress(basshandle,'BASS_SampleFree');
-  BASS_SampleSetData := getprocaddress(basshandle,'BASS_SampleSetData');
-  BASS_SampleGetData := getprocaddress(basshandle,'BASS_SampleGetData');
-  BASS_SampleGetInfo := getprocaddress(basshandle,'BASS_SampleGetInfo');
-  BASS_SampleSetInfo := getprocaddress(basshandle,'BASS_SampleSetInfo');
-  BASS_SampleGetChannel := getprocaddress(basshandle,'BASS_SampleGetChannel');
-  BASS_SampleGetChannels := getprocaddress(basshandle,'BASS_SampleGetChannels');
-  BASS_SampleStop := getprocaddress(basshandle,'BASS_SampleStop');
-
-  BASS_StreamCreate := getprocaddress(basshandle,'BASS_StreamCreate');
-  BASS_StreamCreateFile := getprocaddress(basshandle,'BASS_StreamCreateFile');
-  BASS_StreamCreateURL := getprocaddress(basshandle,'BASS_StreamCreateURL');
-  BASS_StreamCreateFileUser := getprocaddress(basshandle,'BASS_StreamCreateFileUser');
-  BASS_StreamFree := getprocaddress(basshandle,'BASS_StreamFree');
-  BASS_StreamGetFilePosition := getprocaddress(basshandle,'BASS_StreamGetFilePosition');
-  BASS_StreamPutData := getprocaddress(basshandle,'BASS_StreamPutData');
-  BASS_StreamPutFileData := getprocaddress(basshandle,'BASS_StreamPutFileData');
-
-  BASS_RecordGetDeviceInfo := getprocaddress(basshandle,'BASS_RecordGetDeviceInfo');
-  BASS_RecordInit := getprocaddress(basshandle,'BASS_RecordInit');
-  BASS_RecordSetDevice := getprocaddress(basshandle,'BASS_RecordSetDevice');
-  BASS_RecordGetDevice := getprocaddress(basshandle,'BASS_RecordGetDevice');
-  BASS_RecordFree := getprocaddress(basshandle,'BASS_RecordFree');
-  BASS_RecordGetInfo := getprocaddress(basshandle,'BASS_RecordGetInfo');
-  BASS_RecordGetInputName := getprocaddress(basshandle,'BASS_RecordGetInputName');
-  BASS_RecordSetInput := getprocaddress(basshandle,'BASS_RecordSetInput');
-  BASS_RecordGetInput := getprocaddress(basshandle,'BASS_RecordGetInput');
-  BASS_RecordStart := getprocaddress(basshandle,'BASS_RecordStart');
-
-  BASS_ChannelBytes2Seconds := getprocaddress(basshandle,'BASS_ChannelBytes2Seconds');
-  BASS_ChannelSeconds2Bytes := getprocaddress(basshandle,'BASS_ChannelSeconds2Bytes');
-  BASS_ChannelGetDevice := getprocaddress(basshandle,'BASS_ChannelGetDevice');
-  BASS_ChannelSetDevice := getprocaddress(basshandle,'BASS_ChannelSetDevice');
-  BASS_ChannelIsActive := getprocaddress(basshandle,'BASS_ChannelIsActive');
-  BASS_ChannelGetInfo := getprocaddress(basshandle,'BASS_ChannelGetInfo');
-  BASS_ChannelGetTags := getprocaddress(basshandle,'BASS_ChannelGetTags');
-  BASS_ChannelFlags := getprocaddress(basshandle,'BASS_ChannelFlags');
-  BASS_ChannelUpdate := getprocaddress(basshandle,'BASS_ChannelUpdate');
-  BASS_ChannelLock := getprocaddress(basshandle,'BASS_ChannelLock');
-  BASS_ChannelPlay := getprocaddress(basshandle,'BASS_ChannelPlay');
-  BASS_ChannelStop := getprocaddress(basshandle,'BASS_ChannelStop');
-  BASS_ChannelPause := getprocaddress(basshandle,'BASS_ChannelPause');
-  BASS_ChannelSetAttribute := getprocaddress(basshandle,'BASS_ChannelSetAttribute');
-  BASS_ChannelGetAttribute := getprocaddress(basshandle,'BASS_ChannelGetAttribute');
-  BASS_ChannelSlideAttribute := getprocaddress(basshandle,'BASS_ChannelSlideAttribute');
-  BASS_ChannelIsSliding := getprocaddress(basshandle,'BASS_ChannelIsSliding');
-  BASS_ChannelSet3DAttributes := getprocaddress(basshandle,'BASS_ChannelSet3DAttributes');
-  BASS_ChannelGet3DAttributes := getprocaddress(basshandle,'BASS_ChannelGet3DAttributes');
-  BASS_ChannelSet3DPosition := getprocaddress(basshandle,'BASS_ChannelSet3DPosition');
-  BASS_ChannelGet3DPosition := getprocaddress(basshandle,'BASS_ChannelGet3DPosition');
-  BASS_ChannelGetLength :=getprocaddress(basshandle,'BASS_ChannelGetLength');
-  BASS_ChannelSetPosition := getprocaddress(basshandle,'BASS_ChannelSetPosition');
-  BASS_ChannelGetPosition := getprocaddress(basshandle,'BASS_ChannelGetPosition');
-  BASS_ChannelGetLevel := getprocaddress(basshandle,'BASS_ChannelGetLevel');
-  BASS_ChannelGetData := getprocaddress(basshandle,'BASS_ChannelGetData');
-  BASS_ChannelSetSync := getprocaddress(basshandle,'BASS_ChannelSetSync');
-  BASS_ChannelRemoveSync := getprocaddress(basshandle,'BASS_ChannelRemoveSync');
-  BASS_ChannelSetDSP := getprocaddress(basshandle,'BASS_ChannelSetDSP');
-  BASS_ChannelRemoveDSP := getprocaddress(basshandle,'BASS_ChannelRemoveDSP');
-  BASS_ChannelSetLink := getprocaddress(basshandle,'BASS_ChannelSetLink');
-  BASS_ChannelRemoveLink := getprocaddress(basshandle,'BASS_ChannelRemoveLink');
-  BASS_ChannelSetFX := getprocaddress(basshandle,'BASS_ChannelSetFX');
-  BASS_ChannelRemoveFX := getprocaddress(basshandle,'BASS_ChannelRemoveFX');
-
-  BASS_FXSetParameters := getprocaddress(basshandle,'BASS_FXSetParameters');
-  BASS_FXGetParameters := getprocaddress(basshandle,'BASS_FXGetParameters');
-  BASS_FXReset := getprocaddress(basshandle,'BASS_FXReset');
-
-  Result := True;
-end;
-
-procedure BASS_Unload;
-begin
-  // Only free the library if it was already loaded 
-  if BASSHandle <> INVALID_MODULEHANDLE_VALUE then
-    FreeLibrary(BASSHandle);
-  BASSHandle := INVALID_MODULEHANDLE_VALUE;
-end;
-
-Function BASS_IsLoaded:boolean;
-begin
-  result := BASSHandle <> INVALID_MODULEHANDLE_VALUE;
-end;
-
-
-initialization
-  BASSHandle := INVALID_MODULEHANDLE_VALUE;
-
-finalization
-  // Make sure the library is unloaded 
-  BASS_Unload;
-
-
-end.
-

+ 1 - 1
Source/FMX/Soundx.FMOD.pas

@@ -34,7 +34,7 @@ uses
   Winapi.Windows,
   Winapi.Windows,
 {$ENDIF}
 {$ENDIF}
   FMX.Dialogs,
   FMX.Dialogs,
-  Soundx.FMODTypes;
+  FMOD.Types;
 
 
 // ===============================================================================================
 // ===============================================================================================
 // FUNCTION PROTOTYPES
 // FUNCTION PROTOTYPES

+ 0 - 72
Source/FMX/Soundx.FMODErrors.pas

@@ -1,72 +0,0 @@
-//
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-//
-(*===============================================================================================
- FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.
- ===============================================================================================
-
-  NOTE: For the demos to run you must have either fmod.dll (in Windows)
-  or libfmod-3.75.so (in Linux) installed.
-
-  In Winapi.Windows, copy the fmod.dll file found in the api directory to either of
-  the following locations (in order of preference)
-  - your application directory
-  - Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
-
-  In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
-  file from the api directory to your /usr/lib/ directory.
-  Then via a command line, navigate to the /usr/lib/ directory and create
-  a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
-  the following command (assuming you are in /usr/lib/)...
-  ln -s libfmod-3.75.so libfmod.so.
-
-===============================================================================================*)
-
-unit Soundx.FMODErrors;
-
-interface
-
-uses
-  Soundx.FMODTypes;
-
-{
-  Disable warning for unsafe types in Delphi 7
-}
-{$IFDEF VER150}
-{$WARN UNSAFE_TYPE OFF}
-{$ENDIF}
-
-function FMOD_ErrorString(ErrorCode: TFModErrors): PChar;
-
-implementation
-
-function FMOD_ErrorString(ErrorCode: TFModErrors): PChar;
-begin
-  case ErrorCode of
-    FMOD_ERR_NONE:              Result := 'No errors';
-    FMOD_ERR_BUSY:              Result := 'Cannot call this command after FSOUND_Init.  Call FSOUND_Close first';
-    FMOD_ERR_UNINITIALIZED:     Result := 'This command failed because FSOUND_Init was not called';
-    FMOD_ERR_PLAY:              Result := 'Playing the sound failed';
-    FMOD_ERR_INIT:              Result := 'Error initializing output device';
-    FMOD_ERR_ALLOCATED:         Result := 'The output device is already in use and cannot be reused';
-    FMOD_ERR_OUTPUT_FORMAT:     Result := 'Soundcard does not support the features needed for this soundsystem (16bit stereo output)';
-    FMOD_ERR_COOPERATIVELEVEL:  Result := 'Error setting cooperative level for hardware';
-    FMOD_ERR_CREATEBUFFER:      Result := 'Error creating hardware sound buffer';
-    FMOD_ERR_FILE_NOTFOUND:     Result := 'File not found';
-    FMOD_ERR_FILE_FORMAT:       Result := 'Unknown file format';
-    FMOD_ERR_FILE_BAD:          Result := 'Error loading file';
-    FMOD_ERR_MEMORY:            Result := 'Not enough memory or resources';
-    FMOD_ERR_VERSION:           Result := 'The version number of this file format is not supported';
-    FMOD_ERR_INVALID_PARAM:     Result := 'An invalid parameter was passed to this function';
-    FMOD_ERR_NO_EAX:            Result := 'Tried to use an EAX command on a non EAX enabled channel or output';
-    FMOD_ERR_CHANNEL_ALLOC:     Result := 'Failed to allocate a new channel';
-    FMOD_ERR_RECORD:            Result := 'Recording is not supported on this machine';
-    FMOD_ERR_MEDIAPLAYER:       Result := 'Required Mediaplayer codec is not installed';
-  else
-    Result := 'Unknown error';
-  end;
-end;
-
-end.

+ 0 - 768
Source/FMX/Soundx.FMODImport.pas

@@ -1,768 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-(*=============================================================================================== }
- FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.               }
- =============================================================================================== }
-
-  NOTE: For the demos to run you must have either fmod.dll (in Windows)
-  or libfmod-3.75.so (in Linux) installed.
-
-  In Winapi.Windows, copy the fmod.dll file found in the api directory to either of
-  the following locations (in order of preference)
-  - your application directory
-  - Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
-
-  In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
-  file from the api directory to your /usr/lib/ directory.
-  Then via a command line, navigate to the /usr/lib/ directory and create
-  a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
-  the following command (assuming you are in /usr/lib/)...
-  ln -s libfmod-3.75.so libfmod.so.
-
- ===============================================================================================*)
-
-unit Soundx.FMODImport;
-
-interface
-
-{$I GLX.Scene.inc}
-
-uses
-  Winapi.Windows,
-  Soundx.FMODTypes;
-
-(*
-  Disable warning for unsafe types in Delphi 7
-*)
-
-//===============================================================================================
-// FUNCTION PROTOTYPES
-//===============================================================================================
-
-{ ================================== }
-{ Library load/unload functions.     }
-{ ================================== }
-
-{
-  If no library name is passed to FMOD_Load, then the default library name
-  used.  These are stub functions.
-}
-
-function FMOD_Load(LibName: PChar): Boolean;
-procedure FMOD_Unload;
-
-{ ================================== }
-{ Initialization / Global functions. }
-{ ================================== }
-
-{
-    PRE - FSOUND_Init functions. These can't be called after FSOUND_Init is
-    called (they will fail). They set up FMOD system functionality.
-}
-
-function FSOUND_SetOutput(OutputType: TFSoundOutputTypes): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetDriver(Driver: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetMixer(Mixer: TFSoundMixerTypes): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetBufferSize(LenMs: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetHWND(Hwnd: THandle): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetMinHardwareChannels(Min: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetMaxHardwareChannels(Max: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetMemorySystem(Pool: Pointer; PoolLen: Integer;
-                                UserAlloc: TFSoundAllocCallback;
-                                UserRealloc: TFSoundReallocCallback;
-                                UserFree: TFSoundFreeCallback): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Main initialization / closedown functions.
-    Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override
-           with MIDI playback.
-         : Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible no matter
-           which window is in focus. (FSOUND_OUTPUT_DSOUND only)
-}
-
-function FSOUND_Init(MixRate: Integer; MaxSoftwareChannels: Integer; Flags: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_Close; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Runtime system level functions
-}
-
-procedure FSOUND_Update; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};  // This is called to update 3d sound / non-realtime output
-
-procedure FSOUND_SetSpeakerMode(SpeakerMode: Cardinal); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_SetSFXMasterVolume(Volume: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_SetPanSeperation(PanSep: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_File_SetCallbacks(OpenCallback: TFSoundOpenCallback;
-                                   CloseCallback: TFSoundCloseCallback;
-                                   ReadCallback: TFSoundReadCallback;
-                                   SeekCallback: TFSoundSeekCallback;
-                                   TellCallback: TFSoundTellCallback); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    System information functions
-}
-
-function FSOUND_GetError: TFModErrors; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetVersion: Single; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetOutput: TFSoundOutputTypes; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetOutputHandle: Pointer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetDriver: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetMixer: TFSoundMixerTypes; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetNumDrivers: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetDriverName(Id: Integer): PAnsiChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetDriverCaps(Id: Integer; var Caps: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetOutputRate: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetMaxChannels: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetMaxSamples: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-//function FSOUND_GetSpeakerMode: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetSFXMasterVolume: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetNumHWChannels(var num2d: Integer; var num3d: Integer; var total: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetChannelsPlaying: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetCPUUsage: Single; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_GetMemoryStats(var CurrentAlloced: Cardinal; var MaxAlloced: Cardinal); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ =================================== }
-{ Sample management / load functions. }
-{ =================================== }
-
-{
-    Sample creation and management functions
-    Note : Use FSOUND_LOADMEMORY   flag with FSOUND_Sample_Load to load from memory.
-           Use FSOUND_LOADRAW      flag with FSOUND_Sample_Load to treat as as raw pcm data.
-}
-
-function FSOUND_Sample_Load(Index: Integer; const NameOrData: PAnsiChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_Alloc(Index: Integer; Length: Integer; Mode: Cardinal; DefFreq: Integer; DefVol: Integer; DefPan: Integer; DefPri: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_Sample_Free(Sptr: PFSoundSample); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_Upload(Sptr: PFSoundSample; SrcData: Pointer; Mode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_Lock(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};
-function FSOUND_Sample_Unlock(Sptr: PFSoundSample; Ptr1: Pointer; Ptr2: Pointer; Len1: Cardinal; Len2: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Sample control functions
-}
-
-function FSOUND_Sample_SetMode(Sptr: PFSoundSample; Mode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_SetLoopPoints(Sptr: PFSoundSample; LoopStart, LoopEnd: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_SetDefaults(Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_SetDefaultsEx(Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri, VarFreq, VarVol, VarPan: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_SetMinMaxDistance(Sptr: PFSoundSample; Min, Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_SetMaxPlaybacks(Sptr: PFSoundSample; Max: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Sample information functions
-}
-
-function FSOUND_Sample_Get(SampNo: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetName(Sptr: PFSoundSample): PAnsiChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetLength(Sptr: PFSoundSample): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetLoopPoints(Sptr: PFSoundSample; var LoopStart: Integer; var LoopEnd: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetDefaults(Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetDefaultsEx(Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer;var VarFreq: Integer; var VarVol: Integer; var VarPan: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetMode(Sptr: PFSoundSample): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Sample_GetMinMaxDistance(Sptr: PFSoundSample; var Min: Single; var Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ ============================ }
-{ Channel control functions.   }
-{ ============================ }
-
-{
-    Playing and stopping sounds.
-    Note : Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
-           Use FSOUND_ALL as the 'channel' variable to control ALL channels with one function call!
-}
-
-function FSOUND_PlaySound(Channel: Integer; Sptr: PFSoundSample): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_PlaySoundEx(Channel: Integer; Sptr: PFSoundSample; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_StopSound(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Functions to control playback of a channel.
-    Note : FSOUND_ALL can be used on most of these functions as a channel value.
-}
-
-function FSOUND_SetFrequency(Channel: Integer; Freq: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetVolume(Channel: Integer; Vol: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetVolumeAbsolute(Channel: Integer; Vol: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetPan(Channel: Integer; Pan: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetSurround(Channel: Integer; Surround: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetMute(Channel: Integer; Mute: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetPriority(Channel: Integer; Priority: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetReserved(Channel: Integer; Reserved: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetPaused(Channel: Integer; Paused: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetLoopMode(Channel: Integer; LoopMode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_SetCurrentPosition(Channel: Integer; Offset: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_3D_SetAttributes(Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_3D_SetMinMaxDistance(Channel: Integer; Min: Single; Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Channel information functions
-}
-
-function FSOUND_IsPlaying(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetFrequency(Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetVolume(Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetAmplitude(Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetPan(Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetSurround(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetMute(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetPriority(Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetReserved(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetPaused(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetLoopMode(Channel: Integer): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetCurrentPosition(Channel: Integer): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetCurrentSample(Channel: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetCurrentLevels(Channel: Integer; l, r: PSingle): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetNumSubChannels(Channel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_GetSubChannel(Channel: Integer; SubChannel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_3D_GetAttributes(Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_3D_GetMinMaxDistance(Channel: Integer; var Min: Single; var Max: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ =================== }
-{ 3D sound functions. }
-{ =================== }
-
-{
-    See also 3d sample and channel based functions above.
-    Call FSOUND_Update once a frame to process 3d information.
-}
-
-procedure FSOUND_3D_Listener_SetCurrent(current: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_3D_Listener_SetAttributes(Pos: PFSoundVector; Vel: PFSoundVector;
-                                           fx: Single; fy: Single; fz: Single;
-                                           tx: Single; ty: Single; tz: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_3D_Listener_GetAttributes(Pos: PFSoundVector; Vel: PFSoundVector;
-                                           fx: PSingle; fy: PSingle; fz: PSingle;  
-                                           tx: PSingle; ty: PSingle; tz: PSingle); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_3D_SetDopplerFactor(Scale: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_3D_SetDistanceFactor(Scale: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_3D_SetRolloffFactor(Scale: Single); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ =================== }
-{ FX functions.       }
-{ =================== }
-
-{
-    Functions to control DX8 only effects processing.
-
-    - FX enabled samples can only be played once at a time, not multiple times at once.
-    - Sounds have to be created with FSOUND_HW2D or FSOUND_HW3D for this to work.
-    - FSOUND_INIT_ENABLESYSTEMCHANNELFX can be used to apply hardware effect processing to the
-      global mixed output of FMOD's software channels.
-    - FSOUND_FX_Enable returns an FX handle that you can use to alter fx parameters.
-    - FSOUND_FX_Enable can be called multiple times in a row, even on the same FX type,
-      it will return a unique handle for each FX.
-    - FSOUND_FX_Enable cannot be called if the sound is playing or locked.
-    - FSOUND_FX_Disable must be called to reset/clear the FX from a channel.
-}
-
-function FSOUND_FX_Enable(Channel: Integer; Fx: TFSoundFXModes): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_Disable(Channel: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_FX_SetChorus(FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetCompressor(FXId: Integer; Gain, Attack, Release, Threshold, Ratio, Predelay: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetDistortion(FXId: Integer; Gain, Edge, PostEQCenterFrequency, PostEQBandwidth, PreLowpassCutoff: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetEcho(FXId: Integer; WetDryMix, Feedback, LeftDelay, RightDelay: Single; PanDelay: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetFlanger(FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetGargle(FXId, RateHz, WaveShape: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetI3DL2Reverb(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};
-function FSOUND_FX_SetParamEQ(FXId: Integer; Center, Bandwidth, Gain: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_FX_SetWavesReverb(FXId: Integer; InGain, ReverbMix, ReverbTime, HighFreqRTRatio: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ ========================= }
-{ File Streaming functions. }
-{ ========================= }
-
-{
-    Note : Use FSOUND_LOADMEMORY   flag with FSOUND_Stream_Open to stream from memory.
-           Use FSOUND_LOADRAW      flag with FSOUND_Stream_Open to treat stream as raw pcm data.
-           Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_Open to open mpegs in 'accurate mode' for settime/gettime/getlengthms.
-           Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
-}
-
-function FSOUND_Stream_SetBufferSize(Ms: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_Open(const name_or_data: PAnsiChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundStream; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Create(Callback: TFSoundStreamCallback; Length: Integer; Mode: Cardinal; SampleRate: Integer; UserData: Integer): PFSoundStream; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Close(Stream: PFSoundStream): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_Play(Channel: Integer; Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_PlayEx(Channel: Integer; Stream: PFSoundStream; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Stop(Stream: PFSoundStream): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_SetPosition(Stream: PFSoundStream; Position: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetPosition(Stream: PFSoundStream): Cardinal; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_SetTime(Stream: PFSoundStream; Ms: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetTime(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetLength(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetLengthMs(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_SetMode(Stream: PFSoundStream; mode: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetMode(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_SetLoopPoints(Stream: PFSoundStream; LoopStartPCM, LoopEndPCM: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_SetLoopCount(Stream: PFSoundStream; Count: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetOpenState(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetSample(Stream: PFSoundStream): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_CreateDSP(Stream: PFSoundStream; Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_SetEndCallback(Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_SetSyncCallback(Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_AddSyncPoint(Stream: PFSoundStream; PCMOffset: Cardinal; Name: PAnsiChar): PFSyncPoint; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_DeleteSyncPoint(Point: PFSyncPoint): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetNumSyncPoints(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetSyncPoint(Stream: PFSoundStream; Index: Integer): PFSyncPoint; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetSyncPointInfo(Point: PFSyncPoint; var PCMOffset: Cardinal): PAnsiChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_SetSubStream(Stream: PFSoundStream; Index: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetNumSubStreams(Stream: PFSoundStream): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_SetSubStreamSentence(Stream: PFSoundStream; var SentenceList: Cardinal; NumItems: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_Stream_GetNumTagFields(Stream: PFSoundStream; var Num: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_GetTagField(Stream: PFSoundStream; Num: Integer; var TagType: TFSoundTagFieldType; var Name: PAnsiChar; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_FindTagField(Stream: PFSoundStream; TagType: TFSoundTagFieldType; Name: PAnsiChar; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Internet streaming functions
-}
-
-function FSOUND_Stream_Net_SetProxy(Proxy: PAnsiChar): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Net_GetLastServerStatus(): PAnsiChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Net_SetBufferProperties(BufferSize: Integer; PreBuffer_Percent: Integer; ReBuffer_Percent:  Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Net_GetBufferProperties(var Buffersize: Integer; var PreBuffer_Percent: Integer;  var ReBuffer_Percent: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Net_SetMetadataCallback(Stream: PFSoundStream; Callback: TFMetaDataCallback; UserData: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Stream_Net_GetStatus(Stream: PFSoundStream; var Status: TFSoundStreamNetStatus; var BufferPercentUsed: Integer; var BitRate: Integer; var Flags: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ =================== }
-{ CD audio functions. }
-{ =================== }
-
-{
-    Note : 0 = default cdrom.  Otherwise specify the drive letter, for example. 'D'. 
-}
-
-function FSOUND_CD_Play(Drive: Byte; Track: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_CD_SetPlayMode(Drive: Byte; Mode: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_Stop(Drive: Byte): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_SetPaused(Drive: Byte; Paused: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_SetVolume(Drive: Byte; Volume: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_SetTrackTime(Drive: Byte; ms: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_OpenTray(Drive: Byte; Open: Byte): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FSOUND_CD_GetPaused(Drive: Byte): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_GetTrack(Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_GetNumTracks(Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_GetVolume(Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_GetTrackLength(Drive: Byte; Track: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_CD_GetTrackTime(Drive: Byte): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ ============== }
-{ DSP functions. }
-{ ============== }
-
-
-{
-  DSP Unit control and information functions.
-}
-
-function FSOUND_DSP_Create(Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_DSP_Free(DSPUnit: PFSoundDSPUnit); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_DSP_SetPriority(DSPUnit: PFSoundDSPUnit; Priority: Integer); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetPriority(DSPUnit: PFSoundDSPUnit): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_DSP_SetActive(DSPUnit: PFSoundDSPUnit; Active: ByteBool); {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetActive(DSPUnit: PFSoundDSPUnit): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Functions to get hold of FSOUND 'system DSP unit' handles.
-}
-
-function FSOUND_DSP_GetClearUnit: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetSFXUnit: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetMusicUnit: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetFFTUnit: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetClipAndCopyUnit: PFSoundDSPUnit; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Miscellaneous DSP functions
-    Note for the spectrum analysis function to work, you have to enable the FFT DSP unit with
-    the following code FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE);
-    It is off by default to save cpu usage.
-}
-
-function FSOUND_DSP_MixBuffers(DestBuffer: Pointer; SrcBuffer: Pointer; Len: Integer; Freq: Integer; Vol: Integer; Pan: Integer; Mode: Cardinal): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FSOUND_DSP_ClearMixBuffer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_DSP_GetBufferLength: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};      { Length of each DSP update }
-function FSOUND_DSP_GetBufferLengthTotal: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF}; { Total buffer length due to FSOUND_SetBufferSize }
-function FSOUND_DSP_GetSpectrum: PSingle; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};          { Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. }
-
-{ ========================================================================== }
-{ Reverb functions. (eax2/3 reverb)  (NOT SUPPORTED IN LINUX/CE)               }
-{ ========================================================================== }
-
-{
-  See structures above for definitions and information on the reverb parameters.
-}
-
-function FSOUND_Reverb_SetProperties(var Prop: TFSoundReverbProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Reverb_GetProperties(var Prop: TFSoundReverbProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Reverb_SetChannelProperties(Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Reverb_GetChannelProperties(Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ ================================================ }
-{ Recording functions  (NOT SUPPORTED IN LINUX/MAC) }
-{ ================================================ }
-
-{
-    Recording initialization functions
-}
-
-function FSOUND_Record_SetDriver(OutputType: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Record_GetNumDrivers: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Record_GetDriverName(Id: Integer): PAnsiChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Record_GetDriver: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Recording functionality. Only one recording session will work at a time.
-}
-
-function FSOUND_Record_StartSample(Sptr: PFSoundSample; Loop: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Record_Stop: ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FSOUND_Record_GetPosition: Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{ ============================================================================================= }
-{ FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK)                                                      }
-{ ============================================================================================= }
-
-{
-    Song management / playback functions.
-}
-
-function FMUSIC_LoadSong(const Name: PAnsiChar): PFMusicModule; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_LoadSongEx(Name_Or_Data: Pointer; Offset: Integer; Length: Integer; Mode: Cardinal; var SampleList: Integer; SampleListNum: Integer): PFMusicModule; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetOpenState(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_FreeSong(Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_PlaySong(Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_StopSong(Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-procedure FMUSIC_StopAllSongs; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FMUSIC_SetZxxCallback(Module: PFMusicModule; Callback: TFMusicCallback): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetRowCallback(Module: PFMusicModule; Callback: TFMusicCallback; RowStep: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetOrderCallback(Module: PFMusicModule; Callback: TFMusicCallback; OrderStep: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetInstCallback(Module: PFMusicModule; Callback: TFMusicCallback; Instrument: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-function FMUSIC_SetSample(Module: PFMusicModule; SampNo: Integer; Sptr: PFSoundSample): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetUserData(Module: PFMusicModule; userdata: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_OptimizeChannels(Module: PFMusicModule; MaxChannels: Integer; MinVolume: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Runtime song functions.
-}
-
-function FMUSIC_SetReverb(Reverb: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetLooping(Module: PFMusicModule; Looping: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetOrder(Module: PFMusicModule; Order: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetPaused(Module: PFMusicModule; Pause: ByteBool): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetMasterVolume(Module: PFMusicModule; Volume: Integer): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetMasterSpeed(Module: PFMusicModule; speed: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_SetPanSeperation(Module: PFMusicModule; PanSep: Single): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Static song information functions.
-}
-
-function FMUSIC_GetName(Module: PFMusicModule): PAnsiChar; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetType(Module: PFMusicModule): TFMusicTypes; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetNumOrders(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetNumPatterns(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetNumInstruments(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetNumSamples(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetNumChannels(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetSample(Module: PFMusicModule; SampNo: Integer): PFSoundSample; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetPatternLength(Module: PFMusicModule; OrderNo: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-{
-    Runtime song information.
-}
-
-function FMUSIC_IsFinished(Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_IsPlaying(Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetMasterVolume(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetGlobalVolume(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetOrder(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetPattern(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetSpeed(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetBPM(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetRow(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetPaused(Module: PFMusicModule): ByteBool; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetTime(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetRealChannel(Module: PFMusicModule; modchannel: Integer): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-function FMUSIC_GetUserData(Module: PFMusicModule): Integer; {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-implementation
-
-const
-{$IFDEF LINUX}
-  FMOD_DLL = 'libfmod.so';
-{$ELSE}
-{$IFDEF MSWINDOWS}
-  FMOD_DLL = 'fmod.dll';
-{$ENDIF}
-{$IFDEF DARWIN}
-  FMOD_DLL = 'fmod.dylib';
-{$ENDIF}
-{$ENDIF}
-
-{
-  Stub functions to allow applications to swap between static and dynamic with
-  no code changes at all.
-}
-function FMOD_Load(LibName: PChar): Boolean;
-begin
-  Result := True;
-end;
-
-procedure FMOD_Unload;
-begin
-end;
-
-function FSOUND_SetOutput; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetOutput@4' {$ENDIF};
-function FSOUND_SetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetDriver@4' {$ENDIF};
-function FSOUND_SetMixer; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMixer@4' {$ENDIF};
-function FSOUND_SetBufferSize; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetBufferSize@4' {$ENDIF};
-function FSOUND_SetHWND; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetHWND@4' {$ENDIF};
-function FSOUND_SetMinHardwareChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMinHardwareChannels@4' {$ENDIF};
-function FSOUND_SetMaxHardwareChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMaxHardwareChannels@4' {$ENDIF};
-function FSOUND_SetMemorySystem; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMemorySystem@20' {$ENDIF};
-function FSOUND_Init; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Init@12' {$ENDIF};
-procedure FSOUND_Close; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Close@0' {$ENDIF};
-procedure FSOUND_Update; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Update@0' {$ENDIF};
-procedure FSOUND_SetSpeakerMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetSpeakerMode@4' {$ENDIF};
-procedure FSOUND_SetSFXMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetSFXMasterVolume@4' {$ENDIF};
-procedure FSOUND_SetPanSeperation; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPanSeperation@4' {$ENDIF};
-function FSOUND_GetError; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetError@0' {$ENDIF};
-function FSOUND_GetVersion; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetVersion@0' {$ENDIF};
-function FSOUND_GetOutput; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetOutput@0' {$ENDIF};
-function FSOUND_GetOutputHandle; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetOutputHandle@0' {$ENDIF};
-function FSOUND_GetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetDriver@0' {$ENDIF};
-function FSOUND_GetMixer; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMixer@0' {$ENDIF};
-function FSOUND_GetNumDrivers; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetNumDrivers@0' {$ENDIF};
-function FSOUND_GetDriverName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetDriverName@4' {$ENDIF};
-function FSOUND_GetDriverCaps; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetDriverCaps@8' {$ENDIF};
-function FSOUND_GetOutputRate; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetOutputRate@0' {$ENDIF};
-function FSOUND_GetMaxChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMaxChannels@0' {$ENDIF};
-function FSOUND_GetMaxSamples; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMaxSamples@0' {$ENDIF};
-//function FSOUND_GetSpeakerMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSpeakerMode@0' {$ENDIF};
-function FSOUND_GetSFXMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSFXMasterVolume@0' {$ENDIF};
-function FSOUND_GetNumHWChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetNumHWChannels@12' {$ENDIF};
-function FSOUND_GetChannelsPlaying; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetChannelsPlaying@0' {$ENDIF};
-function FSOUND_GetCPUUsage; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCPUUsage@0' {$ENDIF};
-procedure FSOUND_GetMemoryStats; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMemoryStats@8' {$ENDIF};
-function FSOUND_Sample_Load; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Load@20' {$ENDIF};
-function FSOUND_Sample_Alloc; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Alloc@28' {$ENDIF};
-procedure FSOUND_Sample_Free; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Free@4' {$ENDIF};
-function FSOUND_Sample_Upload; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Upload@12' {$ENDIF};
-function FSOUND_Sample_Lock; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Lock@28' {$ENDIF};
-function FSOUND_Sample_Unlock; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Unlock@20' {$ENDIF};
-function FSOUND_Sample_SetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetMode@8' {$ENDIF};
-function FSOUND_Sample_SetLoopPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetLoopPoints@12' {$ENDIF};
-function FSOUND_Sample_SetDefaults; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetDefaults@20' {$ENDIF};
-function FSOUND_Sample_SetDefaultsEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetDefaultsEx@32' {$ENDIF};
-function FSOUND_Sample_SetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetMinMaxDistance@12' {$ENDIF};
-function FSOUND_Sample_SetMaxPlaybacks; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetMaxPlaybacks@8' {$ENDIF};
-function FSOUND_Sample_Get; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Get@4' {$ENDIF};
-function FSOUND_Sample_GetName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetName@4' {$ENDIF};
-function FSOUND_Sample_GetLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetLength@4' {$ENDIF};
-function FSOUND_Sample_GetLoopPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetLoopPoints@12' {$ENDIF};
-function FSOUND_Sample_GetDefaults; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetDefaults@20' {$ENDIF};
-function FSOUND_Sample_GetDefaultsEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetDefaultsEx@32' {$ENDIF};
-function FSOUND_Sample_GetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetMode@4' {$ENDIF};
-function FSOUND_Sample_GetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetMinMaxDistance@12' {$ENDIF};
-function FSOUND_PlaySound; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_PlaySound@8' {$ENDIF};
-function FSOUND_PlaySoundEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_PlaySoundEx@16' {$ENDIF};
-function FSOUND_StopSound; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_StopSound@4' {$ENDIF};
-function FSOUND_SetFrequency; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetFrequency@8' {$ENDIF};
-function FSOUND_SetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetVolume@8' {$ENDIF};
-function FSOUND_SetVolumeAbsolute; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetVolumeAbsolute@8' {$ENDIF};
-function FSOUND_SetPan; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPan@8' {$ENDIF};
-function FSOUND_SetSurround; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetSurround@8' {$ENDIF};
-function FSOUND_SetMute; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMute@8' {$ENDIF};
-function FSOUND_SetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPriority@8' {$ENDIF};
-function FSOUND_SetReserved; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetReserved@8' {$ENDIF};
-function FSOUND_SetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPaused@8' {$ENDIF};
-function FSOUND_SetLoopMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetLoopMode@8' {$ENDIF};
-function FSOUND_SetCurrentPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetCurrentPosition@8' {$ENDIF};
-function FSOUND_3D_SetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetAttributes@12' {$ENDIF};
-function FSOUND_3D_SetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetMinMaxDistance@12' {$ENDIF};
-function FSOUND_IsPlaying; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_IsPlaying@4' {$ENDIF};
-function FSOUND_GetFrequency; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetFrequency@4' {$ENDIF};
-function FSOUND_GetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetVolume@4' {$ENDIF};
-function FSOUND_GetAmplitude; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetAmplitude@4' {$ENDIF};
-function FSOUND_GetPan; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetPan@4' {$ENDIF};
-function FSOUND_GetSurround; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSurround@4' {$ENDIF};
-function FSOUND_GetMute; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMute@4' {$ENDIF};
-function FSOUND_GetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetPriority@4' {$ENDIF};
-function FSOUND_GetReserved; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetReserved@4' {$ENDIF};
-function FSOUND_GetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetPaused@4' {$ENDIF};
-function FSOUND_GetLoopMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetLoopMode@4' {$ENDIF};
-function FSOUND_GetCurrentPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCurrentPosition@4' {$ENDIF};
-function FSOUND_GetCurrentSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCurrentSample@4' {$ENDIF};
-function FSOUND_GetCurrentLevels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCurrentLevels@12' {$ENDIF};
-function FSOUND_GetNumSubChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetNumSubChannels@4' {$ENDIF};
-function FSOUND_GetSubChannel; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSubChannel@8' {$ENDIF};
-function FSOUND_3D_GetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_GetAttributes@12' {$ENDIF};
-function FSOUND_3D_GetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_GetMinMaxDistance@12' {$ENDIF};
-procedure FSOUND_3D_Listener_SetCurrent; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_Listener_SetCurrent@8' {$ENDIF};
-procedure FSOUND_3D_Listener_SetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_Listener_SetAttributes@32' {$ENDIF};
-procedure FSOUND_3D_Listener_GetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_Listener_GetAttributes@32' {$ENDIF};
-procedure FSOUND_3D_SetDopplerFactor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetDopplerFactor@4' {$ENDIF};
-procedure FSOUND_3D_SetDistanceFactor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetDistanceFactor@4' {$ENDIF};
-procedure FSOUND_3D_SetRolloffFactor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetRolloffFactor@4' {$ENDIF};
-function FSOUND_FX_Enable; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_Enable@8' {$ENDIF};
-function FSOUND_FX_Disable; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_Disable@4' {$ENDIF};
-function FSOUND_FX_SetChorus; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetChorus@32' {$ENDIF};
-function FSOUND_FX_SetCompressor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetCompressor@28' {$ENDIF};
-function FSOUND_FX_SetDistortion; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetDistortion@24' {$ENDIF};
-function FSOUND_FX_SetEcho; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetEcho@24' {$ENDIF};
-function FSOUND_FX_SetFlanger; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetFlanger@32' {$ENDIF};
-function FSOUND_FX_SetGargle; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetGargle@12' {$ENDIF};
-function FSOUND_FX_SetI3DL2Reverb; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetI3DL2Reverb@52' {$ENDIF};
-function FSOUND_FX_SetParamEQ; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetParamEQ@16' {$ENDIF};
-function FSOUND_FX_SetWavesReverb; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetWavesReverb@20' {$ENDIF};
-function FSOUND_Stream_Open; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Open@16' {$ENDIF};
-function FSOUND_Stream_Create; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Create@20' {$ENDIF};
-function FSOUND_Stream_Play; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Play@8' {$ENDIF};
-function FSOUND_Stream_PlayEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_PlayEx@16' {$ENDIF};
-function FSOUND_Stream_Stop; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Stop@4' {$ENDIF};
-function FSOUND_Stream_Close; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Close@4' {$ENDIF};
-function FSOUND_Stream_SetEndCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetEndCallback@12' {$ENDIF};
-function FSOUND_Stream_SetSyncCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetSyncCallback@12' {$ENDIF};
-function FSOUND_Stream_GetSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetSample@4' {$ENDIF};
-function FSOUND_Stream_CreateDSP; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_CreateDSP@16' {$ENDIF};
-function FSOUND_Stream_SetBufferSize; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetBufferSize@4' {$ENDIF};
-function FSOUND_Stream_SetPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetPosition@8' {$ENDIF};
-function FSOUND_Stream_GetPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetPosition@4' {$ENDIF};
-function FSOUND_Stream_SetTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetTime@8' {$ENDIF};
-function FSOUND_Stream_GetTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetTime@4' {$ENDIF};
-function FSOUND_Stream_GetLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetLength@4' {$ENDIF};
-function FSOUND_Stream_GetLengthMs; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetLengthMs@4' {$ENDIF};
-function FSOUND_Stream_SetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetMode@8' {$ENDIF};
-function FSOUND_Stream_GetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetMode@4' {$ENDIF};
-function FSOUND_Stream_SetLoopPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetLoopPoints@12' {$ENDIF};
-function FSOUND_Stream_SetLoopCount; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetLoopCount@8' {$ENDIF};
-function FSOUND_Stream_AddSyncPoint; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_AddSyncPoint@12' {$ENDIF};
-function FSOUND_Stream_DeleteSyncPoint; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_DeleteSyncPoint@4' {$ENDIF};
-function FSOUND_Stream_GetNumSyncPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetNumSyncPoints@4' {$ENDIF};
-function FSOUND_Stream_GetSyncPoint; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetSyncPoint@8' {$ENDIF};
-function FSOUND_Stream_GetSyncPointInfo; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetSyncPointInfo@8' {$ENDIF};
-function FSOUND_Stream_GetOpenState; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetOpenState@4' {$ENDIF};
-function FSOUND_Stream_SetSubStream; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetSubStream@8' {$ENDIF};
-function FSOUND_Stream_GetNumSubStreams; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetNumSubStreams@4' {$ENDIF};
-function FSOUND_Stream_SetSubStreamSentence; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetSubStreamSentence@12' {$ENDIF};
-function FSOUND_Stream_GetNumTagFields; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetNumTagFields@8' {$ENDIF};
-function FSOUND_Stream_GetTagField; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetTagField@24' {$ENDIF};
-function FSOUND_Stream_FindTagField; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_FindTagField@20' {$ENDIF};
-function FSOUND_Stream_Net_SetProxy; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_SetProxy@4' {$ENDIF};
-function FSOUND_Stream_Net_GetLastServerStatus; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_GetLastServerStatus@0' {$ENDIF};
-function FSOUND_Stream_Net_SetBufferProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_SetBufferProperties@12' {$ENDIF};
-function FSOUND_Stream_Net_GetBufferProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_GetBufferProperties@12' {$ENDIF};
-function FSOUND_Stream_Net_SetMetadataCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_SetMetadataCallback@12' {$ENDIF};
-function FSOUND_Stream_Net_GetStatus; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_GetStatus@20' {$ENDIF};
-function FSOUND_CD_Play; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_Play@8' {$ENDIF};
-procedure FSOUND_CD_SetPlayMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetPlayMode@8' {$ENDIF};
-function FSOUND_CD_Stop; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_Stop@4' {$ENDIF};
-function FSOUND_CD_SetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetPaused@8' {$ENDIF};
-function FSOUND_CD_SetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetVolume@8' {$ENDIF};
-function FSOUND_CD_SetTrackTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetTrackTime@8' {$ENDIF};
-function FSOUND_CD_OpenTray; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_OpenTray@8' {$ENDIF};
-function FSOUND_CD_GetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetPaused@4' {$ENDIF};
-function FSOUND_CD_GetTrack; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetTrack@4' {$ENDIF};
-function FSOUND_CD_GetNumTracks; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetNumTracks@4' {$ENDIF};
-function FSOUND_CD_GetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetVolume@4' {$ENDIF};
-function FSOUND_CD_GetTrackLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetTrackLength@8' {$ENDIF};
-function FSOUND_CD_GetTrackTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetTrackTime@4' {$ENDIF};
-function FSOUND_DSP_Create; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_Create@12' {$ENDIF};
-procedure FSOUND_DSP_Free; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_Free@4' {$ENDIF};
-procedure FSOUND_DSP_SetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_SetPriority@8' {$ENDIF};
-function FSOUND_DSP_GetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetPriority@4' {$ENDIF};
-procedure FSOUND_DSP_SetActive; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_SetActive@8' {$ENDIF};
-function FSOUND_DSP_GetActive; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetActive@4' {$ENDIF};
-function FSOUND_DSP_GetClearUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetClearUnit@0' {$ENDIF};
-function FSOUND_DSP_GetSFXUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetSFXUnit@0' {$ENDIF};
-function FSOUND_DSP_GetMusicUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetMusicUnit@0' {$ENDIF};
-function FSOUND_DSP_GetClipAndCopyUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetClipAndCopyUnit@0' {$ENDIF};
-function FSOUND_DSP_GetFFTUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetFFTUnit@0' {$ENDIF};
-function FSOUND_DSP_MixBuffers; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_MixBuffers@28' {$ENDIF};
-procedure FSOUND_DSP_ClearMixBuffer; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_ClearMixBuffer@0' {$ENDIF};
-function FSOUND_DSP_GetBufferLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetBufferLength@0' {$ENDIF};
-function FSOUND_DSP_GetBufferLengthTotal; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetBufferLengthTotal@0' {$ENDIF};
-function FSOUND_DSP_GetSpectrum; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetSpectrum@0' {$ENDIF};
-function FSOUND_Reverb_SetProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_SetProperties@4' {$ENDIF};
-function FSOUND_Reverb_GetProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_GetProperties@4' {$ENDIF};
-function FSOUND_Reverb_SetChannelProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_SetChannelProperties@8' {$ENDIF};
-function FSOUND_Reverb_GetChannelProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_GetChannelProperties@8' {$ENDIF};
-function FSOUND_Record_SetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_SetDriver@4' {$ENDIF};
-function FSOUND_Record_GetNumDrivers; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetNumDrivers@0' {$ENDIF};
-function FSOUND_Record_GetDriverName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetDriverName@4' {$ENDIF};
-function FSOUND_Record_GetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetDriver@0' {$ENDIF};
-function FSOUND_Record_StartSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_StartSample@8' {$ENDIF};
-function FSOUND_Record_Stop; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_Stop@0' {$ENDIF};
-function FSOUND_Record_GetPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetPosition@0' {$ENDIF};
-procedure FSOUND_File_SetCallbacks; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_File_SetCallbacks@20' {$ENDIF};
-function FMUSIC_LoadSong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_LoadSong@4' {$ENDIF};
-function FMUSIC_LoadSongEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_LoadSongEx@24' {$ENDIF};
-function FMUSIC_GetOpenState; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetOpenState@4' {$ENDIF};
-function FMUSIC_FreeSong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_FreeSong@4' {$ENDIF};
-function FMUSIC_PlaySong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_PlaySong@4' {$ENDIF};
-function FMUSIC_StopSong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_StopSong@4' {$ENDIF};
-procedure FMUSIC_StopAllSongs; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_StopAllSongs@0' {$ENDIF};
-function FMUSIC_SetZxxCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetZxxCallback@8' {$ENDIF};
-function FMUSIC_SetRowCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetRowCallback@12' {$ENDIF};
-function FMUSIC_SetOrderCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetOrderCallback@12' {$ENDIF};
-function FMUSIC_SetInstCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetInstCallback@12' {$ENDIF};
-function FMUSIC_SetSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetSample@12' {$ENDIF};
-function FMUSIC_SetUserData; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetUserData@8' {$ENDIF};
-function FMUSIC_OptimizeChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_OptimizeChannels@12' {$ENDIF};
-function FMUSIC_SetReverb; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetReverb@4' {$ENDIF};
-function FMUSIC_SetLooping; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetLooping@8' {$ENDIF};
-function FMUSIC_SetOrder; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetOrder@8' {$ENDIF};
-function FMUSIC_SetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetPaused@8' {$ENDIF};
-function FMUSIC_SetMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetMasterVolume@8' {$ENDIF};
-function FMUSIC_SetMasterSpeed; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetMasterSpeed@8' {$ENDIF};
-function FMUSIC_SetPanSeperation; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetPanSeperation@8' {$ENDIF};
-function FMUSIC_GetName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetName@4' {$ENDIF};
-function FMUSIC_GetType; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetType@4' {$ENDIF};
-function FMUSIC_GetNumOrders; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumOrders@4' {$ENDIF};
-function FMUSIC_GetNumPatterns; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumPatterns@4' {$ENDIF};
-function FMUSIC_GetNumInstruments; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumInstruments@4' {$ENDIF};
-function FMUSIC_GetNumSamples; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumSamples@4' {$ENDIF};
-function FMUSIC_GetNumChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumChannels@4' {$ENDIF};
-function FMUSIC_GetSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetSample@8' {$ENDIF};
-function FMUSIC_GetPatternLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetPatternLength@8' {$ENDIF};
-function FMUSIC_IsFinished; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_IsFinished@4' {$ENDIF};
-function FMUSIC_IsPlaying; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_IsPlaying@4' {$ENDIF};
-function FMUSIC_GetMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetMasterVolume@4' {$ENDIF};
-function FMUSIC_GetGlobalVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetGlobalVolume@4' {$ENDIF};
-function FMUSIC_GetOrder; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetOrder@4' {$ENDIF};
-function FMUSIC_GetPattern; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetPattern@4' {$ENDIF};
-function FMUSIC_GetSpeed; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetSpeed@4' {$ENDIF};
-function FMUSIC_GetBPM; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetBPM@4' {$ENDIF};
-function FMUSIC_GetRow; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetRow@4' {$ENDIF};
-function FMUSIC_GetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetPaused@4' {$ENDIF};
-function FMUSIC_GetTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetTime@4' {$ENDIF};
-function FMUSIC_GetRealChannel; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetRealChannel@8' {$ENDIF};
-function FMUSIC_GetUserData; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetUserData@4' {$ENDIF};
-
-var
-  Saved8087CW: Word;
-
-initialization
-
-  { Save the current FPU state and then disable FPU exceptions }
-  Saved8087CW := Default8087CW;
-  Set8087CW($133f); { Disable all fpu exceptions }
-
-finalization
-  { Reset the FPU to the previous state }
-  Set8087CW(Saved8087CW);
-end.

+ 0 - 92
Source/FMX/Soundx.FMODPresets.pas

@@ -1,92 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-(*===============================================================================================
- FMOD presets header file. Copyright (c), FireLight Technologies Pty, Ltd. 1999-2004.
- ===============================================================================================
-
-  NOTE: For the demos to run you must have either fmod.dll (in Windows)
-  or libfmod-3.75.so (in Linux) installed.
-
-  In Winapi.Windows, copy the fmod.dll file found in the api directory to either of
-  the following locations (in order of preference)
-  - your application directory
-  - Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
-
-  In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
-  file from the api directory to your /usr/lib/ directory.
-  Then via a command line, navigate to the /usr/lib/ directory and create
-  a symbolic link between libfmod-3.5.so and libfmod.so. This is done with
-  the following command (assuming you are in /usr/lib/)...
-  ln -s libfmod-3.75.so libfmod.so.
-*)
-
-unit Soundx.FMODPresets;
-
-interface
-
-uses
-  Soundx.FMODTypes;
-
-(*
-[DEFINE_START]
-[
-    [NAME]
-    FSOUND_REVERB_PRESETS
-
-    [DESCRIPTION]
-    A set of predefined environment PARAMETERS, created by Creative Labs
-    These are used to initialize an FSOUND_REVERB_PROPERTIES structure statically.
-    ie
-    FSOUND_REVERB_PROPERTIES prop = FSOUND_PRESET_GENERIC;
-
-    [SEE_ALSO]
-    FSOUND_Reverb_SetProperties
-]
-*)
-
-{$J+}
-const
-  FSOUND_PRESET_OFF:              TFSoundReverbProperties = (Environment: 0;  EnvSize: 7.5;   EnvDiffusion: 1.00;   Room: -10000; RoomHF: -10000; RoomLF: 0;  DecayTime: 1.00;  DecayHFRatio: 1.00; DecayLFRatio: 1.0;  Reflections: -2602; ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 200;  ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 0.0;   Density: 0.0;   Flags: $33f);
-  FSOUND_PRESET_GENERIC:          TFSoundReverbProperties = (Environment: 0;  EnvSize: 7.5;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -100;   RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.83; DecayLFRatio: 1.0;  Reflections: -2602; ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 200;  ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_PADDEDCELL:       TFSoundReverbProperties = (Environment: 1;  EnvSize: 1.4;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -6000;  RoomLF: 0;  DecayTime: 0.17;  DecayHFRatio: 0.10; DecayLFRatio: 1.0;  Reflections: -1204; ReflectionsDelay: 0.001;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 207;  ReverbDelay: 0.002; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_ROOM:             TFSoundReverbProperties = (Environment: 2;  EnvSize: 1.9;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -454;   RoomLF: 0;  DecayTime: 0.40;  DecayHFRatio: 0.83; DecayLFRatio: 1.0;  Reflections: -1646; ReflectionsDelay: 0.002;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 53;   ReverbDelay: 0.003; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_BATHROOM:         TFSoundReverbProperties = (Environment: 3;  EnvSize: 1.4;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -1200;  RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.54; DecayLFRatio: 1.0;  Reflections: -370;  ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 1030; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 60.0;  Flags: $3f);
-  FSOUND_PRESET_LIVINGROOM:       TFSoundReverbProperties = (Environment: 4;  EnvSize: 2.5;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -6000;  RoomLF: 0;  DecayTime: 0.50;  DecayHFRatio: 0.10; DecayLFRatio: 1.0;  Reflections: -1376; ReflectionsDelay: 0.003;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-1104; ReverbDelay: 0.004; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_STONEROOM:        TFSoundReverbProperties = (Environment: 5;  EnvSize: 11.6;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -300;   RoomLF: 0;  DecayTime: 2.31;  DecayHFRatio: 0.64; DecayLFRatio: 1.0;  Reflections: -711;  ReflectionsDelay: 0.012;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 83;   ReverbDelay: 0.017; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_AUDITORIUM:       TFSoundReverbProperties = (Environment: 6;  EnvSize: 21.6;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -476;   RoomLF: 0;  DecayTime: 4.32;  DecayHFRatio: 0.59; DecayLFRatio: 1.0;  Reflections: -789;  ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-289;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_CONCERTHALL:      TFSoundReverbProperties = (Environment: 7;  EnvSize: 19.6;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -500;   RoomLF: 0;  DecayTime: 3.92;  DecayHFRatio: 0.70; DecayLFRatio: 1.0;  Reflections: -1230; ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-2;    ReverbDelay: 0.029; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_CAVE:             TFSoundReverbProperties = (Environment: 8;  EnvSize: 14.6;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: 0;      RoomLF: 0;  DecayTime: 2.91;  DecayHFRatio: 1.30; DecayLFRatio: 1.0;  Reflections: -602;  ReflectionsDelay: 0.015;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-302;  ReverbDelay: 0.022; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
-  FSOUND_PRESET_ARENA:            TFSoundReverbProperties = (Environment: 9;  EnvSize: 36.2;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -698;   RoomLF: 0;  DecayTime: 7.24;  DecayHFRatio: 0.33; DecayLFRatio: 1.0;  Reflections: -1166; ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 16;   ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_HANGAR:           TFSoundReverbProperties = (Environment: 10; EnvSize: 50.3;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -1000;  RoomLF: 0;  DecayTime: 10.05; DecayHFRatio: 0.23; DecayLFRatio: 1.0;  Reflections: -602;  ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 198;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_CARPETTEDHALLWAY: TFSoundReverbProperties = (Environment: 11; EnvSize: 1.9;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -4000;  RoomLF: 0;  DecayTime: 0.30;  DecayHFRatio: 0.10; DecayLFRatio: 1.0;  Reflections: -1831; ReflectionsDelay: 0.002;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-1630; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_HALLWAY:          TFSoundReverbProperties = (Environment: 12; EnvSize: 1.8;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -300;   RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.59; DecayLFRatio: 1.0;  Reflections: -1219; ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 441;  ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_STONECORRIDOR:    TFSoundReverbProperties = (Environment: 13; EnvSize: 13.5;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -237;   RoomLF: 0;  DecayTime: 2.70;  DecayHFRatio: 0.79; DecayLFRatio: 1.0;  Reflections: -1214; ReflectionsDelay: 0.013;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 395;  ReverbDelay: 0.020; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_ALLEY:            TFSoundReverbProperties = (Environment: 14; EnvSize: 7.5;   EnvDiffusion: 0.30;   Room: -1000;  RoomHF: -270;   RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.86; DecayLFRatio: 1.0;  Reflections: -1204; ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-4;    ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.125;  EchoDepth: 0.95;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_FOREST:           TFSoundReverbProperties = (Environment: 15; EnvSize: 38.0;  EnvDiffusion: 0.30;   Room: -1000;  RoomHF: -3300;  RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.54; DecayLFRatio: 1.0;  Reflections: -2560; ReflectionsDelay: 0.162;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-229;  ReverbDelay: 0.088; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.125;  EchoDepth: 1.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 79.0;  Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_CITY:             TFSoundReverbProperties = (Environment: 16; EnvSize: 7.5;   EnvDiffusion: 0.50;   Room: -1000;  RoomHF: -800;   RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.67; DecayLFRatio: 1.0;  Reflections: -2273; ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-1691; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 50.0;  Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_MOUNTAINS:        TFSoundReverbProperties = (Environment: 17; EnvSize: 100.0; EnvDiffusion: 0.27;   Room: -1000;  RoomHF: -2500;  RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.21; DecayLFRatio: 1.0;  Reflections: -2780; ReflectionsDelay: 0.300;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-1434; ReverbDelay: 0.100; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 1.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 27.0;  Density: 100.0; Flags: $1f);
-  FSOUND_PRESET_QUARRY:           TFSoundReverbProperties = (Environment: 18; EnvSize: 17.5;  EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -1000;  RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.83; DecayLFRatio: 1.0;  Reflections: -10000;ReflectionsDelay: 0.061;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 500;  ReverbDelay: 0.025; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.125;  EchoDepth: 0.70;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_PLAIN:            TFSoundReverbProperties = (Environment: 19; EnvSize: 42.5;  EnvDiffusion: 0.21;   Room: -1000;  RoomHF: -2000;  RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.50; DecayLFRatio: 1.0;  Reflections: -2466; ReflectionsDelay: 0.179;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-1926; ReverbDelay: 0.100; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 1.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 21.0;  Density: 100.0; Flags: $3f);
-  FSOUND_PRESET_PARKINGLOT:       TFSoundReverbProperties = (Environment: 20; EnvSize: 8.3;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: 0;      RoomLF: 0;  DecayTime: 1.65;  DecayHFRatio: 1.50; DecayLFRatio: 1.0;  Reflections: -1363; ReflectionsDelay: 0.008;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-1153; ReverbDelay: 0.012; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
-  FSOUND_PRESET_SEWERPIPE:        TFSoundReverbProperties = (Environment: 21; EnvSize: 1.7;   EnvDiffusion: 0.80;   Room: -1000;  RoomHF: -1000;  RoomLF: 0;  DecayTime: 2.81;  DecayHFRatio: 0.14; DecayLFRatio: 1.0;  Reflections:  429;  ReflectionsDelay: 0.014;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 1023; ReverbDelay: 0.021; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 80.0;  Density: 60.0;  Flags: $3f);
-  FSOUND_PRESET_UNDERWATER:       TFSoundReverbProperties = (Environment: 22; EnvSize: 1.8;   EnvDiffusion: 1.00;   Room: -1000;  RoomHF: -4000;  RoomLF: 0;  DecayTime: 1.49;  DecayHFRatio: 0.10; DecayLFRatio: 1.0;  Reflections: -449;  ReflectionsDelay: 0.007;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 1700; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 1.18; ModulationDepth: 0.348; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
-
-(* Non I3DL2 presets *)
-
-  FSOUND_PRESET_DRUGGED:          TFSoundReverbProperties = (Environment: 23; EnvSize: 1.9;   EnvDiffusion: 0.50;   Room: -1000;  RoomHF: 0;      RoomLF: 0;  DecayTime: 8.39;  DecayHFRatio: 1.39; DecayLFRatio: 1.0;  Reflections: -115;  ReflectionsDelay: 0.002;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 985;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 0.25; ModulationDepth: 1.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
-  FSOUND_PRESET_DIZZY:            TFSoundReverbProperties = (Environment: 24; EnvSize: 1.8;   EnvDiffusion: 0.60;   Room: -1000;  RoomHF: -400;   RoomLF: 0;  DecayTime: 17.23; DecayHFRatio: 0.56; DecayLFRatio: 1.0;  Reflections: -1713; ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb:-613;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 1.00;  ModulationTime: 0.81; ModulationDepth: 0.310; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
-  FSOUND_PRESET_PSYCHOTIC:        TFSoundReverbProperties = (Environment: 25; EnvSize: 1.0;   EnvDiffusion: 0.50;   Room: -1000;  RoomHF: -151;   RoomLF: 0;  DecayTime: 7.56;  DecayHFRatio: 0.91; DecayLFRatio: 1.0;  Reflections: -626;  ReflectionsDelay: 0.020;  ReflectionsPan: (0.0, 0.0, 0.0);  Reverb: 774;  ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250;  EchoDepth: 0.00;  ModulationTime: 4.00; ModulationDepth: 1.000; AirAbsorptionHF: -5.0;  HFReference: 5000.0;  LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
-
-(* PlayStation 2 Only presets *)
-(* Delphi/Kylix cannot create PlayStation 2 executables, so there is no need to
-   convert the PlayStation 2 presets. *)
-{$J-}
-
-(* [DEFINE_END] *)
-
-//---------------------------------------------
-implementation
-//---------------------------------------------
-
-end.

+ 0 - 803
Source/FMX/Soundx.FMODtypes.pas

@@ -1,803 +0,0 @@
-//
-// The graphics rendering engine GLScene http://glscene.org
-//
-unit Soundx.FMODtypes;
-
-(*=============================================================================================== 
-  FMOD Types header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004.              
-  =============================================================================================== 
-
-  NOTE: For the demos to run you must have either fmod.dll (in Windows)
-  or libfmod-3.75.so (in Linux) installed.
-
-  In Windows, copy the fmod.dll file found in the api directory to either of
-  the following locations (in order of preference)
-  - your application directory
-  - Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
-
-  In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
-  file from the api directory to your /usr/lib/ directory.
-  Then via a command line, navigate to the /usr/lib/ directory and create
-  a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
-  the following command (assuming you are in /usr/lib/)...
-  ln -s libfmod-3.75.so libfmod.so.
-*)
-
-
-interface
-
-{$IFDEF MSWINDOWS}
-uses
-  Winapi.Windows;
-{$ENDIF}
-
-(*=============================================================================================== 
-  DEFINITIONS                                                                                     
- ===============================================================================================*) 
-
-(*
-  Force four-byte enums
-*)
-
-{$Z4}
-
-const
-  FMOD_VERSION: Single = 3.75;
-
-(*
-  FMOD defined types
-*)
-
-type
-  PFSoundSample = Pointer;
-  PFSoundStream = Pointer;
-  PFSoundDSPUnit = Pointer;
-  PFMusicModule = Pointer;
-  PFSyncPoint = Pointer;
-
-  PFSoundVector = ^TFSoundVector;
-  TFSoundVector = record
-    x: Single;
-    y: Single;
-    z: Single;
-  end;
-
- (*
-    Callback types
- *)
-
-  TFSoundStreamCallback   = function (Stream: PFSoundStream; Buff: Pointer; Length, Param: Integer): ByteBool;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundDSPCallback      = function (OriginalBuffer: Pointer; NewBuffer: Pointer; Length, Param: Integer): Pointer;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFMusicCallback         = procedure (Module: PFMusicModule; Param: Byte);  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-  TFSoundOpenCallback     = function (Name: PChar): Cardinal;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundCloseCallback    = procedure (Handle: Cardinal);  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundReadCallback     = function (Buffer: Pointer; Size: Cardinal; Handle: Cardinal): Cardinal;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundSeekCallback     = procedure (Handle: Cardinal; Pos: Cardinal; Mode: Byte);  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundTellCallback     = function (Handle: Cardinal): Cardinal;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-  TFSoundAllocCallback    = function(Size: Cardinal): Pointer;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundReallocCallback  = function(Ptr: Pointer; Size: Cardinal): Pointer;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-  TFSoundFreeCallback     = procedure(Ptr: Pointer);  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-  TFMetaDataCallback      = function(Name: PChar; Value: PChar; userdata: Integer): ByteBool;  {$IFDEF UNIX} cdecl {$ELSE} stdcall {$ENDIF};
-
-(*
-[ENUM]
-[
-  [DESCRIPTION]
-  On failure of commands in FMOD, use FSOUND_GetError to attain what happened.
-
-  [SEE_ALSO]
-  FSOUND_GetError
-]
-*)
-
-type
-  TFModErrors = (
-    FMOD_ERR_NONE,             // No errors
-    FMOD_ERR_BUSY,             // Cannot call this command after FSOUND_Init.  Call FSOUND_Close first.
-    FMOD_ERR_UNINITIALIZED,    // This command failed because FSOUND_Init was not called
-    FMOD_ERR_INIT,             // Error initializing output device.
-    FMOD_ERR_ALLOCATED,        // Error initializing output device, but more specifically, the output device is already in use and cannot be reused.
-    FMOD_ERR_PLAY,             // Playing the sound failed.
-    FMOD_ERR_OUTPUT_FORMAT,    // Soundcard does not support the features needed for this soundsystem (16bit stereo output)
-    FMOD_ERR_COOPERATIVELEVEL, // Error setting cooperative level for hardware.
-    FMOD_ERR_CREATEBUFFER,     // Error creating hardware sound buffer.
-    FMOD_ERR_FILE_NOTFOUND,    // File not found
-    FMOD_ERR_FILE_FORMAT,      // Unknown file format
-    FMOD_ERR_FILE_BAD,         // Error loading file
-    FMOD_ERR_MEMORY,           // Not enough memory or resources
-    FMOD_ERR_VERSION,          // The version number of this file format is not supported
-    FMOD_ERR_INVALID_PARAM,    // An invalid parameter was passed to this function
-    FMOD_ERR_NO_EAX,           // Tried to use an EAX command on a non EAX enabled channel or output.
-    FMOD_ERR_CHANNEL_ALLOC,    // Failed to allocate a new channel
-    FMOD_ERR_RECORD,           // Recording is not supported on this machine
-    FMOD_ERR_MEDIAPLAYER,      // Windows Media Player not installed so cannot play wma or use internet streaming. */
-    FMOD_ERR_CDDEVICE          // An error occured trying to open the specified CD device
-  );
-
-(*
-[ENUM]
-[
-    [DESCRIPTION]
-    These output types are used with FSOUND_SetOutput, to choose which output driver to use.
-
-	FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver
-	does not support DirectX 6 Voice Manager Extensions.
-
-    FSOUND_OUTPUT_WINMM is recommended for NT and CE.
-
-    [SEE_ALSO]
-    FSOUND_SetOutput
-    FSOUND_GetOutput
-]
-*)
-
-type
-  TFSoundOutputTypes = (
-    FSOUND_OUTPUT_NOSOUND,  // NoSound driver, all calls to this succeed but do nothing.
-    FSOUND_OUTPUT_WINMM,    // Windows Multimedia driver.
-    FSOUND_OUTPUT_DSOUND,   // DirectSound driver.  You need this to get EAX2 or EAX3 support, or FX api support.
-    FSOUND_OUTPUT_A3D,      // A3D driver.
-
-    FSOUND_OUTPUT_OSS,      // Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers.
-    FSOUND_OUTPUT_ESD,      // Linux/Unix ESD (Enlightment Sound Daemon) driver.
-    FSOUND_OUTPUT_ALSA,     // Linux Alsa driver.
-
-    FSOUND_OUTPUT_ASIO,     // Low latency ASIO driver.
-    FSOUND_OUTPUT_XBOX,     // Xbox driver.
-    FSOUND_OUTPUT_PS2,      // PlayStation 2 driver.
-    FSOUND_OUTPUT_MAC,      // Mac SoundMager driver.
-    FSOUND_OUTPUT_GC,       // Gamecube driver.
-    FSOUND_OUTPUT_PSP,      // PlayStation Portable driver.
-
-    FSOUND_OUTPUT_NOSOUND_NONREALTIME   // This is the same as nosound, but the sound generation is driven by FSOUND_Update
-  );
-
-
-(*
-[ENUM]
-[
-  [DESCRIPTION]
-  These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act
-  upon for other reasons using FSOUND_GetMixer.
-  It is not necessary to set the mixer.  FMOD will autodetect the best mixer for you.
-
-  [SEE_ALSO]
-  FSOUND_SetMixer
-  FSOUND_GetMixer
-]
-*)
-
-type
-  TFSoundMixerTypes = (
-    FSOUND_MIXER_AUTODETECT,        // CE/PS2/GC Only - Non interpolating/low quality mixer.
-    FSOUND_MIXER_BLENDMODE,         // Removed / obsolete
-    FSOUND_MIXER_MMXP5,             // Removed / obsolete
-    FSOUND_MIXER_MMXP6,             // Removed / obsolete
-
-    FSOUND_MIXER_QUALITY_AUTODETECT,// All platforms - Autodetect the fastest quality mixer based on your cpu.
-    FSOUND_MIXER_QUALITY_FPU,       // Win32/Linux only - Interpolating/volume ramping FPU mixer.
-    FSOUND_MIXER_QUALITY_MMXP5,     // Win32/Linux only - Interpolating/volume ramping P5 MMX mixer.
-    FSOUND_MIXER_QUALITY_MMXP6,     // Win32/Linux only - Interpolating/volume ramping ppro+ MMX mixer.
-
-    FSOUND_MIXER_MONO,              // CE/PS2/GC only - MONO non interpolating/low quality mixer. For speed
-    FSOUND_MIXER_QUALITY_MONO,      // CE/PS2/GC only - MONO Interpolating mixer.  For speed
-
-    FSOUND_MIXER_MAX
-  );
-
-
-(*
-[ENUM]
-[
-  [DESCRIPTION]
-  These definitions describe the type of song being played.
-
-  [SEE_ALSO]
-  FMUSIC_GetType
-]
-*)
-
-type
-  TFMusicTypes = (
-    FMUSIC_TYPE_NONE,
-    FMUSIC_TYPE_MOD,  // Protracker / FastTracker
-    FMUSIC_TYPE_S3M,  // ScreamTracker 3
-    FMUSIC_TYPE_XM,   // FastTracker 2
-    FMUSIC_TYPE_IT,   // Impulse Tracker
-    FMUSIC_TYPE_MIDI, // MIDI file
-    FMUSIC_TYPE_FSB   // FMOD Sample Bank file
-  );
-
-
-(*
-[DEFINE_START]
-[
-  [NAME]
-  FSOUND_DSP_PRIORITIES
-
-  [DESCRIPTION]
-  These default priorities are used by FMOD internal system DSP units.  They describe the
-  position of the DSP chain, and the order of how audio processing is executed.
-  You can actually through the use of FSOUND_DSP_GetxxxUnit (where xxx is the name of the DSP
-  unit), disable or even change the priority of a DSP unit.
-
-  [SEE_ALSO]
-  FSOUND_DSP_Create
-  FSOUND_DSP_SetPriority
-  FSOUND_DSP_GetSpectrum
-]
-*)
-
-const
-  FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT        = 0;    // DSP CLEAR unit - done first
-  FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT          = 100;  // DSP SFX unit - done second
-  FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT        = 200;  // DSP MUSIC unit - done third
-  FSOUND_DSP_DEFAULTPRIORITY_USER             = 300;  // User priority, use this as reference for your own DSP units
-  FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT          = 900;  // This reads data for FSOUND_DSP_GetSpectrum, so it comes after user units
-  FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT  = 1000; // DSP CLIP AND COPY unit - last
-// [DEFINE_END]
-
-
-(*
-[DEFINE_START]
-[
-  [NAME]
-  FSOUND_CAPS
-
-  [DESCRIPTION]
-  Driver description bitfields. Use FSOUND_Driver_GetCaps to determine if a driver enumerated
-  has the settings you are after. The enumerated driver depends on the output mode, see
-  FSOUND_OUTPUTTYPES
-
-  [SEE_ALSO]
-  FSOUND_GetDriverCaps
-  FSOUND_OUTPUTTYPES
-]
-*)
-
-const
-  FSOUND_CAPS_HARDWARE              = $1;  // This driver supports hardware accelerated 3d sound.
-  FSOUND_CAPS_EAX2                  = $2;  // This driver supports EAX 2 reverb
-  FSOUND_CAPS_EAX3                  = $10; // This driver supports EAX 3 reverb
-// [DEFINE_END]
-
-
-(*
-[DEFINE_START]
-[
-    [NAME]
-    FSOUND_MODES
-
-    [DESCRIPTION]
-    Sample description bitfields, OR them together for loading and describing samples.
-    NOTE.  If the file format being loaded already has a defined format, such as WAV or MP3, then
-    trying to override the pre-defined format with a new set of format flags will not work.  For
-    example, an 8 bit WAV file will not load as 16bit if you specify FSOUND_16BITS.  It will just
-    ignore the flag and go ahead loading it as 8bits.  For these type of formats the only flags
-    you can specify that will really alter the behaviour of how it is loaded, are the following.
-
-    Looping behaviour - FSOUND_LOOP_OFF, FSOUND_LOOP_NORMAL, FSOUND_LOOP_BIDI 
-    Load destination - FSOUND_HW3D, FSOUND_HW2D, FSOUND_2D
-    Loading behaviour - FSOUND_NONBLOCKING, FSOUND_LOADMEMORY, FSOUND_LOADRAW, FSOUND_MPEGACCURATE, FSOUND_MPEGHALFRATE, FSOUND_FORCEMONO
-    Playback behaviour - FSOUND_STREAMABLE, FSOUND_ENABLEFX
-    PlayStation 2 only - FSOUND_USECORE0, FSOUND_USECORE1, FSOUND_LOADMEMORYIOP    
-
-    See flag descriptions for what these do.
-]
-*)
-
-const
-  FSOUND_LOOP_OFF      = $00000001;  // For non looping samples.
-  FSOUND_LOOP_NORMAL   = $00000002;  // For forward looping samples.
-  FSOUND_LOOP_BIDI     = $00000004;  // For bidirectional looping samples.  (no effect if in hardware).
-  FSOUND_8BITS         = $00000008;  // For 8 bit samples.
-  FSOUND_16BITS        = $00000010;  // For 16 bit samples.
-  FSOUND_MONO          = $00000020;  // For mono samples.
-  FSOUND_STEREO        = $00000040;  // For stereo samples.
-  FSOUND_UNSIGNED      = $00000080;  // For user created source data containing unsigned samples.
-  FSOUND_SIGNED        = $00000100;  // For user created source data containing signed data.
-  FSOUND_DELTA         = $00000200;  // For user created source data stored as delta values.
-  FSOUND_IT214         = $00000400;  // For user created source data stored using IT214 compression.
-  FSOUND_IT215         = $00000800;  // For user created source data stored using IT215 compression.
-  FSOUND_HW3D          = $00001000;  // Attempts to make samples use 3d hardware acceleration. (if the card supports it)
-  FSOUND_2D            = $00002000;  // Ignores any 3d processing.  Overrides FSOUND_HW3D.  Located in software.
-  FSOUND_STREAMABLE    = $00004000;  // For a streamimg sound where you feed the data to it. */
-  FSOUND_LOADMEMORY    = $00008000;  // "name" will be interpreted as a pointer to data for streaming and samples.
-  FSOUND_LOADRAW       = $00010000;  // Will ignore file format and treat as raw pcm.
-  FSOUND_MPEGACCURATE  = $00020000;  // For FSOUND_Stream_OpenFile - for accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime.  WARNING, see FSOUND_Stream_OpenFile for inital opening time performance issues.
-  FSOUND_FORCEMONO     = $00040000;  // For forcing stereo streams and samples to be mono - needed if using FSOUND_HW3D and stereo data - incurs a small speed hit for streams
-  FSOUND_HW2D          = $00080000;  // 2D hardware sounds.  allows hardware specific effects
-  FSOUND_ENABLEFX      = $00100000;  // Allows DX8 FX to be played back on a sound.  Requires DirectX 8 - Note these sounds cannot be played more than once, be 8 bit, be less than a certain size, or have a changing frequency
-  FSOUND_MPEGHALFRATE  = $00200000;  // For FMODCE only - decodes mpeg streams using a lower quality decode, but faster execution
-  FSOUND_XADPCM        = $00400000;  // For XBOX only - Contents are compressed as XADPCM  */
-  FSOUND_VAG           = $00800000;  // For PS2 only - Contents are compressed as Sony VAG format */
-  FSOUND_NONBLOCKING   = $01000000;  // For FSOUND_Stream_OpenFile - Causes stream to open in the background and not block the foreground app - stream plays only when ready.
-  FSOUND_GCADPCM       = $02000000;  // For Gamecube only - Contents are compressed as Gamecube DSP-ADPCM format
-  FSOUND_MULTICHANNEL  = $04000000;  // For PS2 only - Contents are interleaved into a multi-channel (more than stereo) format
-  FSOUND_USECORE0      = $08000000;  // For PS2 only - Sample/Stream is forced to use hardware voices 00-23
-  FSOUND_USECORE1      = $10000000;  // For PS2 only - Sample/Stream is forced to use hardware voices 24-47
-  FSOUND_LOADMEMORYIOP = $20000000;  // For PS2 only - "name" will be interpreted as a pointer to data for streaming and samples.  The address provided will be an IOP address
-
-const
-  FSOUND_NORMAL = (FSOUND_16BITS or FSOUND_SIGNED or FSOUND_MONO);
-// [DEFINE_END]
-
-
-(*
-[DEFINE_START]
-[
-    [NAME]
-    FSOUND_CDPLAYMODES
-
-    [DESCRIPTION]
-    Playback method for a CD Audio track, using FSOUND_CD_SetPlayMode
-
-    [SEE_ALSO]
-    FSOUND_CD_SetPlayMode  
-    FSOUND_CD_Play
-]
-*)
-
-const
-  FSOUND_CD_PLAYCONTINUOUS = 0;   // Starts from the current track and plays to end of CD.
-  FSOUND_CD_PLAYONCE = 1;         // Plays the specified track then stops.
-  FSOUND_CD_PLAYLOOPED = 2;       // Plays the specified track looped, forever until stopped manually.
-  FSOUND_CD_PLAYRANDOM = 3;       // Plays tracks in random order
-// [DEFINE_END]
-
-
-(*
-[DEFINE_START]
-[
-  [NAME]
-  FSOUND_CHANNELSAMPLEMODE
-
-  [DESCRIPTION]
-  Miscellaneous values for FMOD functions.
-
-  [SEE_ALSO]
-  FSOUND_PlaySound
-  FSOUND_PlaySoundEx
-  FSOUND_Sample_Alloc
-  FSOUND_Sample_Load
-  FSOUND_SetPan
-]
-*)
-
-const
-  FSOUND_FREE           = -1;     // value to play on any free channel, or to allocate a sample in a free sample slot.
-  FSOUND_UNMANAGED      = -2;     // value to allocate a sample that is NOT managed by FSOUND or placed in a sample slot.
-  FSOUND_ALL            = -3;     // for a channel index , this flag will affect ALL channels available! Not supported by every function.
-  FSOUND_STEREOPAN      = -1;     // value for FSOUND_SetPan so that stereo sounds are not played at half volume. See FSOUND_SetPan for more on this.
-  FSOUND_SYSTEMCHANNEL  = -1000;  // special 'channel' ID for all channel based functions that want to alter the global FSOUND software mixing output
-  FSOUND_SYSTEMSAMPLE   = -1000;  // special 'sample' ID for all sample based functions that want to alter the global FSOUND software mixing output sample
-// [DEFINE_END]
-
-
-(*
-[STRUCT_START]
-[
-    [NAME]
-    FSOUND_REVERB_PROPERTIES
-
-    [DESCRIPTION]
-    Structure defining a reverb environment.
-
-    [REMARKS]
-    For more indepth descriptions of the reverb properties under win32, please see the EAX2/EAX3
-    documentation at http://developer.creative.com/ under the 'downloads' section.
-    If they do not have the EAX3 documentation, then most information can be attained from
-    the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
-    EAX2.
-    Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset.
-    Note that integer values that typically range from -10,000 to 1000 are represented in 
-    decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
-    PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).  
-    Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
-    the reverb should product a similar effect on either platform.
-    Only WIN32 supports the reverb api.
-
-    The numerical values listed below are the maximum, minimum and default values for each variable respectively.
-
-    [SEE_ALSO]
-    FSOUND_Reverb_SetProperties
-    FSOUND_Reverb_GetProperties
-    FSOUND_REVERB_PRESETS
-    FSOUND_REVERB_FLAGS
-]
-*)
-
-type
-  TFSoundReverbProperties = record          // MIN     MAX    DEFAULT DESCRIPTION
-    Environment: Cardinal;                  // 0       25     0       sets all listener properties (win32 only)
-    EnvSize: Single;                        // 1.0     100.0  7.5     environment size in meters (win32 only)
-    EnvDiffusion: Single;                   // 0.0     1.0    1.0     environment diffusion (win32/xbox)
-    Room: Integer;                          // -10000  0      -1000   room effect level (at mid frequencies) (win32/xbox)
-    RoomHF: Integer;                        // -10000  0      -100    relative room effect level at high frequencies (win32/xbox)
-    RoomLF: Integer;                        // -10000  0      0       relative room effect level at low frequencies (win32 only)
-    DecayTime: Single;                      // 0.1     20.0   1.49    reverberation decay time at mid frequencies (win32/xbox)
-    DecayHFRatio: Single;                   // 0.1     2.0    0.83    high-frequency to mid-frequency decay time ratio (win32/xbox)
-    DecayLFRatio: Single;                   // 0.1     2.0    1.0     low-frequency to mid-frequency decay time ratio (win32 only)
-    Reflections: Integer;                   // -10000  1000   -2602   early reflections level relative to room effect (win32/xbox)
-    ReflectionsDelay: Single;               // 0.0     0.3    0.007   initial reflection delay time (win32/xbox)
-    ReflectionsPan: array [0..2] of Single; //                0,0,0   early reflections panning vector (win32 only)
-    Reverb: Integer;                        // -10000  2000   200     late reverberation level relative to room effect (win32/xbox)
-    ReverbDelay: Single;                    // 0.0     0.1    0.011   late reverberation delay time relative to initial reflection (win32/xbox)
-    ReverbPan: array [0..2] of Single;      //                0,0,0   late reverberation panning vector (win32 only)
-    EchoTime: Single;                       // .075    0.25   0.25    echo time (win32 only)
-    EchoDepth: Single;                      // 0.0     1.0    0.0     echo depth (win32 only)
-    ModulationTime: Single;                 // 0.04    4.0    0.25    modulation time (win32 only)
-    ModulationDepth: Single;                // 0.0     1.0    0.0     modulation depth (win32 only)
-    AirAbsorptionHF: Single;                // -100    0.0    -5.0    change in level per meter at high frequencies (win32 only)
-    HFReference: Single;                    // 1000.0  20000  5000.0  reference high frequency (hz) (win32/xbox)
-    LFReference: Single;                    // 20.0    1000.0 250.0   reference low frequency (hz) (win32 only)
-    RoomRolloffFactor: Single;              // 0.0     10.0   0.0     like FSOUND_3D_SetRolloffFactor but for room effect (win32/xbox)
-    Diffusion: Single;                      // 0.0     100.0  100.0   Value that controls the echo density in the late reverberation decay. (xbox only)
-    Density: Single;                        // 0.0     100.0  100.0   Value that controls the modal density in the late reverberation decay (xbox only)
-    Flags: Cardinal;                        // FSOUND_REVERB_PROPERTYFLAGS - modifies the behavior of above properties (win32 only)
-  end;
-// [STRUCT_END]
-
-
-(*
-[DEFINE_START]
-[
-    [NAME]
-    FSOUND_REVERB_FLAGS
-
-    [DESCRIPTION]
-    Values for the Flags member of the FSOUND_REVERB_PROPERTIES structure.
-
-    [SEE_ALSO]
-    FSOUND_REVERB_PROPERTIES
-]
-*)
-
-const
-  FSOUND_REVERBFLAGS_DECAYTIMESCALE         = $00000001;  // EnvironmentSize affects reverberation decay time
-  FSOUND_REVERBFLAGS_REFLECTIONSSCALE       = $00000002;  // EnvironmentSize affects reflection level
-  FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE  = $00000004;  // EnvironmentSize affects initial reflection delay time
-  FSOUND_REVERBFLAGS_REVERBSCALE            = $00000008;  // EnvironmentSize affects reflections level
-  FSOUND_REVERBFLAGS_REVERBDELAYSCALE       = $00000010;  // EnvironmentSize affects late reverberation delay time
-  FSOUND_REVERBFLAGS_DECAYHFLIMIT           = $00000020;  // AirAbsorptionHF affects DecayHFRatio
-  FSOUND_REVERBFLAGS_ECHOTIMESCALE          = $00000040;  // EnvironmentSize affects echo time
-  FSOUND_REVERBFLAGS_MODULATIONTIMESCALE    = $00000080;  // EnvironmentSize affects modulation time
-  FSOUND_REVERB_FLAGS_CORE0                 = $00000100;  // PS2 Only - Reverb is applied to CORE0 (hw voices 0-23)
-  FSOUND_REVERB_FLAGS_CORE1                 = $00000200;  // PS2 Only - Reverb is applied to CORE1 (hw voices 24-47)
-  FSOUND_REVERBFLAGS_DEFAULT                = FSOUND_REVERBFLAGS_DECAYTIMESCALE or FSOUND_REVERBFLAGS_REFLECTIONSSCALE or
-                                              FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE or FSOUND_REVERBFLAGS_REVERBSCALE or
-                                              FSOUND_REVERBFLAGS_REVERBDELAYSCALE or FSOUND_REVERBFLAGS_DECAYHFLIMIT or
-                                              FSOUND_REVERB_FLAGS_CORE0 or FSOUND_REVERB_FLAGS_CORE1;
-// [DEFINE_END]
-
-
-(*
-[DEFINE_START]
-[
-    [NAME]
-    FSOUND_REVERB_PRESETS
-
-    [DESCRIPTION]
-    A set of predefined environment PARAMETERS, created by Creative Labs
-    These are used to initialize an FSOUND_REVERB_PROPERTIES structure statically.
-    ie 
-    FSOUND_REVERB_PROPERTIES prop = FSOUND_PRESET_GENERIC;
-
-    [SEE_ALSO]
-    FSOUND_Reverb_SetProperties
-]
-*)
-(*
-const
-//                                 Env  Size    Diffus  Room   RoomHF  RmLF DecTm   DecHF  DecLF   Refl  RefDel  RefPan           Revb  RevDel  ReverbPan       EchoTm  EchDp  ModTm  ModDp  AirAbs  HFRef    LFRef  RRlOff Diffus  Densty  FLAGS 
-  FSOUND_PRESET_OFF              = 0,	7.5f,	1.00f, -10000, -10000, 0,   1.00f,  1.00f, 1.0f,  -2602, 0.007f, 0.0f,0.0f,0.0f,   200, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f,   0.0f,   0.0f, 0x3f ;
-  FSOUND_PRESET_GENERIC          = 0,	7.5f,	1.00f, -1000,  -100,   0,   1.49f,  0.83f, 1.0f,  -2602, 0.007f, 0.0f,0.0f,0.0f,   200, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_PADDEDCELL       = 1,	1.4f,	1.00f, -1000,  -6000,  0,   0.17f,  0.10f, 1.0f,  -1204, 0.001f, 0.0f,0.0f,0.0f,   207, 0.002f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_ROOM             = 2,	1.9f,	1.00f, -1000,  -454,   0,   0.40f,  0.83f, 1.0f,  -1646, 0.002f, 0.0f,0.0f,0.0f,    53, 0.003f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_BATHROOM         = 3,	1.4f,	1.00f, -1000,  -1200,  0,   1.49f,  0.54f, 1.0f,   -370, 0.007f, 0.0f,0.0f,0.0f,  1030, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f,  60.0f, 0x3f ;
-  FSOUND_PRESET_LIVINGROOM       = 4,	2.5f,	1.00f, -1000,  -6000,  0,   0.50f,  0.10f, 1.0f,  -1376, 0.003f, 0.0f,0.0f,0.0f, -1104, 0.004f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_STONEROOM        = 5,	11.6f,	1.00f, -1000,  -300,   0,   2.31f,  0.64f, 1.0f,   -711, 0.012f, 0.0f,0.0f,0.0f,    83, 0.017f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_AUDITORIUM       = 6,	21.6f,	1.00f, -1000,  -476,   0,   4.32f,  0.59f, 1.0f,   -789, 0.020f, 0.0f,0.0f,0.0f,  -289, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_CONCERTHALL      = 7,	19.6f,	1.00f, -1000,  -500,   0,   3.92f,  0.70f, 1.0f,  -1230, 0.020f, 0.0f,0.0f,0.0f,    -2, 0.029f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_CAVE             = 8,	14.6f,	1.00f, -1000,  0,      0,   2.91f,  1.30f, 1.0f,   -602, 0.015f, 0.0f,0.0f,0.0f,  -302, 0.022f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
-  FSOUND_PRESET_ARENA            = 9,	36.2f,	1.00f, -1000,  -698,   0,   7.24f,  0.33f, 1.0f,  -1166, 0.020f, 0.0f,0.0f,0.0f,    16, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_HANGAR           = 10,	50.3f,	1.00f, -1000,  -1000,  0,   10.05f, 0.23f, 1.0f,   -602, 0.020f, 0.0f,0.0f,0.0f,   198, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_CARPETTEDHALLWAY = 11,	1.9f,	1.00f, -1000,  -4000,  0,   0.30f,  0.10f, 1.0f,  -1831, 0.002f, 0.0f,0.0f,0.0f, -1630, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_HALLWAY          = 12,	1.8f,	1.00f, -1000,  -300,   0,   1.49f,  0.59f, 1.0f,  -1219, 0.007f, 0.0f,0.0f,0.0f,   441, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_STONECORRIDOR    = 13,	13.5f,	1.00f, -1000,  -237,   0,   2.70f,  0.79f, 1.0f,  -1214, 0.013f, 0.0f,0.0f,0.0f,   395, 0.020f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_ALLEY 	         = 14,	7.5f,	0.30f, -1000,  -270,   0,   1.49f,  0.86f, 1.0f,  -1204, 0.007f, 0.0f,0.0f,0.0f,    -4, 0.011f, 0.0f,0.0f,0.0f, 0.125f, 0.95f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_FOREST 	         = 15,	38.0f,	0.30f, -1000,  -3300,  0,   1.49f,  0.54f, 1.0f,  -2560, 0.162f, 0.0f,0.0f,0.0f,  -229, 0.088f, 0.0f,0.0f,0.0f, 0.125f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f,  79.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_CITY             = 16,	7.5f,	0.50f, -1000,  -800,   0,   1.49f,  0.67f, 1.0f,  -2273, 0.007f, 0.0f,0.0f,0.0f, -1691, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f,  50.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_MOUNTAINS        = 17,	100.0f, 0.27f, -1000,  -2500,  0,   1.49f,  0.21f, 1.0f,  -2780, 0.300f, 0.0f,0.0f,0.0f, -1434, 0.100f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f,  27.0f, 100.0f, 0x1f ;
-  FSOUND_PRESET_QUARRY           = 18,	17.5f,	1.00f, -1000,  -1000,  0,   1.49f,  0.83f, 1.0f, -10000, 0.061f, 0.0f,0.0f,0.0f,   500, 0.025f, 0.0f,0.0f,0.0f, 0.125f, 0.70f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_PLAIN            = 19,	42.5f,	0.21f, -1000,  -2000,  0,   1.49f,  0.50f, 1.0f,  -2466, 0.179f, 0.0f,0.0f,0.0f, -1926, 0.100f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f,  21.0f, 100.0f, 0x3f ;
-  FSOUND_PRESET_PARKINGLOT       = 20,	8.3f,	1.00f, -1000,  0,      0,   1.65f,  1.50f, 1.0f,  -1363, 0.008f, 0.0f,0.0f,0.0f, -1153, 0.012f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
-  FSOUND_PRESET_SEWERPIPE        = 21,	1.7f,	0.80f, -1000,  -1000,  0,   2.81f,  0.14f, 1.0f,    429, 0.014f, 0.0f,0.0f,0.0f,  1023, 0.021f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f,  80.0f,  60.0f, 0x3f ;
-  FSOUND_PRESET_UNDERWATER       = 22,	1.8f,	1.00f, -1000,  -4000,  0,   1.49f,  0.10f, 1.0f,   -449, 0.007f, 0.0f,0.0f,0.0f,  1700, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 1.18f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
-
-// Non I3DL2 presets 
-
-  FSOUND_PRESET_DRUGGED          = 23,	1.9f,	0.50f, -1000,  0,      0,   8.39f,  1.39f, 1.0f,  -115,  0.002f, 0.0f,0.0f,0.0f,   985, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
-  FSOUND_PRESET_DIZZY            = 24,	1.8f,	0.60f, -1000,  -400,   0,   17.23f, 0.56f, 1.0f,  -1713, 0.020f, 0.0f,0.0f,0.0f,  -613, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.81f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
-  FSOUND_PRESET_PSYCHOTIC        = 25,	1.0f,	0.50f, -1000,  -151,   0,   7.56f,  0.91f, 1.0f,  -626,  0.020f, 0.0f,0.0f,0.0f,   774, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 4.00f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
-*)
-// [DEFINE_END]
-
-
-(*
-[STRUCTURE] 
-[
-    [DESCRIPTION]
-    Structure defining the properties for a reverb source, related to a FSOUND channel.
-    For more indepth descriptions of the reverb properties under win32, please see the EAX3
-    documentation at http://developer.creative.com/ under the 'downloads' section.
-    If they do not have the EAX3 documentation, then most information can be attained from
-    the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
-    EAX2.
-
-    Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset.
-    Note that integer values that typically range from -10,000 to 1000 are represented in 
-    decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
-    PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).  
-    Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
-    the reverb should product a similar effect on either platform.
-    Linux and FMODCE do not support the reverb api.
-
-    The numerical values listed below are the maximum, minimum and default values for each variable respectively.
-
-    [SEE_ALSO]
-    FSOUND_Reverb_SetChannelProperties
-    FSOUND_Reverb_GetChannelProperties
-    FSOUND_REVERB_CHANNELFLAGS
-]
-*)
-type
-  TFSoundReverbChannelProperties = record   // MIN     MAX    DEFAULT
-    Direct: Integer;                        // -10000  1000   0       direct path level (at low and mid frequencies) (win32/xbox)
-    DirectHF: Integer;                      // -10000  0      0       relative direct path level at high frequencies (win32/xbox)
-    Room: Integer;                          // -10000  1000   0       room effect level (at low and mid frequencies) (win32/xbox)
-    RoomHF: Integer;                        // -10000  0      0       relative room effect level at high frequencies (win32/xbox)
-    Obstruction: Integer;                   // -10000  0      0       main obstruction control (attenuation at high frequencies)  (win32/xbox)
-    ObstructionLFRatio: Single;             // 0.0     1.0    0.0     obstruction low-frequency level re. main control (win32/xbox)
-    Occlusion: Integer;                     // -10000  0      0       main occlusion control (attenuation at high frequencies) (win32/xbox)
-    OcclusionLFRatio: Single;               // 0.0     1.0    0.25    occlusion low-frequency level re. main control (win32/xbox)
-    OcclusionRoomRatio: Single;             // 0.0     10.0   1.5     relative occlusion control for room effect (win32)
-    OcclusionDirectRatio: Single;           // 0.0     10.0   1.0     relative occlusion control for direct path (win32)
-    Exclusion: Integer;                     // -10000  0      0       main exlusion control (attenuation at high frequencies) (win32)
-    ExclusionLFRatio: Single;               // 0.0     1.0    1.0     exclusion low-frequency level re. main control (win32)
-    OutsideVolumeHF: Integer;               // -10000  0      0       outside sound cone level at high frequencies (win32)
-    DopplerFactor: Single;                  // 0.0     10.0   0.0     like DS3D flDopplerFactor but per source (win32)
-    RolloffFactor: Single;                  // 0.0     10.0   0.0     like DS3D flRolloffFactor but per source (win32)
-    RoomRolloffFactor: Single;              // 0.0     10.0   0.0     like DS3D flRolloffFactor but for room effect (win32/xbox)
-    AirAbsorptionFactor: Single;            // 0.0     10.0   1.0     multiplies AirAbsorptionHF member of FSOUND_REVERB_PROPERTIES (win32)
-    Flags: Integer;                         // FSOUND_REVERB_CHANNELFLAGS - modifies the behavior of properties (win32)
-  end;
-// [STRUCT_END]
-
-(*
-[DEFINE_START] 
-[
-    [NAME] 
-    FSOUND_REVERB_CHANNELFLAGS
-    
-    [DESCRIPTION]
-    Values for the Flags member of the FSOUND_REVERB_CHANNELPROPERTIES structure.
-
-    [SEE_ALSO]
-    FSOUND_REVERB_CHANNELPROPERTIES
-]
-*)
-const
-  FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO  = $01;  // Automatic setting of 'Direct'  due to distance from listener
-  FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO      = $02;  // Automatic setting of 'Room'  due to distance from listener
-  FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO    = $04;  // Automatic setting of 'RoomHF' due to distance from listener
-  FSOUND_REVERB_CHANNELFLAGS_DEFAULT       = FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO or 
-                                             FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO or
-                                             FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO;
-// [DEFINE_END]
-
-
-(*
-[ENUM] 
-[
-	[DESCRIPTION]
-    These values are used with FSOUND_FX_Enable to enable DirectX 8 FX for a channel.
-
-	[SEE_ALSO]
-    FSOUND_FX_Enable
-    FSOUND_FX_Disable
-    FSOUND_FX_SetChorus
-    FSOUND_FX_SetCompressor
-    FSOUND_FX_SetDistortion
-    FSOUND_FX_SetEcho
-    FSOUND_FX_SetFlanger
-    FSOUND_FX_SetGargle
-    FSOUND_FX_SetI3DL2Reverb
-    FSOUND_FX_SetParamEQ
-    FSOUND_FX_SetWavesReverb
-]
-*)
-
-type
-  TFSoundFXModes = (
-    FSOUND_FX_CHORUS,
-    FSOUND_FX_COMPRESSOR,
-    FSOUND_FX_DISTORTION,
-    FSOUND_FX_ECHO,
-    FSOUND_FX_FLANGER,
-    FSOUND_FX_GARGLE,
-    FSOUND_FX_I3DL2REVERB,
-    FSOUND_FX_PARAMEQ,
-    FSOUND_FX_WAVES_REVERB,
-    FSOUND_FX_MAX
-  );
-// [DEFINE_END]
-
-
-(*
-[ENUM]
-[
-	[DESCRIPTION]
-    These are speaker types defined for use with the FSOUND_SetSpeakerMode command.
-    Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes.  Other output modes will only 
-    interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
-
-	[SEE_ALSO]
-    FSOUND_SetSpeakerMode
-
-    [REMARKS]
-    Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes.  Other output modes will only 
-    interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
-
-    Using either DolbyDigital or DTS will use whatever 5.1 digital mode is available if destination hardware is unsure.
-]
-*)
-type
-  TFSoundSpeakerModes =
-  (
-    FSOUND_SPEAKERMODE_DOLBYDIGITAL,  // The audio is played through a speaker arrangement of surround speakers with a subwoofer.
-    FSOUND_SPEAKERMODE_HEADPHONES,    // The speakers are headphones.
-    FSOUND_SPEAKERMODE_MONO,          // The speakers are monaural.
-    FSOUND_SPEAKERMODE_QUAD,          // The speakers are quadraphonic.
-    FSOUND_SPEAKERMODE_STEREO,        // The speakers are stereo (default value).
-    FSOUND_SPEAKERMODE_SURROUND,      // The speakers are surround sound.
-    FSOUND_SPEAKERMODE_DTS            // The audio is played through a speaker arrangement of surround speakers with a subwoofer.
-  );
-  FSOUND_SPEAKERMODES = TFSoundSpeakerModes;
-
-
-(*
-[DEFINE_START]
-[
-    [NAME] 
-    FSOUND_INIT_FLAGS
-    
-    [DESCRIPTION]
-    Initialization flags.  Use them with FSOUND_Init in the flags parameter to change various behaviour.
-
-    FSOUND_INIT_ENABLESYSTEMCHANNELFX Is an init mode which enables the FSOUND mixer buffer to be affected by DirectX 8 effects.
-    Note that due to limitations of DirectSound, FSOUND_Init may fail if this is enabled because the buffersize is too small.
-    This can be fixed with FSOUND_SetBufferSize.  Increase the BufferSize until it works.
-    When it is enabled you can use the FSOUND_FX api, and use FSOUND_SYSTEMCHANNEL as the channel id when setting parameters.
-
-    [SEE_ALSO]
-    FSOUND_Init
-]
-*)
-const
-  FSOUND_INIT_USEDEFAULTMIDISYNTH     = $01;  // Causes MIDI playback to force software decoding.
-  FSOUND_INIT_GLOBALFOCUS             = $02;  // For DirectSound output - sound is not muted when window is out of focus.
-  FSOUND_INIT_ENABLESYSTEMCHANNELFX   = $04;  // For DirectSound output - Allows FSOUND_FX api to be used on global software mixer output!
-  FSOUND_INIT_ACCURATEVULEVELS        = $08;  // This latency adjusts FSOUND_GetCurrentLevels, but incurs a small cpu and memory hit.
-  FSOUND_INIT_PS2_DISABLECORE0REVERB  = $10;  // PS2 only - Disable reverb on CORE 0 to regain SRAM.
-  FSOUND_INIT_PS2_DISABLECORE1REVERB  = $20;  // PS2 only - Disable reverb on CORE 1 to regain SRAM.
-  FSOUND_INIT_PS2_SWAPDMACORES        = $40;  // PS2 only - By default FMOD uses DMA CH0 for mixing, CH1 for uploads, this flag swaps them around.
-  FSOUND_INIT_DONTLATENCYADJUST       = $80;  // Callbacks are not latency adjusted, and are called at mix time.  Also information functions are immediate.
-  FSOUND_INIT_GC_INITLIBS             = $100; // Gamecube only - Initializes GC audio libraries.
-  FSOUND_INIT_STREAM_FROM_MAIN_THREAD = $200; // Turns off fmod streamer thread, and makes streaming update from FSOUND_Update called by the user.
-  FSOUND_INIT_PS2_USEVOLUMERAMPING    = $400; // PS2 only   - Turns on volume ramping system to remove hardware clicks.
-  FSOUND_INIT_DSOUND_DEFERRED         = $800; // Win32 only - For DirectSound output.  3D commands are batched together and executed at FSOUND_Update.
-  FSOUND_INIT_DSOUND_HRTF_LIGHT       = $1000; // Win32 only - For DirectSound output.  FSOUND_HW3D buffers use a slightly higher quality algorithm when 3d hardware acceleration is not present.
-  FSOUND_INIT_DSOUND_HRTF_FULL        = $2000; // Win32 only - For DirectSound output.  FSOUND_HW3D buffers use full quality 3d playback when 3d hardware acceleration is not present.
-  FSOUND_INIT_XBOX_REMOVEHEADROOM     = $4000; // XBox only - By default directsound attenuates all sound by 6db to avoid clipping/distortion.  CAUTION.  If you use this flag you are responsible for the final mix to make sure clipping / distortion doesn't happen.
-  FSOUND_INIT_PSP_SILENCEONUNDERRUN   = $8000; // PSP only - If streams skip / stutter when device is powered on, either increase stream buffersize, or use this flag instead to play silence while the UMD is recovering.
-
-// [DEFINE_END]
-
-(*
-[ENUM]
-[
-    [DESCRIPTION]
-    Status values for internet streams. Use FSOUND_Stream_Net_GetStatus to get the current status of an internet stream.
-
-    [SEE_ALSO]
-    FSOUND_Stream_Net_GetStatus
-]
-*)
-type
-  TFSoundStreamNetStatus =
-  (
-    FSOUND_STREAM_NET_NOTCONNECTED,         (* Stream hasn't connected yet *)
-    FSOUND_STREAM_NET_CONNECTING,           (* Stream is connecting to remote host *)
-    FSOUND_STREAM_NET_BUFFERING,            (* Stream is buffering data *)
-    FSOUND_STREAM_NET_READY,                (* Stream is ready to play *)
-    FSOUND_STREAM_NET_ERROR                 (* Stream has suffered a fatal error *)
-  );
-
-
-(*
-[ENUM]
-[
-    [DESCRIPTION]
-    Describes the type of a particular tag field.
-
-    [SEE_ALSO]
-    FSOUND_Stream_GetNumTagFields
-    FSOUND_Stream_GetTagField
-    FSOUND_Stream_FindTagField
-]
-*)
-type
-  TFSoundTagFieldType =
-  (
-    FSOUND_TAGFIELD_VORBISCOMMENT,          (* A vorbis comment *)
-    FSOUND_TAGFIELD_ID3V1,                  (* Part of an ID3v1 tag *)
-    FSOUND_TAGFIELD_ID3V2,                  (* An ID3v2 frame *)
-    FSOUND_TAGFIELD_SHOUTCAST,              (* A SHOUTcast header line *)
-    FSOUND_TAGFIELD_ICECAST,                (* An Icecast header line *)
-    FSOUND_TAGFIELD_ASF                     (* An Advanced Streaming Format header line *)
-  );
-
-
-(*
-[DEFINE_START]
-[
-    [NAME]
-    FSOUND_STATUS_FLAGS
-
-    [DESCRIPTION]
-    These values describe the protocol and format of an internet stream. Use FSOUND_Stream_Net_GetStatus to retrieve this information for an open internet stream.
-
-    [SEE_ALSO]
-    FSOUND_Stream_Net_GetStatus
-]
-*)
-const
-  FSOUND_PROTOCOL_SHOUTCAST = $00000001;
-  FSOUND_PROTOCOL_ICECAST   = $00000002;
-  FSOUND_PROTOCOL_HTTP      = $00000004;
-  FSOUND_FORMAT_MPEG        = $00010000;
-  FSOUND_FORMAT_OGGVORBIS   = $00020000;
-(* [DEFINE_END] *)
-
-(*
-[STRUCTURE] 
-[
-    [DESCRIPTION]
-    Structure defining a CD table of contents. This structure is returned as a tag from FSOUND_Stream_FindTagField when the tag name "CD_TOC" is specified.
-    Note: All tracks on the CD - including data tracks- will be represented in this structure so it's use for anything other than generating disc id information is not recommended.
-    See the cdda example program for info on retrieving and using this structure.
-
-    [SEE_ALSO]
-    FSOUND_Stream_Open
-    FSOUND_Stream_FindTagField
-]
-*)
-type
-  TFSoundTOCTag = record
-    Name: array [0..3] of AnsiChar;             // The string "TOC" (4th character is 0), just in case this structure is accidentally treated as a string.
-    NumTracks: Integer;                     // The number of tracks on the CD.
-    Min: array [0..99] of Integer;          // The start offset of each track in minutes.
-    Sec: array [0..99] of Integer;          // The start offset of each track in seconds.
-    Frame: array [0..99] of Integer;        // The start offset of each track in frames.
-  end;
-// [STRUCT_END]
-
-//----------------------------------------------
-implementation
-//----------------------------------------------
-
-end.

+ 0 - 2291
Source/FMX/Soundx.OpenALImport.pas

@@ -1,2291 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit Soundx.OpenALImport;
-
-(* Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is OpenAL1.0 - Headertranslation to Object Pascal.
- *
- * The Initial Developer of the Original Code is
- * Delphi OpenAL Translation Team.
- * Portions created by the Initial Developer are Copyright (C) 2001-2004
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Tom Nuydens             ([email protected])
- *   Dean Ellis              ([email protected])
- *   Amresh Ramachandran     ([email protected])
- *   Pranav Joshi            ([email protected])
- *   Marten van der Honing   ([email protected])
- *   Benjamin Rosseaux (BeRo)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *)
-
-interface
-
-{$I GLX.Scene.inc}
-
-uses
-  Winapi.Windows,
-  System.SysUtils;
-
-{ $ DEFINE ALUT} //define ALUT to use alut.dll
-
-const
-{$IFDEF Win32}
-  callibname='OpenAL32.dll';
-  calutlibname='Alut.dll';
-{$ENDIF}
-{$IFDEF Win64}
-  callibname='OpenAL64.dll';
-  calutlibname='Alut.dll';
-{$ENDIF}
-{$IFDEF Linux}
-  callibname='libopenal.so';
-  calutlibname='libalut.so';
-{$ENDIF}
-
-
-type
-  // OpenAL boolean type.
-  TALboolean = Boolean;
-  PALboolean = ^TALboolean;
-  //character
-  TALchar = char;
-  PALchar = PAnsiChar;
-  // OpenAL 8bit signed byte.
-  TALbyte = ShortInt;
-  PALbyte = ^TALbyte;
-  // OpenAL 8bit unsigned byte.
-  TALuByte = Char;
-  PALuByte = PAnsiChar;
-  // OpenAL 16bit signed short integer type.
-  TALshort = SmallInt;
-  PALshort = ^TALshort;
-  // OpenAL 16bit unsigned short integer type.
-  TALushort = Word;
-  PALushort = ^TALushort;
-  // OpenAL 32bit unsigned integer type.
-  TALuint = Cardinal;
-  PALuint = ^TALuint;
-  // OpenAL 32bit signed integer type.
-  TALint = Integer;
-  PALint = ^TALint;
-  // OpenAL 32bit floating point type.
-  TALfloat = Single;
-  PALfloat = ^TALfloat;
-  // OpenAL 64bit double point type.
-  TALdouble = Double;
-  PALdouble = ^TALdouble;
-  // OpenAL 32bit type.
-  TALsizei = Cardinal;
-  PALsizei = ^TALsizei;
-  // OpenAL void type
-  TALvoid = Pointer;
-  PALvoid = ^TALvoid;
-  PPALvoid = ^PALvoid;
-  // OpenAL enumerations.
-  TALenum = Integer;
-  PALenum = ^TALenum;
-  // OpenAL bitfields.
-  TALbitfield = Cardinal;
-  PALbitfield = ^TALbitfield;
-  // OpenAL clamped float.
-  TALclampf = TALfloat;
-  PALclampf = ^TALclampf;
-  // Openal clamped double.
-  TALclampd = TALdouble;
-  PALclampd = ^TALclampd;
-  
-  // ALC enumerations.
-  TALCenum = integer;
-  PALCenum = ^TALCenum;
-  // ALC boolean type.
-  TALCboolean = boolean;
-  PALCboolean = ^TALCboolean;
-  // ALC character type
-  TALCchar = char;
-  PALCchar = PAnsiChar;
-  // ALC 8bit signed byte.
-  TALCbyte = ShortInt;
-  PALCbyte = ^TALCbyte;
-  // ALC 8bit unsigned byte.
-  TALCubyte = Char;
-  PALCubyte = PAnsiChar;
-  // ALC 16bit signed short integer type.
-  TALCshort = smallint;
-  PALCshort = ^TALCshort;
-  // ALC 16bit unsigned short integer type.
-  TALCushort = Word;
-  PALCushort = ^TALCushort;
-  // ALC 32bit unsigned integer type.
-  TALCuint = Cardinal;
-  PALCuint = ^TALCuint;
-  // ALC 32bit signed integer type.
-  TALCint = integer;
-  PALCint = ^TALCint;
-  // ALC 32bit floating point type.
-  TALCfloat = single;
-  PALCfloat = ^TALCfloat;
-  // ALC 64bit double point type.
-  TALCdouble = double;
-  PALCdouble = ^TALCdouble;
-  // ALC 32bit type.
-  TALCsizei = integer;
-  PALCsizei = ^TALCsizei;
-  // ALC void type
-  TALCvoid = Pointer;
-  PALCvoid = ^TALCvoid;
-  // ALC device
-  TALCdevice = TALCvoid;
-  PALCdevice = ^TALCdevice;
-  // ALC context
-  TALCcontext = TALCvoid;
-  PALCcontext = ^TALCcontext;
-
-  //EAX extension
-  DSPROPERTY_EAX_LISTENERPROPERTY = LongWORD;
-  DSPROPERTY_EAX_BUFFERPROPERTY = LongWORD;
-
-  // Use this structure for DSPROPERTY_EAXLISTENER_ALLPARAMETERS
-  // - all levels are hundredths of decibels
-  // - all times are in seconds
-  // - the reference for high frequency controls is 5 kHz
-  //
-  // NOTE: This structure may change in future EAX versions.
-  //       It is recommended to initialize fields by name:
-  //              myListener.lRoom = -1000;
-  //              myListener.lRoomHF = -100;
-  //              ...
-  //              myListener.dwFlags = myFlags /* see EAXLISTENERFLAGS below */ ;
-  //       instead of:
-  //              myListener = { -1000, -100, ... , 0x00000009 };
-  //       If you want to save and load presets in binary form, you
-  //       should define your own structure to insure future compatibility.
-  //
-  TEaxListenerProperties = packed record
-    lRoom: integer; // room effect level at low frequencies
-    lRoomHF: integer;
-    // room effect high-frequency level re. low frequency levelimplementation
-    flRoomRolloffFactor: double; // like DS3D flRolloffFactor but for room effect
-    flDecayTime: double; // reverberation decay time at low frequenciesend.
-    flDecayHFRatio: double; // high-frequency to low-frequency decay time ratio
-    lReflections: integer; // early reflections level relative to room effect
-    flReflectionsDelay: double; // initial reflection delay time
-    lReverb: integer; // late reverberation level relative to room effect
-    flReverbDelay: double;
-    // late reverberation delay time relative to initial reflection
-    dwEnvironment: cardinal; // sets all listener properties
-    flEnvironmentSize: double; // environment size in meters
-    flEnvironmentDiffusion: double; // environment diffusion
-    flAirAbsorptionHF: double; // change in level per meter at 5 kHz
-    dwFlags: cardinal; // modifies the behavior of properties
-  end;
-  PEaxListenerProperties = ^TEaxListenerProperties;
-
-  // Use this structure for DSPROPERTY_EAXBUFFER_ALLPARAMETERS
-  // - all levels are hundredths of decibels
-  //
-  // NOTE: This structure may change in future EAX versions.
-  //       It is recommended to initialize fields by name:
-  //              myBuffer.lDirect = 0;
-  //              myBuffer.lDirectHF = -200;
-  //              ...
-  //              myBuffer.dwFlags = myFlags /* see EAXBUFFERFLAGS below */ ;
-  //       instead of:
-  //              myBuffer = { 0, -200, ... , 0x00000003 };
-  //
-  TEaxBufferProperties = packed record
-    lDirect: integer; // direct path level
-    lDirectHF: integer; // direct path level at high frequencies
-    lRoom: integer; // room effect level
-    lRoomHF: integer; // room effect level at high frequencies
-    flRoomRolloffFactor: double; // like DS3D flRolloffFactor but for room effect
-    lObstruction: integer;
-    // main obstruction control (attenuation at high frequencies)
-    flObstructionLFRatio: double;
-    // obstruction low-frequency level re. main control
-    lOcclusion: integer;
-    // main occlusion control (attenuation at high frequencies)
-    flOcclusionLFRatio: double; // occlusion low-frequency level re. main control
-    flOcclusionRoomRatio: double; // occlusion room effect level re. main control
-    lOutsideVolumeHF: integer; // outside sound cone level at high frequencies
-    flAirAbsorptionFactor: double;
-    // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
-    dwFlags: Cardinal; // modifies the behavior of properties
-  end;
-  PEaxBufferProperties = ^TEaxBufferProperties;
-
-  //END EAX Extension
-
-const
-  //bad value
-  AL_INVALID                                = -1;
-
-  AL_NONE                                   = 0;
-
-  //Boolean False.
-  AL_FALSE                                  = 0;
-
-  //Boolean True.
-  AL_TRUE                                   = 1;
-
-  //Indicate the type of AL_SOURCE.
-  //Sources can be spatialized
-  //AL_SOURCE_TYPE                            = $200;
-
-  //Indicate source has absolute coordinates.
-  AL_SOURCE_ABSOLUTE                       = $201;
-
-  //Indicate Source has relative coordinates.
-  AL_SOURCE_RELATIVE                       = $202;
-
-  //Directional source, inner cone angle, in degrees.
-  //Range:    [0-360]
-  //Default:  360
-  AL_CONE_INNER_ANGLE                      = $1001;
-
-  //Directional source, outer cone angle, in degrees.
-  //Range:    [0-360]
-  //Default:  360
-  AL_CONE_OUTER_ANGLE                       = $1002;
-
-  //Specify the pitch to be applied, either at source,
-  //or on mixer results, at listener.
-  //Range:   [0.5-2.0]
-  //Default: 1.0
-  AL_PITCH                                  =$1003;
-
-  //Specify the current location in three dimensional space.
-  //OpenAL, like OpenGL, uses a right handed coordinate system,
-  //where in a frontal default view X (thumb) points right,
-  //Y points up (index finger), and Z points towards the
-  //viewer/camera (middle finger).
-  //To switch from a left handed coordinate system, flip the
-  //sign on the Z coordinate.
-  //Listener position is always in the world coordinate system.
-  AL_POSITION                               =$1004;
-
-  //Specify the current direction.
-  AL_DIRECTION                              =$1005;
-
-  // Specify the current velocity in three dimensional space.
-  AL_VELOCITY                               =$1006;
-
-  //Indicate whether source is looping.
-  //Type: ALboolean?
-  //Range:   [AL_TRUE, AL_FALSE]
-  //Default: FALSE.
-  AL_LOOPING                                =$1007;
-
-  //Indicate the buffer to provide sound samples.
-  //Type: ALuint.
-  //Range: any valid Buffer id.
-  AL_BUFFER                                 =$1009;
-
-  //Indicate the gain (volume amplification) applied.
-  //Type:   ALfloat.
-  //Range:  ]0.0-  ]
-  //A value of 1.0 means un-attenuated/unchanged.
-  //Each division by 2 equals an attenuation of -6dB.
-  //Each multiplicaton with 2 equals an amplification of +6dB.
-  //A value of 0.0 is meaningless with respect to a logarithmic
-  //scale; it is interpreted as zero volume - the channel
-  //is effectively disabled.
-  AL_GAIN                                   =$100A;
-
-  //Indicate minimum source attenuation
-  //Type: ALfloat
-  //Range:  [0.0 - 1.0]
-  //Logarthmic
-  AL_MIN_GAIN                               =$100D;
-
-  //Indicate maximum source attenuation
-  //Type: ALfloat
-  //Range:  [0.0 - 1.0]
-  //Logarthmic
-  AL_MAX_GAIN                               =$100E;
-
-  //Indicate listener orientation.
-  //at/up
-  AL_ORIENTATION                            =$100F;
-
-  //Specify the channel mask. (Creative)
-  //Type:	 ALuint
-  //Range:	 [0 - 255]
-  AL_CHANNEL_MASK                           =$3000;
-
-  //Source state information.
-  AL_SOURCE_STATE                           =$1010;
-  AL_INITIAL                                =$1011;
-  AL_PLAYING                                =$1012;
-  AL_PAUSED                                 =$1013;
-  AL_STOPPED                                =$1014;
-
-  //Buffer Queue params
-  AL_BUFFERS_QUEUED                         =$1015;
-  AL_BUFFERS_PROCESSED                      =$1016;
-
-  //Source buffer position information
-  AL_SEC_OFFSET                             = $1024;
-  AL_SAMPLE_OFFSET                          = $1025;
-  AL_BYTE_OFFSET                            = $1026;
-
-  //Source type (Static, Streaming or undetermined)
-  //Source is Static if a Buffer has been attached using AL_BUFFER
-  //Source is Streaming if one or more Buffers have been attached using alSourceQueueBuffers
-  //Source is undetermined when it has the NULL buffer attached
-  AL_SOURCE_TYPE                            = $1027;
-  AL_STATIC                                 = $1028;
-  AL_STREAMING                              = $1029;
-  AL_UNDETERMINED                           = $1030;
-
-  //Sound samples: format specifier.
-  AL_FORMAT_MONO8                           =$1100;
-  AL_FORMAT_MONO16                          =$1101;
-  AL_FORMAT_STEREO8                         =$1102;
-  AL_FORMAT_STEREO16                        =$1103;
-
-  //source specific reference distance
-  //Type: ALfloat
-  //Range:  0.0 - +inf
-  //At 0.0, no distance attenuation occurs.  Default is
-  //1.0.
-  AL_REFERENCE_DISTANCE                     =$1020;
-
-  //source specific rolloff factor
-  //Type: ALfloat
-  //Range:  0.0 - +inf
-  AL_ROLLOFF_FACTOR                         =$1021;
-
-  //Directional source, outer cone gain.
-  //Default:  0.0
-  //Range:    [0.0 - 1.0]
-  //Logarithmic
-  AL_CONE_OUTER_GAIN                        =$1022;
-
-  //Indicate distance above which sources are not
-  //attenuated using the inverse clamped distance model.
-  //Default: +inf
-  //Type: ALfloat
-  //Range:  0.0 - +inf
-  AL_MAX_DISTANCE                           =$1023;
-
-  //Sound samples: frequency, in units of Hertz [Hz].
-  //This is the number of samples per second. Half of the
-  //sample frequency marks the maximum significant
-  //frequency component.
-  AL_FREQUENCY                              =$2001;
-  AL_BITS                                   =$2002;
-  AL_CHANNELS                               =$2003;
-  AL_SIZE                                   =$2004;
-  //AL_DATA                                   =$2005;
-
-  //Buffer state.
-  //Not supported for public use (yet).
-  AL_UNUSED                                 =$2010;
-  AL_PENDING                                =$2011;
-  AL_PROCESSED                              =$2012;
-
-  //Errors: No Error.
-  AL_NO_ERROR                               =AL_FALSE;
-
-  //Invalid Name paramater passed to AL call.
-  AL_INVALID_NAME                           =$A001;
-
-  //Invalid parameter passed to AL call.
-  AL_ILLEGAL_ENUM                           =$A002;
-  AL_INVALID_ENUM                           =$A002;
-
-  //Invalid enum parameter value.
-  AL_INVALID_VALUE                          =$A003;
-
-  //Illegal call.
-  AL_ILLEGAL_COMMAND                        =$A004;
-  AL_INVALID_OPERATION                      =$A004;
-
-  //No mojo.
-  AL_OUT_OF_MEMORY                          =$A005;
-
-  // Context strings: Vendor Name.
-  AL_VENDOR                                 =$B001;
-  AL_VERSION                                =$B002;
-  AL_RENDERER                               =$B003;
-  AL_EXTENSIONS                             =$B004;
-
-  // Global tweakage.
-
-  // Doppler scale.  Default 1.0
-  AL_DOPPLER_FACTOR                         =$C000;
-
-  // Tweaks speed of propagation.
-  AL_DOPPLER_VELOCITY                       =$C001;
-
-  //Speed of Sound in units per second
-  AL_SPEED_OF_SOUND                         = $C003;
-
-  // Distance models
-  //
-  // used in conjunction with DistanceModel
-  //
-  // implicit: NONE, which disances distance attenuation.
-  AL_DISTANCE_MODEL                         =$D000;
-  AL_INVERSE_DISTANCE                       =$D001;
-  AL_INVERSE_DISTANCE_CLAMPED               =$D002;
-  AL_LINEAR_DISTANCE                        =$D003;
-  AL_LINEAR_DISTANCE_CLAMPED                =$D004;
-  AL_EXPONENT_DISTANCE                      =$D005;
-  AL_EXPONENT_DISTANCE_CLAMPED              =$D006;
-
-  //bad value
-  ALC_INVALID                              =0;
-
-  //Boolean False.
-  ALC_FALSE                                =0;
-
-  //Boolean True.
-  ALC_TRUE                                 =1;
-
-  //followed by <int> Hz
-  ALC_FREQUENCY                            =$1007;
-
-  //followed by <int> Hz
-  ALC_REFRESH                              =$1008;
-
-  //followed by AL_TRUE, AL_FALSE
-  ALC_SYNC                                 =$1009;
-
-  //followed by <int> Num of requested Mono (3D) Sources
-  ALC_MONO_SOURCES                         =$1010;
-
-  //followed by <int> Num of requested Stereo Sources
-  ALC_STEREO_SOURCES                       =$1011;
-
-  //errors
-
-  //No error
-  ALC_NO_ERROR                             =ALC_FALSE;
-
-  //No device
-  ALC_INVALID_DEVICE                       =$A001;
-
-  //invalid context ID
-  ALC_INVALID_CONTEXT                      =$A002;
-
-  //bad enum
-  ALC_INVALID_ENUM                         =$A003;
-
-  //bad value
-  ALC_INVALID_VALUE                        =$A004;
-
-  //Out of memory.
-  ALC_OUT_OF_MEMORY                        =$A005;
-
-  //The Specifier string for default device
-  ALC_DEFAULT_DEVICE_SPECIFIER             =$1004;
-  ALC_DEVICE_SPECIFIER                     =$1005;
-  ALC_EXTENSIONS                           =$1006;
-
-  ALC_MAJOR_VERSION                        =$1000;
-  ALC_MINOR_VERSION                        =$1001;
-
-  ALC_ATTRIBUTES_SIZE                      =$1002;
-  ALC_ALL_ATTRIBUTES                       =$1003;
-
-  //ALC_ENUMERATE_ALL_EXT enums
-  ALC_DEFAULT_ALL_DEVICES_SPECIFIER        =$1012;
-  ALC_ALL_DEVICES_SPECIFIER                =$1013;
-
-  //Capture extension
-  ALC_CAPTURE_DEVICE_SPECIFIER             =$310;
-  ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER     =$311;
-  ALC_CAPTURE_SAMPLES                      =$312;
-
-  //EFX Extension
-  ALC_EXT_EFX_NAME                         ='ALC_EXT_EFX';
-
-  //Context definitions to be used with alcCreateContext.
-  //These values must be unique and not conflict with other
-  //al context values.
-  ALC_EFX_MAJOR_VERSION                    =$20001;
-  ALC_EFX_MINOR_VERSION                    =$20002;
-  ALC_MAX_AUXILIARY_SENDS                  =$20003;
-
-  //Listener definitions to be used with alListener functions.
-  //These values must be unique and not conflict with other
-  //al listener values.
-  AL_METERS_PER_UNIT                       =$20004;
-
-  //Source definitions to be used with alSource functions.
-  //These values must be unique and not conflict with other
-  //al source values.
-  AL_DIRECT_FILTER                         =$20005;
-  AL_AUXILIARY_SEND_FILTER                 =$20006;
-  AL_AIR_ABSORPTION_FACTOR                 =$20007;
-  AL_ROOM_ROLLOFF_FACTOR                   =$20008;
-  AL_CONE_OUTER_GAINHF                     =$20009;
-  AL_DIRECT_FILTER_GAINHF_AUTO             =$2000A;
-  AL_AUXILIARY_SEND_FILTER_GAIN_AUTO       =$2000B;
-  AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO     =$2000C;
-
-  //Effect object definitions to be used with alEffect functions.
-
-  //Effect parameter value definitions, ranges, and defaults
-  //appear farther down in this file.
-
-  //Reverb Parameters
-  AL_REVERB_DENSITY                        =$0001;
-  AL_REVERB_DIFFUSION                      =$0002;
-  AL_REVERB_GAIN                           =$0003;
-  AL_REVERB_GAINHF                         =$0004;
-  AL_REVERB_DECAY_TIME                     =$0005;
-  AL_REVERB_DECAY_HFRATIO                  =$0006;
-  AL_REVERB_REFLECTIONS_GAIN               =$0007;
-  AL_REVERB_REFLECTIONS_DELAY              =$0008;
-  AL_REVERB_LATE_REVERB_GAIN               =$0009;
-  AL_REVERB_LATE_REVERB_DELAY              =$000A;
-  AL_REVERB_AIR_ABSORPTION_GAINHF          =$000B;
-  AL_REVERB_ROOM_ROLLOFF_FACTOR            =$000C;
-  AL_REVERB_DECAY_HFLIMIT                  =$000D;
-
-  //Chorus Parameters
-  AL_CHORUS_WAVEFORM                       =$0001;
-  AL_CHORUS_PHASE                          =$0002;
-  AL_CHORUS_RATE                           =$0003;
-  AL_CHORUS_DEPTH                          =$0004;
-  AL_CHORUS_FEEDBACK                       =$0005;
-  AL_CHORUS_DELAY                          =$0006;
-
-  //Distortion Parameters
-  AL_DISTORTION_EDGE                       =$0001;
-  AL_DISTORTION_GAIN                       =$0002;
-  AL_DISTORTION_LOWPASS_CUTOFF             =$0003;
-  AL_DISTORTION_EQCENTER                   =$0004;
-  AL_DISTORTION_EQBANDWIDTH                =$0005;
-
-  //Echo Parameters
-  AL_ECHO_DELAY                            =$0001;
-  AL_ECHO_LRDELAY                          =$0002;
-  AL_ECHO_DAMPING                          =$0003;
-  AL_ECHO_FEEDBACK                         =$0004;
-  AL_ECHO_SPREAD                           =$0005;
-
-  //Flanger Parameters
-  AL_FLANGER_WAVEFORM                      =$0001;
-  AL_FLANGER_PHASE                         =$0002;
-  AL_FLANGER_RATE                          =$0003;
-  AL_FLANGER_DEPTH                         =$0004;
-  AL_FLANGER_FEEDBACK                      =$0005;
-  AL_FLANGER_DELAY                         =$0006;
-
-  //Frequencyshifter Parameters
-  AL_FREQUENCY_SHIFTER_FREQUENCY           =$0001;
-  AL_FREQUENCY_SHIFTER_LEFT_DIRECTION      =$0002;
-  AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION     =$0003;
-
-  //Vocalmorpher Parameters
-  AL_VOCAL_MORPHER_PHONEMEA                =$0001;
-  AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING  =$0002;
-  AL_VOCAL_MORPHER_PHONEMEB                =$0003;
-  AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING  =$0004;
-  AL_VOCAL_MORPHER_WAVEFORM                =$0005;
-  AL_VOCAL_MORPHER_RATE                    =$0006;
-
-  //Pitchshifter Parameters
-  AL_PITCH_SHIFTER_COARSE_TUNE             =$0001;
-  AL_PITCH_SHIFTER_FINE_TUNE               =$0002;
-
-  //Ringmodulator Parameters
-  AL_RING_MODULATOR_FREQUENCY              =$0001;
-  AL_RING_MODULATOR_HIGHPASS_CUTOFF        =$0002;
-  AL_RING_MODULATOR_WAVEFORM               =$0003;
-
-  //Autowah Parameters
-  AL_AUTOWAH_ATTACK_TIME                   =$0001;
-  AL_AUTOWAH_RELEASE_TIME                  =$0002;
-  AL_AUTOWAH_RESONANCE                     =$0003;
-  AL_AUTOWAH_PEAK_GAIN                     =$0004;
-
-  //Compressor Parameters
-  AL_COMPRESSOR_ONOFF                      =$0001;
-
-  //Equalizer Parameters
-  AL_EQUALIZER_LOW_GAIN                    =$0001;
-  AL_EQUALIZER_LOW_CUTOFF                  =$0002;
-  AL_EQUALIZER_MID1_GAIN                   =$0003;
-  AL_EQUALIZER_MID1_CENTER                 =$0004;
-  AL_EQUALIZER_MID1_WIDTH                  =$0005;
-  AL_EQUALIZER_MID2_GAIN                   =$0006;
-  AL_EQUALIZER_MID2_CENTER                 =$0007;
-  AL_EQUALIZER_MID2_WIDTH                  =$0008;
-  AL_EQUALIZER_HIGH_GAIN                   =$0009;
-  AL_EQUALIZER_HIGH_CUTOFF                 =$000A;
-
-  //Effect type
-  AL_EFFECT_FIRST_PARAMETER                =$0000;
-  AL_EFFECT_LAST_PARAMETER                 =$8000;
-  AL_EFFECT_TYPE                           =$8001;
-
-  //Effect type definitions to be used with AL_EFFECT_TYPE.
-  AL_EFFECT_NULL                           =$0000;  // Can also be used as an Effect Object ID
-  AL_EFFECT_REVERB                         =$0001;
-  AL_EFFECT_CHORUS                         =$0002;
-  AL_EFFECT_DISTORTION                     =$0003;
-  AL_EFFECT_ECHO                           =$0004;
-  AL_EFFECT_FLANGER                        =$0005;
-  AL_EFFECT_FREQUENCY_SHIFTER              =$0006;
-  AL_EFFECT_VOCAL_MORPHER                  =$0007;
-  AL_EFFECT_PITCH_SHIFTER                  =$0008;
-  AL_EFFECT_RING_MODULATOR                 =$0009;
-  AL_EFFECT_AUTOWAH                        =$000A;
-  AL_EFFECT_COMPRESSOR                     =$000B;
-  AL_EFFECT_EQUALIZER                      =$000C;
-
-  //Auxiliary Slot object definitions to be used with alAuxiliaryEffectSlot functions.
-  AL_EFFECTSLOT_EFFECT                     =$0001;
-  AL_EFFECTSLOT_GAIN                       =$0002;
-  AL_EFFECTSLOT_AUXILIARY_SEND_AUTO        =$0003;
-
-  //Value to be used as an Auxiliary Slot ID to disable a source send..
-  AL_EFFECTSLOT_NULL                       =$0000;
-
-  //Filter object definitions to be used with alFilter functions.
-
-  //Lowpass parameters.
-  AL_LOWPASS_GAIN                          =$0001;
-  AL_LOWPASS_GAINHF                        =$0002;
-
-  // Highpass Parameters
-  AL_HIGHPASS_GAIN                         =$0001;
-  AL_HIGHPASS_GAINLF                       =$0002;
-
-  // Bandpass Parameters
-  AL_BANDPASS_GAIN                         =$0001;
-  AL_BANDPASS_GAINLF                       =$0002;
-  AL_BANDPASS_GAINHF                       =$0003;
-
-  // Filter type
-  AL_FILTER_FIRST_PARAMETER                =$0000;
-  AL_FILTER_LAST_PARAMETER                 =$8000;
-  AL_FILTER_TYPE                           =$8001;
-
-  // Filter type definitions to be used with AL_FILTER_TYPE.
-  AL_FILTER_NULL                           =$0000;  // Can also be used as a Filter Object ID
-  AL_FILTER_LOWPASS                        =$0001;
-  AL_FILTER_HIGHPASS                       =$0002;
-  AL_FILTER_BANDPASS                       =$0003;
-
-
-  //Filter ranges and defaults.
-
-  //Lowpass filter
-  LOWPASS_MIN_GAIN                                   =0.0;
-  LOWPASS_MAX_GAIN                                   =1.0;
-  LOWPASS_DEFAULT_GAIN                               =1.0;
-
-  LOWPASS_MIN_GAINHF                                 =0.0;
-  LOWPASS_MAX_GAINHF                                 =1.0;
-  LOWPASS_DEFAULT_GAINHF                             =1.0;
-
-  //Highpass filter
-  HIGHPASS_MIN_GAIN                                  =0.0;
-  HIGHPASS_MAX_GAIN                                  =1.0;
-  HIGHPASS_DEFAULT_GAIN                              =1.0;
-
-  HIGHPASS_MIN_GAINLF                                =0.0;
-  HIGHPASS_MAX_GAINLF                                =1.0;
-  HIGHPASS_DEFAULT_GAINLF                            =1.0;
-
-  //Bandpass filter
-  BANDPASS_MIN_GAIN                                  =0.0;
-  BANDPASS_MAX_GAIN                                  =1.0;
-  BANDPASS_DEFAULT_GAIN                              =1.0;
-
-  BANDPASS_MIN_GAINHF                                =0.0;
-  BANDPASS_MAX_GAINHF                                =1.0;
-  BANDPASS_DEFAULT_GAINHF                            =1.0;
-
-  BANDPASS_MIN_GAINLF                                =0.0;
-  BANDPASS_MAX_GAINLF                                =1.0;
-  BANDPASS_DEFAULT_GAINLF                            =1.0;
-
-  //Effect parameter structures, value definitions, ranges and defaults.
-
-  //AL reverb effect parameter ranges and defaults
-  AL_REVERB_MIN_DENSITY                              =0.0;
-  AL_REVERB_MAX_DENSITY                              =1.0;
-  AL_REVERB_DEFAULT_DENSITY                          =1.0;
-
-  AL_REVERB_MIN_DIFFUSION                            =0.0;
-  AL_REVERB_MAX_DIFFUSION                            =1.0;
-  AL_REVERB_DEFAULT_DIFFUSION                        =1.0;
-
-  AL_REVERB_MIN_GAIN                                 =0.0;
-  AL_REVERB_MAX_GAIN                                 =1.0;
-  AL_REVERB_DEFAULT_GAIN                             =0.32;
-
-  AL_REVERB_MIN_GAINHF                               =0.0;
-  AL_REVERB_MAX_GAINHF                               =1.0;
-  AL_REVERB_DEFAULT_GAINHF                           =0.89;
-
-  AL_REVERB_MIN_DECAY_TIME                           =0.1;
-  AL_REVERB_MAX_DECAY_TIME                           =20.0;
-  AL_REVERB_DEFAULT_DECAY_TIME                       =1.49;
-
-  AL_REVERB_MIN_DECAY_HFRATIO                        =0.1;
-  AL_REVERB_MAX_DECAY_HFRATIO                        =2.0;
-  AL_REVERB_DEFAULT_DECAY_HFRATIO                    =0.83;
-
-  AL_REVERB_MIN_REFLECTIONS_GAIN                     =0.0;
-  AL_REVERB_MAX_REFLECTIONS_GAIN                     =3.16;
-  AL_REVERB_DEFAULT_REFLECTIONS_GAIN                 =0.05;
-
-  AL_REVERB_MIN_REFLECTIONS_DELAY                    =0.0;
-  AL_REVERB_MAX_REFLECTIONS_DELAY                    =0.3;
-  AL_REVERB_DEFAULT_REFLECTIONS_DELAY                =0.007;
-
-  AL_REVERB_MIN_LATE_REVERB_GAIN                     =0.0;
-  AL_REVERB_MAX_LATE_REVERB_GAIN                     =10.0;
-  AL_REVERB_DEFAULT_LATE_REVERB_GAIN                 =1.26;
-
-  AL_REVERB_MIN_LATE_REVERB_DELAY                    =0.0;
-  AL_REVERB_MAX_LATE_REVERB_DELAY                    =0.1;
-  AL_REVERB_DEFAULT_LATE_REVERB_DELAY                =0.011;
-
-  AL_REVERB_MIN_AIR_ABSORPTION_GAINHF                =0.892;
-  AL_REVERB_MAX_AIR_ABSORPTION_GAINHF                =1.0;
-  AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF            =0.994;
-
-  AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR                  =0.0;
-  AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR                  =10.0;
-  AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR              =0.0;
-
-  AL_REVERB_MIN_DECAY_HFLIMIT                        =AL_FALSE;
-  AL_REVERB_MAX_DECAY_HFLIMIT                        =AL_TRUE;
-  AL_REVERB_DEFAULT_DECAY_HFLIMIT                    =AL_TRUE;
-
-  //AL chorus effect parameter ranges and defaults
-  AL_CHORUS_MIN_WAVEFORM                             =0;
-  AL_CHORUS_MAX_WAVEFORM                             =1;
-  AL_CHORUS_DEFAULT_WAVEFORM                         =1;
-
-  AL_CHORUS_WAVEFORM_SINUSOID                        =0;
-  AL_CHORUS_WAVEFORM_TRIANGLE                        =1;
-
-  AL_CHORUS_MIN_PHASE                                =-180;
-  AL_CHORUS_MAX_PHASE                                =180;
-  AL_CHORUS_DEFAULT_PHASE                            =90;
-
-  AL_CHORUS_MIN_RATE                                 =0.0;
-  AL_CHORUS_MAX_RATE                                 =10.0;
-  AL_CHORUS_DEFAULT_RATE                             =1.1;
-
-  AL_CHORUS_MIN_DEPTH                                =0.0;
-  AL_CHORUS_MAX_DEPTH                                =1.0;
-  AL_CHORUS_DEFAULT_DEPTH                            =0.1;
-
-  AL_CHORUS_MIN_FEEDBACK                             =-1.0;
-  AL_CHORUS_MAX_FEEDBACK                             =1.0;
-  AL_CHORUS_DEFAULT_FEEDBACK                         =0.25;
-
-  AL_CHORUS_MIN_DELAY                                =0.0;
-  AL_CHORUS_MAX_DELAY                                =0.016;
-  AL_CHORUS_DEFAULT_DELAY                            =0.016;
-
-  //AL distortion effect parameter ranges and defaults
-  AL_DISTORTION_MIN_EDGE                             =0.0;
-  AL_DISTORTION_MAX_EDGE                             =1.0;
-  AL_DISTORTION_DEFAULT_EDGE                         =0.2;
-
-  AL_DISTORTION_MIN_GAIN                             =0.01;
-  AL_DISTORTION_MAX_GAIN                             =1.0;
-  AL_DISTORTION_DEFAULT_GAIN                         =0.05;
-
-  AL_DISTORTION_MIN_LOWPASS_CUTOFF                   =80.0;
-  AL_DISTORTION_MAX_LOWPASS_CUTOFF                   =24000.0;
-  AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF               =8000.0;
-
-  AL_DISTORTION_MIN_EQCENTER                         =80.0;
-  AL_DISTORTION_MAX_EQCENTER                         =24000.0;
-  AL_DISTORTION_DEFAULT_EQCENTER                     =3600.0;
-
-  AL_DISTORTION_MIN_EQBANDWIDTH                      =80.0;
-  AL_DISTORTION_MAX_EQBANDWIDTH                      =24000.0;
-  AL_DISTORTION_DEFAULT_EQBANDWIDTH                  =3600.0;
-
-  //AL echo effect parameter ranges and defaults
-  AL_ECHO_MIN_DELAY                                  =0.0;
-  AL_ECHO_MAX_DELAY                                  =0.207;
-  AL_ECHO_DEFAULT_DELAY                              =0.1;
-
-  AL_ECHO_MIN_LRDELAY                                =0.0;
-  AL_ECHO_MAX_LRDELAY                                =0.404;
-  AL_ECHO_DEFAULT_LRDELAY                            =0.1;
-
-  AL_ECHO_MIN_DAMPING                                =0.0;
-  AL_ECHO_MAX_DAMPING                                =0.99;
-  AL_ECHO_DEFAULT_DAMPING                            =0.5;
-
-  AL_ECHO_MIN_FEEDBACK                               =0.0;
-  AL_ECHO_MAX_FEEDBACK                               =1.0;
-  AL_ECHO_DEFAULT_FEEDBACK                           =0.5;
-
-  AL_ECHO_MIN_SPREAD                                 =-1.0;
-  AL_ECHO_MAX_SPREAD                                 =1.0;
-  AL_ECHO_DEFAULT_SPREAD                             =-1.0;
-
-  //AL flanger effect parameter ranges and defaults
-  AL_FLANGER_MIN_WAVEFORM                            =0;
-  AL_FLANGER_MAX_WAVEFORM                            =1;
-  AL_FLANGER_DEFAULT_WAVEFORM                        =1;
-
-  AL_FLANGER_WAVEFORM_SINUSOID                       =0;
-  AL_FLANGER_WAVEFORM_TRIANGLE                       =1;
-
-  AL_FLANGER_MIN_PHASE                               =-180;
-  AL_FLANGER_MAX_PHASE                               =180;
-  AL_FLANGER_DEFAULT_PHASE                           =0;
-
-  AL_FLANGER_MIN_RATE                                =0.0;
-  AL_FLANGER_MAX_RATE                                =10.0;
-  AL_FLANGER_DEFAULT_RATE                            =0.27;
-
-  AL_FLANGER_MIN_DEPTH                               =0.0;
-  AL_FLANGER_MAX_DEPTH                               =1.0;
-  AL_FLANGER_DEFAULT_DEPTH                           =1.0;
-
-  AL_FLANGER_MIN_FEEDBACK                            =-1.0;
-  AL_FLANGER_MAX_FEEDBACK                            =1.0;
-  AL_FLANGER_DEFAULT_FEEDBACK                        =-0.5;
-
-  AL_FLANGER_MIN_DELAY                               =0.0;
-  AL_FLANGER_MAX_DELAY                               =0.004;
-  AL_FLANGER_DEFAULT_DELAY                           =0.002;
-
-  //AL frequency shifter effect parameter ranges and defaults
-  AL_FREQUENCY_SHIFTER_MIN_FREQUENCY                 =0.0;
-  AL_FREQUENCY_SHIFTER_MAX_FREQUENCY                 =24000.0;
-  AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY             =0.0;
-
-  AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION            =0;
-  AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION            =2;
-  AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION        =0;
-
-  AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION           =0;
-  AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION           =2;
-  AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION       =0;
-
-  AL_FREQUENCY_SHIFTER_DIRECTION_DOWN                =0;
-  AL_FREQUENCY_SHIFTER_DIRECTION_UP                  =1;
-  AL_FREQUENCY_SHIFTER_DIRECTION_OFF                 =2;
-
-  //AL vocal morpher effect parameter ranges and defaults
-  AL_VOCAL_MORPHER_MIN_PHONEMEA                      =0;
-  AL_VOCAL_MORPHER_MAX_PHONEMEA                      =29;
-  AL_VOCAL_MORPHER_DEFAULT_PHONEMEA                  =0;
-
-  AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING	       =-24;
-  AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING	       =24;
-  AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING    =0;
-
-  AL_VOCAL_MORPHER_MIN_PHONEMEB                      =0;
-  AL_VOCAL_MORPHER_MAX_PHONEMEB                      =29;
-  AL_VOCAL_MORPHER_DEFAULT_PHONEMEB                  =10;
-
-  AL_VOCAL_MORPHER_PHONEME_A                         =0;
-  AL_VOCAL_MORPHER_PHONEME_E                         =1;
-  AL_VOCAL_MORPHER_PHONEME_I                         =2;
-  AL_VOCAL_MORPHER_PHONEME_O                         =3;
-  AL_VOCAL_MORPHER_PHONEME_U                         =4;
-  AL_VOCAL_MORPHER_PHONEME_AA                        =5;
-  AL_VOCAL_MORPHER_PHONEME_AE                        =6;
-  AL_VOCAL_MORPHER_PHONEME_AH                        =7;
-  AL_VOCAL_MORPHER_PHONEME_AO                        =8;
-  AL_VOCAL_MORPHER_PHONEME_EH                        =9;
-  AL_VOCAL_MORPHER_PHONEME_ER                        =10;
-  AL_VOCAL_MORPHER_PHONEME_IH                        =11;
-  AL_VOCAL_MORPHER_PHONEME_IY                        =12;
-  AL_VOCAL_MORPHER_PHONEME_UH                        =13;
-  AL_VOCAL_MORPHER_PHONEME_UW                        =14;
-  AL_VOCAL_MORPHER_PHONEME_B                         =15;
-  AL_VOCAL_MORPHER_PHONEME_D                         =16;
-  AL_VOCAL_MORPHER_PHONEME_F                         =17;
-  AL_VOCAL_MORPHER_PHONEME_G                         =18;
-  AL_VOCAL_MORPHER_PHONEME_J                         =19;
-  AL_VOCAL_MORPHER_PHONEME_K                         =20;
-  AL_VOCAL_MORPHER_PHONEME_L                         =21;
-  AL_VOCAL_MORPHER_PHONEME_M                         =22;
-  AL_VOCAL_MORPHER_PHONEME_N                         =23;
-  AL_VOCAL_MORPHER_PHONEME_P                         =24;
-  AL_VOCAL_MORPHER_PHONEME_R                         =25;
-  AL_VOCAL_MORPHER_PHONEME_S                         =26;
-  AL_VOCAL_MORPHER_PHONEME_T                         =27;
-  AL_VOCAL_MORPHER_PHONEME_V                         =28;
-  AL_VOCAL_MORPHER_PHONEME_Z                         =29;
-
-  AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING        =-24;
-  AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING        =24;
-  AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING    =0;
-
-  AL_VOCAL_MORPHER_MIN_WAVEFORM                      =0;
-  AL_VOCAL_MORPHER_MAX_WAVEFORM                      =2;
-  AL_VOCAL_MORPHER_DEFAULT_WAVEFORM                  =0;
-
-  AL_VOCAL_MORPHER_WAVEFORM_SINUSOID                 =0;
-  AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE                 =1;
-  AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH                 =2;
-
-  AL_VOCAL_MORPHER_MIN_RATE                          =0.0;
-  AL_VOCAL_MORPHER_MAX_RATE                          =10.0;
-  AL_VOCAL_MORPHER_DEFAULT_RATE                      =1.41;
-
-  //AL pitch shifter effect parameter ranges and defaults
-  AL_PITCH_SHIFTER_MIN_COARSE_TUNE                   =-12;
-  AL_PITCH_SHIFTER_MAX_COARSE_TUNE                   =12;
-  AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE               =12;
-
-  AL_PITCH_SHIFTER_MIN_FINE_TUNE                     =-50;
-  AL_PITCH_SHIFTER_MAX_FINE_TUNE                     =50;
-  AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE                 =0;
-
-  //AL ring modulator effect parameter ranges and defaults
-  AL_RING_MODULATOR_MIN_FREQUENCY                    =0.0;
-  AL_RING_MODULATOR_MAX_FREQUENCY                    =8000.0;
-  AL_RING_MODULATOR_DEFAULT_FREQUENCY                =440.0;
-
-  AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF              =0.0;
-  AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF              =24000.0;
-  AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF          =800.0;
-
-  AL_RING_MODULATOR_MIN_WAVEFORM                     =0;
-  AL_RING_MODULATOR_MAX_WAVEFORM                     =2;
-  AL_RING_MODULATOR_DEFAULT_WAVEFORM                 =0;
-
-  AL_RING_MODULATOR_SINUSOID                         =0;
-  AL_RING_MODULATOR_SAWTOOTH                         =1;
-  AL_RING_MODULATOR_SQUARE                           =2;
-
-  //AL autowah effect parameter ranges and defaults
-  AL_AUTOWAH_MIN_ATTACK_TIME                         =0.0001;
-  AL_AUTOWAH_MAX_ATTACK_TIME                         =1.0;
-  AL_AUTOWAH_DEFAULT_ATTACK_TIME                     =0.06;
-
-  AL_AUTOWAH_MIN_RELEASE_TIME                        =0.0001;
-  AL_AUTOWAH_MAX_RELEASE_TIME                        =1.0;
-  AL_AUTOWAH_DEFAULT_RELEASE_TIME                    =0.06;
-
-  AL_AUTOWAH_MIN_RESONANCE                           =2.0;
-  AL_AUTOWAH_MAX_RESONANCE                           =1000.0;
-  AL_AUTOWAH_DEFAULT_RESONANCE                       =1000.0;
-
-  AL_AUTOWAH_MIN_PEAK_GAIN                           =0.00003;
-  AL_AUTOWAH_MAX_PEAK_GAIN                           =31621.0;
-  AL_AUTOWAH_DEFAULT_PEAK_GAIN                       =11.22;
-
-  //AL compressor effect parameter ranges and defaults
-  AL_COMPRESSOR_MIN_ONOFF                            =0;
-  AL_COMPRESSOR_MAX_ONOFF                            =1;
-  AL_COMPRESSOR_DEFAULT_ONOFF                        =1;
-
-  //AL equalizer effect parameter ranges and defaults
-  AL_EQUALIZER_MIN_LOW_GAIN                          =0.126;
-  AL_EQUALIZER_MAX_LOW_GAIN                          =7.943;
-  AL_EQUALIZER_DEFAULT_LOW_GAIN                      =1.0;
-
-  AL_EQUALIZER_MIN_LOW_CUTOFF                        =50.0;
-  AL_EQUALIZER_MAX_LOW_CUTOFF                        =800.0;
-  AL_EQUALIZER_DEFAULT_LOW_CUTOFF                    =200.0;
-
-  AL_EQUALIZER_MIN_MID1_GAIN                         =0.126;
-  AL_EQUALIZER_MAX_MID1_GAIN                         =7.943;
-  AL_EQUALIZER_DEFAULT_MID1_GAIN                     =1.0;
-
-  AL_EQUALIZER_MIN_MID1_CENTER                       =200.0;
-  AL_EQUALIZER_MAX_MID1_CENTER                       =3000.0;
-  AL_EQUALIZER_DEFAULT_MID1_CENTER                   =500.0;
-
-  AL_EQUALIZER_MIN_MID1_WIDTH                        =0.01;
-  AL_EQUALIZER_MAX_MID1_WIDTH                        =1.0;
-  AL_EQUALIZER_DEFAULT_MID1_WIDTH                    =1.0;
-
-  AL_EQUALIZER_MIN_MID2_GAIN                         =0.126;
-  AL_EQUALIZER_MAX_MID2_GAIN                         =7.943;
-  AL_EQUALIZER_DEFAULT_MID2_GAIN                     =1.0;
-
-  AL_EQUALIZER_MIN_MID2_CENTER                       =1000.0;
-  AL_EQUALIZER_MAX_MID2_CENTER                       =8000.0;
-  AL_EQUALIZER_DEFAULT_MID2_CENTER                   =3000.0;
-
-  AL_EQUALIZER_MIN_MID2_WIDTH                        =0.01;
-  AL_EQUALIZER_MAX_MID2_WIDTH                        =1.0;
-  AL_EQUALIZER_DEFAULT_MID2_WIDTH                    =1.0;
-
-  AL_EQUALIZER_MIN_HIGH_GAIN                         =0.126;
-  AL_EQUALIZER_MAX_HIGH_GAIN                         =7.943;
-  AL_EQUALIZER_DEFAULT_HIGH_GAIN                     =1.0;
-
-  AL_EQUALIZER_MIN_HIGH_CUTOFF                       =4000.0;
-  AL_EQUALIZER_MAX_HIGH_CUTOFF                       =16000.0;
-  AL_EQUALIZER_DEFAULT_HIGH_CUTOFF                   =6000.0;
-
-  //Source parameter value definitions, ranges and defaults.
-
-  AL_MIN_AIR_ABSORPTION_FACTOR                       =0.0;
-  AL_MAX_AIR_ABSORPTION_FACTOR                       =10.0;
-  AL_DEFAULT_AIR_ABSORPTION_FACTOR                   =0.0;
-
-  AL_MIN_ROOM_ROLLOFF_FACTOR                         =0.0;
-  AL_MAX_ROOM_ROLLOFF_FACTOR                         =10.0;
-  AL_DEFAULT_ROOM_ROLLOFF_FACTOR                     =0.0;
-
-  AL_MIN_CONE_OUTER_GAINHF                           =0.0;
-  AL_MAX_CONE_OUTER_GAINHF                           =1.0;
-  AL_DEFAULT_CONE_OUTER_GAINHF                       =1.0;
-
-  AL_MIN_DIRECT_FILTER_GAINHF_AUTO                   =AL_FALSE;
-  AL_MAX_DIRECT_FILTER_GAINHF_AUTO                   =AL_TRUE;
-  AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO               =AL_TRUE;
-
-  AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO             =AL_FALSE;
-  AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO             =AL_TRUE;
-  AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO         =AL_TRUE;
-
-  AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO           =AL_FALSE;
-  AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO           =AL_TRUE;
-  AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO       =AL_TRUE;
-
-  //Listener parameter value definitions, ranges and defaults.
-  //AL_MIN_METERS_PER_UNIT                             =FLT_MIN;
-  //AL_MAX_METERS_PER_UNIT                             =FLT_MAX;
-  AL_DEFAULT_METERS_PER_UNIT                         =1.0;
-
-
-  //EFX AEX extenstion
-
-  //Effect object definitions to be used with alEffect functions.
-
-  //Effect parameter value definitions, ranges, and defaults
-  //appear farther down in this file.
-
-  //AL EAXReverb effect parameters.
-  AL_EAXREVERB_DENSITY                     =$0001;
-  AL_EAXREVERB_DIFFUSION                   =$0002;
-  AL_EAXREVERB_GAIN                        =$0003;
-  AL_EAXREVERB_GAINHF                      =$0004;
-  AL_EAXREVERB_GAINLF                      =$0005;
-  AL_EAXREVERB_DECAY_TIME                  =$0006;
-  AL_EAXREVERB_DECAY_HFRATIO               =$0007;
-  AL_EAXREVERB_DECAY_LFRATIO               =$0008;
-  AL_EAXREVERB_REFLECTIONS_GAIN            =$0009;
-  AL_EAXREVERB_REFLECTIONS_DELAY           =$000A;
-  AL_EAXREVERB_REFLECTIONS_PAN             =$000B;
-  AL_EAXREVERB_LATE_REVERB_GAIN            =$000C;
-  AL_EAXREVERB_LATE_REVERB_DELAY           =$000D;
-  AL_EAXREVERB_LATE_REVERB_PAN             =$000E;
-  AL_EAXREVERB_ECHO_TIME                   =$000F;
-  AL_EAXREVERB_ECHO_DEPTH                  =$0010;
-  AL_EAXREVERB_MODULATION_TIME             =$0011;
-  AL_EAXREVERB_MODULATION_DEPTH            =$0012;
-  AL_EAXREVERB_AIR_ABSORPTION_GAINHF       =$0013;
-  AL_EAXREVERB_HFREFERENCE                 =$0014;
-  AL_EAXREVERB_LFREFERENCE                 =$0015;
-  AL_EAXREVERB_ROOM_ROLLOFF_FACTOR         =$0016;
-  AL_EAXREVERB_DECAY_HFLIMIT               =$0017;
-
-  //Effect type definitions to be used with AL_EFFECT_TYPE.
-  AL_EFFECT_EAXREVERB                      =$8000;
-
-  //Effect parameter structures, value definitions, ranges and defaults.
-
-  //AL reverb effect parameter ranges and defaults
-
-  AL_EAXREVERB_MIN_DENSITY                 =0.0;
-  AL_EAXREVERB_MAX_DENSITY                 =1.0;
-  AL_EAXREVERB_DEFAULT_DENSITY             =1.0;
-
-  AL_EAXREVERB_MIN_DIFFUSION               =0.0;
-  AL_EAXREVERB_MAX_DIFFUSION               =1.0;
-  AL_EAXREVERB_DEFAULT_DIFFUSION           =1.0;
-
-  AL_EAXREVERB_MIN_GAIN                    =0.0;
-  AL_EAXREVERB_MAX_GAIN                    =1.0;
-  AL_EAXREVERB_DEFAULT_GAIN                =0.32;
-
-  AL_EAXREVERB_MIN_GAINHF                  =0.0;
-  AL_EAXREVERB_MAX_GAINHF                  =1.0;
-  AL_EAXREVERB_DEFAULT_GAINHF              =0.89;
-
-  AL_EAXREVERB_MIN_GAINLF                  =0.0;
-  AL_EAXREVERB_MAX_GAINLF                  =1.0;
-  AL_EAXREVERB_DEFAULT_GAINLF              =1.0;
-
-  AL_EAXREVERB_MIN_DECAY_TIME              =0.1;
-  AL_EAXREVERB_MAX_DECAY_TIME              =20.0;
-  AL_EAXREVERB_DEFAULT_DECAY_TIME          =1.49;
-
-  AL_EAXREVERB_MIN_DECAY_HFRATIO           =0.1;
-  AL_EAXREVERB_MAX_DECAY_HFRATIO           =2.0;
-  AL_EAXREVERB_DEFAULT_DECAY_HFRATIO       =0.83;
-
-  AL_EAXREVERB_MIN_DECAY_LFRATIO           =0.1;
-  AL_EAXREVERB_MAX_DECAY_LFRATIO           =2.0;
-  AL_EAXREVERB_DEFAULT_DECAY_LFRATIO       =1.0;
-
-  AL_EAXREVERB_MIN_REFLECTIONS_GAIN        =0.0;
-  AL_EAXREVERB_MAX_REFLECTIONS_GAIN        =3.16;
-  AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN    =0.05;
-
-  AL_EAXREVERB_MIN_REFLECTIONS_DELAY       =0.0;
-  AL_EAXREVERB_MAX_REFLECTIONS_DELAY       =0.3;
-  AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY   =0.007;
-
-  AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN: array[0..2] of TALFloat = (0.0, 0.0, 0.0);
-
-  AL_EAXREVERB_MIN_LATE_REVERB_GAIN        =0.0;
-  AL_EAXREVERB_MAX_LATE_REVERB_GAIN        =10.0;
-  AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN    =1.26;
-
-  AL_EAXREVERB_MIN_LATE_REVERB_DELAY       =0.0;
-  AL_EAXREVERB_MAX_LATE_REVERB_DELAY       =0.1;
-  AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY   =0.011;
-
-  AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN: array[0..2] of TALFloat = (0.0, 0.0, 0.0);
-
-  AL_EAXREVERB_MIN_ECHO_TIME               =0.075;
-  AL_EAXREVERB_MAX_ECHO_TIME               =0.25;
-  AL_EAXREVERB_DEFAULT_ECHO_TIME           =0.25;
-
-  AL_EAXREVERB_MIN_ECHO_DEPTH              =0.0;
-  AL_EAXREVERB_MAX_ECHO_DEPTH              =1.0;
-  AL_EAXREVERB_DEFAULT_ECHO_DEPTH          =0.0;
-
-  AL_EAXREVERB_MIN_MODULATION_TIME         =0.04;
-  AL_EAXREVERB_MAX_MODULATION_TIME         =4.0;
-  AL_EAXREVERB_DEFAULT_MODULATION_TIME     =0.25;
-
-  AL_EAXREVERB_MIN_MODULATION_DEPTH        =0.0;
-  AL_EAXREVERB_MAX_MODULATION_DEPTH        =1.0;
-  AL_EAXREVERB_DEFAULT_MODULATION_DEPTH    =0.0;
-
-  AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF   =0.892;
-  AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF   =1.0;
-  AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF =0.994;
-
-  AL_EAXREVERB_MIN_HFREFERENCE             =1000.0;
-  AL_EAXREVERB_MAX_HFREFERENCE             =20000.0;
-  AL_EAXREVERB_DEFAULT_HFREFERENCE         =5000.0;
-
-  AL_EAXREVERB_MIN_LFREFERENCE             =20.0;
-  AL_EAXREVERB_MAX_LFREFERENCE             =1000.0;
-  AL_EAXREVERB_DEFAULT_LFREFERENCE         =250.0;
-
-  AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR     =0.0;
-  AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR     =10.0;
-  AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR =0.0;
-
-  AL_EAXREVERB_MIN_DECAY_HFLIMIT           = AL_FALSE;
-  AL_EAXREVERB_MAX_DECAY_HFLIMIT           = AL_TRUE;
-  AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT       = AL_TRUE;
-
-  //END EFX AEX extension
-
-  // EFX utils version 1.0
-type
-  _EFXEAXREVERBPROPERTIES = packed record
-	  flDensity: single;
-	  flDiffusion: single;
-	  flGain: single;
-	  flGainHF: single;
-	  flGainLF: single;
-	  flDecayTime: single;
-	  flDecayHFRatio: single;
-	  flDecayLFRatio: single;
-	  flReflectionsGain: single;
-	  flReflectionsDelay: single;
-	  flReflectionsPan: packed array[0..2] of single;
-	  flLateReverbGain: single;
-	  flLateReverbDelay: single;
-	  flLateReverbPan: packed array[0..2] of single;
-	  flEchoTime: single;
-	  flEchoDepth: single;
-	  flModulationTime: single;
-	  flModulationDepth: single;
-	  flAirAbsorptionGainHF: single;
-	  flHFReference: single;
-	  flLFReference: single;
-	  flRoomRolloffFactor: single;
-	  iDecayHFLimit: integer;
-  end;
-  EFXEAXREVERBPROPERTIES = _EFXEAXREVERBPROPERTIES;
-  PEFXEAXREVERBPROPERTIES = ^_EFXEAXREVERBPROPERTIES;
-
-  _EFXLOWPASSFILTER = packed record
-	  flGain: single;
-	  flGainHF: single;
-  end;
-  EFXLOWPASSFILTER = _EFXLOWPASSFILTER;
-  PEFXLOWPASSFILTER = ^_EFXLOWPASSFILTER;
-
-  //END EFX extension
-
-const
-  //EAX extension
-  DSPROPSETID_EAX20_ListenerProperties     : TGuid = '{0306A6A8-B224-11d2-99E5-0000E8D8C722}';
-  DSPROPSETID_EAX20_BufferProperties       : TGuid = '{0306A6A7-B224-11d2-99E5-0000E8D8C722}';
-
-  // For compatibility with future EAX versions:
-  //DSPROPSETID_EAX_ListenerProperties = DSPROPSETID_EAX20_ListenerProperties;
-  //DSPROPSETID_EAX_SourceProperties = DSPROPSETID_EAX20_BufferProperties;
-
-  //Enumerations DSPROPERTY_EAX_LISTENERPROPERTY
-  DSPROPERTY_EAXLISTENER_NONE              = 0;
-  DSPROPERTY_EAXLISTENER_ALLPARAMETERS     = 1;
-  DSPROPERTY_EAXLISTENER_ROOM              = 2;
-  DSPROPERTY_EAXLISTENER_ROOMHF            = 3;
-  DSPROPERTY_EAXLISTENER_ROOMROLLOFFFACTOR = 4;
-  DSPROPERTY_EAXLISTENER_DECAYTIME         = 5;
-  DSPROPERTY_EAXLISTENER_DECAYHFRATIO      = 6;
-  DSPROPERTY_EAXLISTENER_REFLECTIONS       = 7;
-  DSPROPERTY_EAXLISTENER_REFLECTIONSDELAY  = 8;
-  DSPROPERTY_EAXLISTENER_REVERB            = 9;
-  DSPROPERTY_EAXLISTENER_REVERBDELAY       = 10;
-  DSPROPERTY_EAXLISTENER_ENVIRONMENT       = 11;
-  DSPROPERTY_EAXLISTENER_ENVIRONMENTSIZE   = 12;
-  DSPROPERTY_EAXLISTENER_ENVIRONMENTDIFFUSION = 13;
-  DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF   = 14;
-  DSPROPERTY_EAXLISTENER_FLAGS             = 15;
-
-  // OR these flags with property id
-  DSPROPERTY_EAXLISTENER_IMMEDIATE         = $00000000;
-  // changes take effect immediately
-  DSPROPERTY_EAXLISTENER_DEFERRED          = LongWORD($80000000);
-  DSPROPERTY_EAXLISTENER_COMMITDEFERREDSETTINGS = (DSPROPERTY_EAXLISTENER_NONE or
-                                                   DSPROPERTY_EAXLISTENER_IMMEDIATE);
-
-  // used by DSPROPERTY_EAXLISTENER_ENVIRONMENT
-  //Enummetation
-  EAX_ENVIRONMENT_GENERIC                  = 0;
-  EAX_ENVIRONMENT_PADDEDCELL               = 1;
-  EAX_ENVIRONMENT_ROOM                     = 2;
-  EAX_ENVIRONMENT_BATHROOM                 = 3;
-  EAX_ENVIRONMENT_LIVINGROOM               = 4;
-  EAX_ENVIRONMENT_STONEROOM                = 5;
-  EAX_ENVIRONMENT_AUDITORIUM               = 6;
-  EAX_ENVIRONMENT_CONCERTHALL              = 7;
-  EAX_ENVIRONMENT_CAVE                     = 8;
-  EAX_ENVIRONMENT_ARENA                    = 9;
-  EAX_ENVIRONMENT_HANGAR                   = 10;
-  EAX_ENVIRONMENT_CARPETEDHALLWAY          = 11;
-  EAX_ENVIRONMENT_HALLWAY                  = 12;
-  EAX_ENVIRONMENT_STONECORRIDOR            = 13;
-  EAX_ENVIRONMENT_ALLEY                    = 14;
-  EAX_ENVIRONMENT_FOREST                   = 15;
-  EAX_ENVIRONMENT_CITY                     = 16;
-  EAX_ENVIRONMENT_MOUNTAINS                = 17;
-  EAX_ENVIRONMENT_QUARRY                   = 18;
-  EAX_ENVIRONMENT_PLAIN                    = 19;
-  EAX_ENVIRONMENT_PARKINGLOT               = 20;
-  EAX_ENVIRONMENT_SEWERPIPE                = 21;
-  EAX_ENVIRONMENT_UNDERWATER               = 22;
-  EAX_ENVIRONMENT_DRUGGED                  = 23;
-  EAX_ENVIRONMENT_DIZZY                    = 24;
-  EAX_ENVIRONMENT_PSYCHOTIC                = 25;
-  EAX_ENVIRONMENT_COUNT                    = 26;
-
-  // Used by DSPROPERTY_EAXLISTENER_FLAGS
-  //
-  // Note: The number and order of flags may change in future EAX versions.
-  //       It is recommended to use the flag defines as follows:
-  //              myFlags = EAXLISTENERFLAGS_DECAYTIMESCALE | EAXLISTENERFLAGS_REVERBSCALE;
-  //       instead of:
-  //              myFlags = 0x00000009;
-  //
-  // These flags determine what properties are affected by environment size.
-  EAXLISTENERFLAGS_DECAYTIMESCALE          = $00000001;
-  // reverberation decay time
-  EAXLISTENERFLAGS_REFLECTIONSSCALE        = $00000002; // reflection level
-  EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE   = $00000004;
-  // initial reflection delay time
-  EAXLISTENERFLAGS_REVERBSCALE             = $00000008; // reflections level
-  EAXLISTENERFLAGS_REVERBDELAYSCALE        = $00000010;
-  // late reverberation delay time
-
-  // This flag limits high-frequency decay time according to air absorption.
-  EAXLISTENERFLAGS_DECAYHFLIMIT            = $00000020;
-  EAXLISTENERFLAGS_RESERVED                = $FFFFFFC0; // reserved future use
-
-  // property ranges and defaults:
-  EAXLISTENER_MINROOM                      = -10000;
-  EAXLISTENER_MAXROOM                      = 0;
-  EAXLISTENER_DEFAULTROOM                  = -1000;
-
-  EAXLISTENER_MINROOMHF                    = -10000;
-  EAXLISTENER_MAXROOMHF                    = 0;
-  EAXLISTENER_DEFAULTROOMHF                = -100;
-
-  EAXLISTENER_MINROOMROLLOFFFACTOR         = 0.0;
-  EAXLISTENER_MAXROOMROLLOFFFACTOR         = 10.0;
-  EAXLISTENER_DEFAULTROOMROLLOFFFACTOR     = 0.0;
-
-  EAXLISTENER_MINDECAYTIME                 = 0.1;
-  EAXLISTENER_MAXDECAYTIME                 = 20.0;
-  EAXLISTENER_DEFAULTDECAYTIME             = 1.49;
-
-  EAXLISTENER_MINDECAYHFRATIO              = 0.1;
-  EAXLISTENER_MAXDECAYHFRATIO              = 2.0;
-  EAXLISTENER_DEFAULTDECAYHFRATIO          = 0.83;
-
-  EAXLISTENER_MINREFLECTIONS               = -10000;
-  EAXLISTENER_MAXREFLECTIONS               = 1000;
-  EAXLISTENER_DEFAULTREFLECTIONS           = -2602;
-
-  EAXLISTENER_MINREFLECTIONSDELAY          = 0.0;
-  EAXLISTENER_MAXREFLECTIONSDELAY          = 0.3;
-  EAXLISTENER_DEFAULTREFLECTIONSDELAY      = 0.007;
-
-  EAXLISTENER_MINREVERB                    = -10000;
-  EAXLISTENER_MAXREVERB                    = 2000;
-  EAXLISTENER_DEFAULTREVERB                = 200;
-
-  EAXLISTENER_MINREVERBDELAY               = 0.0;
-  EAXLISTENER_MAXREVERBDELAY               = 0.1;
-  EAXLISTENER_DEFAULTREVERBDELAY           = 0.011;
-
-  EAXLISTENER_MINENVIRONMENT               = 0;
-  EAXLISTENER_MAXENVIRONMENT               = EAX_ENVIRONMENT_COUNT - 1;
-  EAXLISTENER_DEFAULTENVIRONMENT           = EAX_ENVIRONMENT_GENERIC;
-
-  EAXLISTENER_MINENVIRONMENTSIZE           = 1.0;
-  EAXLISTENER_MAXENVIRONMENTSIZE           = 100.0;
-  EAXLISTENER_DEFAULTENVIRONMENTSIZE       = 7.5;
-
-  EAXLISTENER_MINENVIRONMENTDIFFUSION      = 0.0;
-  EAXLISTENER_MAXENVIRONMENTDIFFUSION      = 1.0;
-  EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION  = 1.0;
-
-  EAXLISTENER_MINAIRABSORPTIONHF           = -100.0;
-  EAXLISTENER_MAXAIRABSORPTIONHF           = 0.0;
-  EAXLISTENER_DEFAULTAIRABSORPTIONHF       = -5.0;
-
-  EAXLISTENER_DEFAULTFLAGS                 = EAXLISTENERFLAGS_DECAYTIMESCALE or
-                                             EAXLISTENERFLAGS_REFLECTIONSSCALE or
-  	                                     EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE or
-		                             EAXLISTENERFLAGS_REVERBSCALE or
-		                             EAXLISTENERFLAGS_REVERBDELAYSCALE or
-		                             EAXLISTENERFLAGS_DECAYHFLIMIT;
-
-  // For compatibility with future EAX versions:
-  //DSPROPSETID_EAX_BufferProperties = DSPROPSETID_EAX20_BufferProperties;
-
-  //Enumeration DSPROPERTY_EAX_BUFFERPROPERTY
-  DSPROPERTY_EAXBUFFER_NONE                = 0;
-  DSPROPERTY_EAXBUFFER_ALLPARAMETERS       = 1;
-  DSPROPERTY_EAXBUFFER_DIRECT              = 2;
-  DSPROPERTY_EAXBUFFER_DIRECTHF            = 3;
-  DSPROPERTY_EAXBUFFER_ROOM                = 4;
-  DSPROPERTY_EAXBUFFER_ROOMHF              = 5;
-  DSPROPERTY_EAXBUFFER_ROOMROLLOFFFACTOR   = 6;
-  DSPROPERTY_EAXBUFFER_OBSTRUCTION         = 7;
-  DSPROPERTY_EAXBUFFER_OBSTRUCTIONLFRATIO  = 8;
-  DSPROPERTY_EAXBUFFER_OCCLUSION           = 9;
-  DSPROPERTY_EAXBUFFER_OCCLUSIONLFRATIO    = 10;
-  DSPROPERTY_EAXBUFFER_OCCLUSIONROOMRATIO  = 11;
-  DSPROPERTY_EAXBUFFER_OUTSIDEVOLUMEHF     = 12;
-  DSPROPERTY_EAXBUFFER_AIRABSORPTIONFACTOR = 13;
-  DSPROPERTY_EAXBUFFER_FLAG                = 14;
-
-  // OR these flags with property id
-  DSPROPERTY_EAXBUFFER_IMMEDIATE           = $00000000;
-  // changes take effect immediately
-  DSPROPERTY_EAXBUFFER_DEFERRED            = LongWORD($80000000);
-  DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS = DSPROPERTY_EAXBUFFER_NONE or
-  DSPROPERTY_EAXBUFFER_IMMEDIATE;
-
-  // Used by DSPROPERTY_EAXBUFFER_FLAGS
-  //    TRUE:    value is computed automatically - property is an offset
-  //    FALSE:   value is used directly
-  //
-  // Note: The number and order of flags may change in future EAX versions.
-  //       To insure future compatibility, use flag defines as follows:
-  //              myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
-  //       instead of:
-  //              myFlags = 0x00000003;
-  //
-  EAXBUFFERFLAGS_DIRECTHFAUTO              = $00000001;
-  // affects DSPROPERTY_EAXBUFFER_DIRECTHF
-  EAXBUFFERFLAGS_ROOMAUTO                  = $00000002;
-  // affects DSPROPERTY_EAXBUFFER_ROOM
-  EAXBUFFERFLAGS_ROOMHFAUTO                = $00000004;
-  // affects DSPROPERTY_EAXBUFFER_ROOMHF
-
-  EAXBUFFERFLAGS_RESERVED                  = $FFFFFFF8; // reserved future use
-
-  // property ranges and defaults:
-  EAXBUFFER_MINDIRECT                      = -10000;
-  EAXBUFFER_MAXDIRECT                      = 1000;
-  EAXBUFFER_DEFAULTDIRECT                  = 0;
-
-  EAXBUFFER_MINDIRECTHF                    = -10000;
-  EAXBUFFER_MAXDIRECTHF                    = 0;
-  EAXBUFFER_DEFAULTDIRECTHF                = 0;
-
-  EAXBUFFER_MINROOM                        = -10000;
-  EAXBUFFER_MAXROOM                        = 1000;
-  EAXBUFFER_DEFAULTROOM                    = 0;
-
-  EAXBUFFER_MINROOMHF                      = -10000;
-  EAXBUFFER_MAXROOMHF                      = 0;
-  EAXBUFFER_DEFAULTROOMHF                  = 0;
-
-  EAXBUFFER_MINROOMROLLOFFFACTOR           = 0.0;
-  EAXBUFFER_MAXROOMROLLOFFFACTOR           = 10.;
-  EAXBUFFER_DEFAULTROOMROLLOFFFACTOR       = 0.0;
-
-  EAXBUFFER_MINOBSTRUCTION                 = -10000;
-  EAXBUFFER_MAXOBSTRUCTION                 = 0;
-  EAXBUFFER_DEFAULTOBSTRUCTION             = 0;
-
-  EAXBUFFER_MINOBSTRUCTIONLFRATIO          = 0.0;
-  EAXBUFFER_MAXOBSTRUCTIONLFRATIO          = 1.0;
-  EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO      = 0.0;
-
-  EAXBUFFER_MINOCCLUSION                   = -10000;
-  EAXBUFFER_MAXOCCLUSION                   = 0;
-  EAXBUFFER_DEFAULTOCCLUSION               = 0;
-
-  EAXBUFFER_MINOCCLUSIONLFRATIO            = 0.0;
-  EAXBUFFER_MAXOCCLUSIONLFRATIO            = 1.0;
-  EAXBUFFER_DEFAULTOCCLUSIONLFRATIO        = 0.25;
-
-  EAXBUFFER_MINOCCLUSIONROOMRATIO          = 0.0;
-  EAXBUFFER_MAXOCCLUSIONROOMRATIO          = 10.0;
-  EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO      = 0.5;
-
-  EAXBUFFER_MINOUTSIDEVOLUMEHF             = -10000;
-  EAXBUFFER_MAXOUTSIDEVOLUMEHF             = 0;
-  EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF         = 0;
-
-  EAXBUFFER_MINAIRABSORPTIONFACTOR         = 0.0;
-  EAXBUFFER_MAXAIRABSORPTIONFACTOR         = 10.0;
-  EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR     = 1.0;
-
-  EAXBUFFER_DEFAULTFLAGS                   = EAXBUFFERFLAGS_DIRECTHFAUTO or
-  EAXBUFFERFLAGS_ROOMAUTO or
-  EAXBUFFERFLAGS_ROOMHFAUTO;
-
-  // Material transmission presets
-  // 3 values in this order:
-  //     1: occlusion (or obstruction)
-  //     2: occlusion LF Ratio (or obstruction LF Ratio)
-  //     3: occlusion Room Ratio
-
-  // Single window material preset
-  EAX_MATERIAL_SINGLEWINDOW                = -2800;
-  EAX_MATERIAL_SINGLEWINDOWLF              = 0.71;
-  EAX_MATERIAL_SINGLEWINDOWROOMRATIO       = 0.43;
-
-  // Double window material preset
-  EAX_MATERIAL_DOUBLEWINDOW                = -5000;
-  EAX_MATERIAL_DOUBLEWINDOWHF              = 0.40;
-  EAX_MATERIAL_DOUBLEWINDOWROOMRATIO       = 0.24;
-
-  // Thin door material preset
-  EAX_MATERIAL_THINDOOR                    = -1800;
-  EAX_MATERIAL_THINDOORLF                  = 0.66;
-  EAX_MATERIAL_THINDOORROOMRATIO           = 0.66;
-
-  // Thick door material preset
-  EAX_MATERIAL_THICKDOOR                   = -4400;
-  EAX_MATERIAL_THICKDOORLF                 = 0.64;
-  EAX_MATERIAL_THICKDOORROOMRTATION        = 0.27;
-
-  // Wood wall material preset
-  EAX_MATERIAL_WOODWALL                    = -4000;
-  EAX_MATERIAL_WOODWALLLF                  = 0.50;
-  EAX_MATERIAL_WOODWALLROOMRATIO           = 0.30;
-
-  // Brick wall material preset
-  EAX_MATERIAL_BRICKWALL                   = -5000;
-  EAX_MATERIAL_BRICKWALLLF                 = 0.60;
-  EAX_MATERIAL_BRICKWALLROOMRATIO          = 0.24;
-
-  // Stone wall material preset
-  EAX_MATERIAL_STONEWALL                   = -6000;
-  EAX_MATERIAL_STONEWALLLF                 = 0.68;
-  EAX_MATERIAL_STONEWALLROOMRATIO          = 0.20;
-
-  // Curtain material preset
-  EAX_MATERIAL_CURTAIN                     = -1200;
-  EAX_MATERIAL_CURTAINLF                   = 0.15;
-  EAX_MATERIAL_CURTAINROOMRATIO            = 1.00;
-
-  //END EAX extension
-
-var
-  //OpenAL Maintenance Functions
-  //State Management and Query.
-  //Error Handling.
-  //Extension Support.
-
-  //Renderer State management.
-  alEnable: procedure(capability: TALenum); cdecl;
-  alDisable: procedure(capability: TALenum); cdecl;
-  alIsEnabled: function(capability: TALenum): TALboolean; cdecl;
-
-  //Application preferences for driver performance choices.
-  alHint: procedure(target, mode: TALenum); cdecl;
-
-  //State retrieval.
-  alGetBooleanv: procedure(param: TALenum; data: PALboolean); cdecl;
-  alGetIntegerv: procedure(param: TALenum; data: PALint); cdecl;
-  alGetFloatv: procedure(param: TALenum; data: PALfloat); cdecl;
-  alGetDoublev: procedure(param: TALenum; data: PALdouble); cdecl;
-  alGetString: function(param: TALenum): PALubyte; cdecl;
-
-  //State retrieval.through return value ( for compatibility )
-  alGetBoolean: function(param: TALenum): TALboolean; cdecl;
-  alGetInteger: function(param: TALenum): TALint; cdecl;
-  alGetFloat: function(param: TALenum): TALfloat; cdecl;
-  alGetDouble: function(param: TALenum): TALdouble; cdecl;
-
-  //ERROR support.
-
-  //Obtain the most recent error generated in the AL state machine.
-  alGetError: function: TALenum; cdecl;
-
-  //EXTENSION support.
-
-  //Obtain the address of a function (usually an extension)
-  // with the name fname. All addresses are context-independent.
-  alIsExtensionPresent: function(fname: PAnsiChar): TALboolean; cdecl;
-
-  //Obtain the address of a function (usually an extension)
-  //with the name fname. All addresses are context-independent.
-  alGetProcAddress: function(fname: PALuByte): Pointer; cdecl;
-
-  //Obtain the integer value of an enumeration (usually an extension) with the name ename.
-  alGetEnumValue: function(ename: PALuByte): TALenum; cdecl;
-
-  //LISTENER
-  //Listener is the sample position for a given context.
-  //The multi-channel (usually stereo) output stream generated
-  //by the mixer is parametrized by this Listener object:
-  //its position and velocity relative to Sources, within
-  //occluder and reflector geometry.
-
-  //Listener Gain:  default 1.0f.
-  alListenerf: procedure(param: TALenum; value: TALfloat); cdecl;
-
-  //Listener Position.
-  //Listener Velocity.
-  alListener3f: procedure(param: TALenum; f1: TALfloat; f2: TALfloat; f3: TALfloat); cdecl;
-
-  //Listener Position:        array [0..2] of TALfloat
-  //Listener Velocity:        array [0..2] of TALfloat
-  //Listener Orientation:     array [0..5] of TALfloat  forward and up vector.
-  alListenerfv: procedure(param: TALenum; values: PALfloat); cdecl;
-
-  //Listener Environment:  default 0.
-  alListeneri: procedure(param: TAlenum; value: TALint); cdecl;
-
-  alListener3i: procedure(param: TALenum; value1: TALint; value2: TALint; value3: TALint );
-
-  alListeneriv: procedure(param: TALenum; const values: PALint );
-
-  //TODO: verder ontbrekende functies toevoegen.
-
-  //Retrieve listener information
-  alGetListeneriv: procedure(param: TALenum; values: PALint); cdecl;
-  alGetListenerfv: procedure(param: TALenum; values: PALfloat); cdecl;
-
-  //SOURCE
-  //Source objects are by default localized. Sources
-  //take the PCM data provided in the specified Buffer,
-  //apply Source-specific modifications, and then
-  //submit them to be mixed according to spatial
-  //arrangement etc.
-
-  //Create Source objects.
-  alGenSources: procedure(n: TALsizei; sources: PALuint); cdecl;
-
-  //Delete Source objects.
-  alDeleteSources: procedure(n: TALsizei; sources: PALuint); cdecl;
-
-  //Verify a handle is a valid Source.
-  alIsSource: function(id: TALuint): TALboolean; cdecl;
-
-  //Set an integer parameter for a Source object.
-  alSourcei: procedure(source: TALuint; param: TALenum; value: TALint); cdecl;
-  //Set an 3 integer parameter for a Source object.
-  alSource3i: procedure(source: TALuint; param: TALenum; v1: TALint; v2: TALint; v3: TALint); cdecl;
-  //Set an integer vector parameter for a Source object.
-  alSourceiv: procedure(source: TALuint; param: TALenum; values: PALint); cdecl;
-
-  //Set a float parameter for a Source object.
-  alSourcef: procedure(source: TALuint; param: TALenum; value: TALfloat); cdecl;
-  //Set a 3 float parameter for a Source object.
-  alSource3f: procedure(source: TALuint; param: TALenum; v1: TALfloat; v2: TALfloat; v3: TALfloat); cdecl;
-  //Set a float vector parameter for a Source object.
-  alSourcefv: procedure(source: TALuint; param: TALenum; values: PALfloat); cdecl;
-
-  //Get an integer scalar parameter for a Source object.
-  alGetSourcei: procedure(source: TALuint; param: TALenum; value: PALint); cdecl;
-  //Get three integer scalar parameter for a Source object.
-  alGetSource3i: procedure(source: TALuint; param: TALenum; v1: PALint; v2: PALint; v3: PALint); cdecl;
-  //Get a integer vector parameter for a Source object.
-  alGetSourceiv: procedure(source: TALuint; param: TALenum; values: PALint); cdecl;
-
-  //Get a float scalar parameter for a Source object.
-  alGetSourcef: procedure(source: TALuint; param: TALenum; value: PALfloat); cdecl;
-  //Get three float scalar parameter for a Source object.
-  alGetSource3f: procedure(source: TALuint; param: TALenum; v1: PALfloat; v2: PALfloat; v3: PALfloat); cdecl;
-  //Get a float vector parameter for a Source object.
-  alGetSourcefv: procedure(source: TALuint; param: TALenum; values: PALfloat); cdecl;
-
-  //Activate a source, start replay.
-  alSourcePlay: procedure(source: TALuint); cdecl;
-
-  //Pause a source,
-  //temporarily remove it from the mixer list.
-  alSourcePause: procedure(source: TALuint); cdecl;
-
-  //Stop a source,
-  //temporarily remove it from the mixer list,
-  //and reset its internal state to pre-Play.
-  //To remove a Source completely, it has to be
-  //deleted following Stop, or before Play.
-  alSourceStop: procedure(source: TALuint); cdecl;
-
-
-  //Rewind a souce.  Stopped paused and playing sources,
-  //resets the offset into the PCM data and sets state to
-  //AL_INITIAL.
-  alSourceRewind: procedure(source: TALuint); cdecl;
-
-  //vector forms of those functions we all love
-  alSourcePlayv: procedure(n: TALsizei; sources: PALuint); cdecl;
-  alSourceStopv: procedure(n: TALsizei; sources: PALuint); cdecl;
-  alSourceRewindv: procedure(n: TALsizei; sources: PALuint); cdecl;
-  alSourcePausev: procedure(n: TALsizei; sources: PALuint); cdecl;
-
-    //Queue stuff
-  alSourceQueueBuffers: procedure(source: TALuint; n: TALsizei; buffers: PALuint); cdecl;
-  alSourceUnqueueBuffers: procedure(source: TALuint; n: TALsizei; buffers: PALuint); cdecl;
-
-  //BUFFER
-  //Buffer objects are storage space for sample data.
-  //Buffers are referred to by Sources. There can be more than
-  //one Source using the same Buffer data. If Buffers have
-  //to be duplicated on a per-Source basis, the driver has to
-  //take care of allocation, copying, and deallocation as well
-  //as propagating buffer data changes.
-
-  //Buffer object generation.
-  alGenBuffers: procedure(n: TALsizei; buffers: PALuint); cdecl;
-  alDeleteBuffers: procedure(n: TALsizei; buffers: PALuint); cdecl;
-  alIsBuffer: function(buffer: TALuint): TALboolean; cdecl;
-  //Specify the data to be filled into a buffer.
-  alBufferData: procedure(buffer: TALuint; format: TALenum; data: Pointer; size, freq: TALsizei); cdecl;
-  //set parameter for an buffer object
-  alBufferi: procedure(buffer: TALuint; param: TALenum; value: TALint); cdecl;
-  alBuffer3i: procedure(buffer: TALuint; param: TALenum; v1: TALint; v2: TALint; v3: TALint); cdecl;
-  alBufferiv: procedure(buffer: TALuint; param: TALenum; values: PALint); cdecl;
-
-  alBufferf: procedure(buffer: TALuint; param: TALenum; value: TALfloat); cdecl;
-  alBuffer3f: procedure(buffer: TALuint; param: TALenum; v1: TALfloat; v2: TALfloat; v3: TALfloat); cdecl;
-  alBufferfv: procedure(buffer: TALuint; param: TALenum; values: PALfloat); cdecl;
-
-  //read parameter for an buffer object
-  alGetBufferi: procedure(buffer: TALuint; param: TALenum; value: PALint); cdecl;
-  alGetBuffer3i: procedure(buffer: TALuint; param: TALenum; v1: PALint; v2: PALint; v3: PALint); cdecl;
-  alGetBufferiv: procedure(buffer: TALuint; param: TALenum; values: PALint); cdecl;
-
-  alGetBufferf: procedure(buffer: TALuint; param: TALenum; value: PALfloat); cdecl;
-  alGetBuffer3f: procedure(buffer: TALuint; param: TALenum; v1: PALfloat; v2: PALfloat; v3: PALfloat); cdecl;
-  alGetBufferfv: procedure(buffer: TALuint; param: TALenum; values: PALfloat); cdecl;
-
-  //Global Parameters
-  alDistanceModel: procedure(value: TALenum); cdecl;
-  alDopplerFactor: procedure(value: TALfloat); cdecl;
-  alDopplerVelocity: procedure(value: TALfloat); cdecl;
-  alSpeedOfSound: procedure( value: TALfloat ); cdecl;
-
-  //alc functions
-
-  //Context Support
-  alcCreateContext: function(device: TALCdevice; attrlist: PALCint): TALCcontext; cdecl;
-  alcMakeContextCurrent: function(context: TALCcontext): TALCenum; cdecl;
-  alcProcessContext: procedure(context: TALCcontext); cdecl;
-  alcSuspendContext: procedure(context: TALCcontext); cdecl;
-  alcDestroyContext: procedure(context: TALCcontext); cdecl;
-  alcGetCurrentContext: function: TALCcontext; cdecl;
-  alcGetContextsDevice: function(context: TALCcontext): TALCdevice; cdecl;
-
-  //Device Management
-  alcOpenDevice: function(deviceName: PALCuByte): TALCdevice; cdecl;
-  alcCloseDevice: procedure(device: TALCdevice); cdecl;
-
-  //Error Support
-  //Obtain the most recent Context error
-  alcGetError: function(device: TALCdevice): TALCenum; cdecl;
-
-  //Extension support.
-  //Query for the presence of an extension, and obtain any appropriate
-  //function pointers and enum values.
-  alcIsExtensionPresent: function(device: TALCdevice; extName: PALuByte): TALCboolean; cdecl;
-  alcGetProcAddress: function(device: TALCdevice; funcName: PALuByte): TALCvoid; cdecl;
-  alcGetEnumValue: function(device: TALCdevice; enumName: PALuByte): TALCenum; cdecl;
-
-  //Query functions
-  alcGetString: function(device: TALCdevice; param: TALCenum): PALCubyte; cdecl;
-  alcGetIntegerv: procedure(device: TALCdevice; param: TALCenum; size: TALCsizei; data: PALCint); cdecl;
-
-  //Capture functions
-  alcCaptureOpenDevice: function( const devicename: PALCchar; frequency: TALCuint; format: TALCenum; buffersize: TALCsizei): PALCdevice; cdecl;
-  alcCaptureCloseDevice: function( device: PALCdevice ): TALCboolean; cdecl;
-  alcCaptureStart: procedure( device: PALCdevice ); cdecl;
-  alcCaptureStop: procedure( device: PALCdevice ); cdecl;
-  alcCaptureSamples: procedure( device: PALCdevice; buffer: TALCvoid; samples: TALCsizei ); cdecl;
-
-  //EAX functions
-  EAXSet: Function(const Guid: TGUID; ALuint1: TALuint; ALuint2: TALuint; point: Pointer; ALuint3: TALuint): TALenum; cdecl;
-  EAXGet: Function(const Guid: TGUID; ALuint1: TALuint; ALuint2: TALuint; point: Pointer; ALuint3: TALuint): TALenum; cdecl;
-
-  //X-RAM enums
-  AL_EAX_RAM_SIZE: TALEnum;
-  AL_EAX_RAM_FREE: TALEnum;
-  AL_STORAGE_AUTOMATIC: TALEnum;
-  AL_STORAGE_HARDWARE: TALEnum;
-  AL_STORAGE_ACCESSIBLE: TALEnum;
-  //X-RAM functions
-  EAXSetBufferMode: function(n: TALsizei;buffers: PALuint; value: TALint ): TALboolean; cdecl;
-  EAXGetBufferMode: function(buffer: TALuint; value: PALint ): TALenum; cdecl;
-
-  //EFX functions
-
-  //Effect object functions.
-
-  //Create Effect objects.
-  ALGENEFFECTS: procedure( n: TALsizei; effects: PALuint ); cdecl;
-
-  //Delete Effect objects.
-  ALDELETEEFFECTS: procedure( n: TALsizei; effects: PALuint ); cdecl;
-
-  //Verify a handle is a valid Effect.
-  ALISEFFECT: function( eid: TALuint ): TALboolean; cdecl;
-
-  // Set an integer parameter for an Effect object.
-  ALEFFECTI: procedure( eid: TALuint; param: TALCenum; value: TALint); cdecl;
-  ALEFFECTIV: procedure( eid: TALuint; param: TALenum; values: PALint ); cdecl;
-
-  // Set a floating point parameter for an Effect object.
-  ALEFFECTF: procedure( eid: TALuint; param: TALenum; value: TALfloat); cdecl;
-  ALEFFECTFV: procedure( eid: TALuint; param: TALenum; values: PALfloat ); cdecl;
-
-  // Get an integer parameter for an Effect object.
-  ALGETEFFECTI: procedure( eid: TALuint; param: TALenum; value: PALint ); cdecl;
-  ALGETEFFECTIV: procedure( eid: TALuint; param: TALenum; values: PALint ); cdecl;
-
-  // Get a floating point parameter for an Effect object.
-  ALGETEFFECTF: procedure( eid: TALuint; param: TALenum; value: PALfloat ); cdecl;
-  ALGETEFFECTFV: procedure( eid: TALuint; param: TALenum; values: PALfloat ); cdecl;
-
-  //Filter object functions
-
-  // Create Filter objects.
-  ALGENFILTERS: procedure( n: TALsizei; filters: PALuint ); cdecl;
-
-  // Delete Filter objects.
-  ALDELETEFILTERS: procedure( n: TALsizei; filters: PALuint ); cdecl;
-
-  // Verify a handle is a valid Filter.
-  ALISFILTER: function( fid: TALuint ): TALboolean; cdecl;
-
-  // Set an integer parameter for a Filter object.
-  ALFILTERI: procedure( fid: TALuint; param: TALenum; value: TALint ); cdecl;
-  ALFILTERIV: procedure( fid: TALuint; param: TALenum; values: PALint ); cdecl;
-
-  // Set a floating point parameter for an Filter object.
-  ALFILTERF: procedure( fid: TALuint; param: TALenum; value: TALfloat); cdecl;
-  ALFILTERFV: procedure( fid: TALuint; param: TALenum; values: PALfloat ); cdecl;
-
-  // Get an integer parameter for a Filter object.
-  ALGETFILTERI: procedure( fid: TALuint; param: TALenum; value: PALint ); cdecl;
-  ALGETFILTERIV: procedure( fid: TALuint; param: TALenum; values: PALint ); cdecl;
-
-  // Get a floating point parameter for a Filter object.
-  ALGETFILTERF: procedure( fid: TALuint; param: TALenum; value: PALfloat ); cdecl;
-  ALGETFILTERFV: procedure( fid: TALuint; param: TALenum; values: PALfloat ); cdecl;
-
-  // Auxiliary Slot object functions
-
-  // Create Auxiliary Slot objects.
-  ALGENAUXILIARYEFFECTSLOTS: procedure( n: TALsizei; slots: PALuint ); cdecl;
-
-  // Delete Auxiliary Slot objects.
-  ALDELETEAUXILIARYEFFECTSLOTS: procedure( n: TALsizei; slots: PALuint ); cdecl;
-
-  // Verify a handle is a valid Auxiliary Slot.
-  ALISAUXILIARYEFFECTSLOT: function( slot: TALuint ): TALboolean; cdecl;
-
-  // Set an integer parameter for a Auxiliary Slot object.
-  ALAUXILIARYEFFECTSLOTI: procedure( asid: TALuint; param: TALenum; value: TALint ); cdecl;
-  ALAUXILIARYEFFECTSLOTIV: procedure( asid: TALuint; param: TALenum; values: PALint ); cdecl;
-
-  // Set a floating point parameter for an Auxiliary Slot object.
-  ALAUXILIARYEFFECTSLOTF: procedure( asid: TALuint; param: TALenum; value: TALfloat ); cdecl;
-  ALAUXILIARYEFFECTSLOTFV: procedure( asid: TALuint; param: TALenum; values: PALfloat ); cdecl;
-
-  // Get an integer parameter for a Auxiliary Slot object.
-  ALGETAUXILIARYEFFECTSLOTI: procedure( asid: TALuint; param: TALenum; value: PALint ); cdecl;
-  ALGETAUXILIARYEFFECTSLOTIV: procedure( asid: TALuint; param: TALenum; values: PALint ); cdecl;
-
-  // Get a floating point parameter for a Auxiliary Slot object.
-  ALGETAUXILIARYEFFECTSLOTF: procedure( asid: TALuint; param: TALenum; value: PALfloat ); cdecl;
-  ALGETAUXILIARYEFFECTSLOTFV: procedure( asid: TALuint; param: TALenum; values: PALfloat ); cdecl;
-
-
-{$IFDEF ALUT}
-  //External Alut functions (from dll or so)
-  alutInit: procedure(argc: PALint; argv: array of PALbyte); cdecl;
-  alutExit: procedure; cdecl;
-
-  alutLoadWAVFile: procedure(fname: string; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint); cdecl;
-  alutLoadWAVMemory: procedure(memory: PALbyte; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint); cdecl;
-  alutUnloadWAV: procedure(format: TALenum; data: TALvoid; size: TALsizei; freq: TALsizei); cdecl;
-{$ELSE}
-  //Internal Alut functions
-  procedure alutInit(argc: PALint; argv: array of PALbyte);
-  procedure alutExit;
-
-  procedure alutLoadWAVFile(fname: string; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint);
-  procedure alutLoadWAVMemory(memory: PALbyte; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint);
-  procedure alutUnloadWAV(format: TALenum; data: TALvoid; size: TALsizei; freq: TALsizei);
-{$ENDIF}
-
-var
-  LibHandle          : THandle = 0;
-{$IFDEF ALUT}
-  AlutLibHandle      : THandle = 0;
-{$ENDIF}
-  EFXUtilLibHandle       : THandle = 0;
-type
-  HMODULE = THandle;
-
-{$IFDEF ALUT}
-function InitOpenAL(LibName: String = callibname;AlutLibName: String = calutlibname): Boolean;
-{$ELSE}
-function InitOpenAL(LibName: String = callibname): Boolean;
-{$ENDIF}
-procedure ReadOpenALExtensions;
-
-
-implementation
-
-uses classes;
-
-type
-  //WAV file header
-  TWAVHeader = record
-    RIFFHeader: array [1..4] of Char;
-    FileSize: Integer;
-    WAVEHeader: array [1..4] of Char;
-    FormatHeader: array [1..4] of Char;
-    FormatHeaderSize: Integer;
-    FormatCode: Word;
-    ChannelNumber: Word;
-    SampleRate: Integer;
-    BytesPerSecond: Integer;
-    BytesPerSample: Word;
-    BitsPerSample: Word;
-  end;
-
-const
-  WAV_STANDARD  = $0001;
-  WAV_IMA_ADPCM = $0011;
-  WAV_MP3       = $0055;
-
-{$IFDEF FPC}
-// Added by bero
-const
-  RTLD_LAZY         = $001;
-  RTLD_NOW          = $002;
-  RTLD_BINDING_MASK = $003;
-  LibraryLib        = {$IFDEF Linux}'dl'{$ELSE}'c'{$ENDIF};
-
-function LoadLibraryEx(Name : PAnsiChar; Flags : LongInt) : Pointer; cdecl; external LibraryLib name 'dlopen';
-function GetProcAddressEx(Lib : Pointer; Name : PAnsiChar) : Pointer; cdecl; external LibraryLib name 'dlsym';
-function FreeLibraryEx(Lib : Pointer) : LongInt; cdecl; external LibraryLib name 'dlclose';
-
-function LoadLibrary(Name : PChar) : THandle;
-begin
- Result := THandle(LoadLibraryEx(Name, RTLD_LAZY));
-end;
-
-function GetProcAddress(LibHandle : THandle; ProcName : PAnsiChar) : Pointer;
-begin
- Result := GetProcAddressEx(Pointer(LibHandle), ProcName);
-end;
-
-function FreeLibrary(LibHandle : THandle) : Boolean;
-begin
- if LibHandle = 0 then
-   Result := False
-  else
-   Result := FreeLibraryEx(Pointer(LibHandle)) = 0;
-end;
-{$ENDIF}
-
-//ProcName can be case sensitive !!!
-function alProcedure(ProcName : PAnsiChar) : Pointer;
-begin
-Result := NIL;
-if Addr(alGetProcAddress) <> NIL then
- Result := alGetProcAddress(ProcName);
-if result <> NIL then
- exit;
-Result := GetProcAddress(LibHandle, ProcName);
-end;
-
-{$IFDEF ALUT}
-function InitOpenAL(LibName, AlutLibName: String): Boolean;
-{$ELSE}
-function InitOpenAL(LibName: String): Boolean;
-{$ENDIF}
-begin
-  Result       := False;
-  if LibHandle<>0 then FreeLibrary(LibHandle);
-  LibHandle    := LoadLibrary(PChar(LibName));
-{$IFDEF ALUT}
-  if AlutLibHandle<>0 then FreeLibrary(AlutLibHandle);
-  AlutLibHandle    := LoadLibrary(PChar(AlutLibName));
-
-  if (AlutLibHandle <> 0) then
-  begin
-    alutInit:= GetProcAddress(AlutLibHandle, 'alutInit');
-    alutExit:= GetProcAddress(AlutLibHandle, 'alutExit');
-    alutLoadWAVFile:= GetProcAddress(AlutLibHandle, 'alutLoadWAVFile');
-    alutLoadWAVMemory:= GetProcAddress(AlutLibHandle, 'alutLoadWAVMemory');
-    alutUnloadWAV:= GetProcAddress(AlutLibHandle, 'alutUnloadWAV');
-  end;
-{$ENDIF}
-
-  alGetProcAddress := GetProcAddress(LibHandle, 'alGetProcAddress');
-
-  if (LibHandle <> 0) then
-  begin
-
-    alEnable:= alProcedure('alEnable');
-    alDisable:= alProcedure('alDisable');
-    alIsEnabled:= alProcedure('alIsEnabled');
-    alHint:= alProcedure('alHint');
-    alGetBooleanv:= alProcedure('alGetBooleanv');
-    alGetIntegerv:= alProcedure('alGetIntegerv');
-    alGetFloatv:= alProcedure('alGetFloatv');
-    alGetDoublev:= alProcedure('alGetDoublev');
-    alGetString:= alProcedure('alGetString');
-    alGetBoolean:= alProcedure('alGetBoolean');
-    alGetInteger:= alProcedure('alGetInteger');
-    alGetFloat:= alProcedure('alGetFloat');
-    alGetDouble:= alProcedure('alGetDouble');
-    alGetError:= alProcedure('alGetError');
-    alIsExtensionPresent:= alProcedure('alIsExtensionPresent');
-    alGetEnumValue:= alProcedure('alGetEnumValue');
-
-    alListenerf:= alProcedure('alListenerf');
-    alListener3f:= alProcedure('alListener3f');
-    alListenerfv:= alProcedure('alListenerfv');
-
-    alListeneri:= alProcedure('alListeneri');
-    alListener3i:= alProcedure('alListener3i');
-    alListeneriv:= alProcedure('alListeneriv');
-
-    alGetListeneriv:= alProcedure('alGetListeneriv');
-    alGetListenerfv:= alProcedure('alGetListenerfv');
-
-    alGenSources:= alProcedure('alGenSources');
-    alDeleteSources:= alProcedure('alDeleteSources');
-    alIsSource:= alProcedure('alIsSource');
-
-    alSourcei:= alProcedure('alSourcei');
-    alSource3i:= alProcedure('alSource3i');
-    alSourceiv:= alProcedure('alSourceiv');
-
-    alSourcef:= alProcedure('alSourcef');
-    alSource3f:= alProcedure('alSource3f');
-    alSourcefv:= alProcedure('alSourcefv');
-
-    alGetSourcei:= alProcedure('alGetSourcei');
-    alGetSource3i:= alProcedure('alGetSource3i');
-    alGetSourceiv:= alProcedure('alGetSourceiv');
-
-    alGetSourcef:= alProcedure('alGetSourcef');
-    alGetSource3f:= alProcedure('alGetSource3f');
-    alGetSourcefv:= alProcedure('alGetSourcefv');
-
-    alSourcePlay:= alProcedure('alSourcePlay');
-    alSourcePause:=alProcedure('alSourcePause');
-    alSourceStop:= alProcedure('alSourceStop');
-    alSourceRewind:= alProcedure('alSourceRewind');
-    alSourcePlayv:= alProcedure('alSourcePlayv');
-    alSourceStopv:= alProcedure('alSourceStopv');
-    alSourceRewindv:= alProcedure('alSourceRewindv');
-    alSourcePausev:= alProcedure('alSourcePausev');
-    alGenBuffers:= alProcedure('alGenBuffers');
-    alDeleteBuffers:= alProcedure('alDeleteBuffers');
-    alIsBuffer:= alProcedure('alIsBuffer');
-    alBufferData:= alProcedure('alBufferData');
-
-    alBufferi:= alProcedure('alBufferi');
-    alBuffer3i:= alProcedure('alBuffer3i');
-    alBufferiv:= alProcedure('alBufferiv');
-
-    alBufferf:= alProcedure('alBufferf');
-    alBuffer3f:= alProcedure('alBuffer3f');
-    alBufferfv:= alProcedure('alBufferfv');
-
-    alGetBufferi:= alProcedure('alGetBufferi');
-    alGetBuffer3i:= alProcedure('alGetBuffer3i');
-    alGetBufferiv:= alProcedure('alGetBufferiv');
-
-    alGetBufferf:= alProcedure('alGetBufferf');
-    alGetBuffer3f:= alProcedure('alGetBuffer3f');
-    alGetBufferfv:= alProcedure('alGetBufferfv');
-
-    alSourceQueueBuffers:= alProcedure('alSourceQueueBuffers');
-    alSourceUnqueueBuffers:= alProcedure('alSourceUnqueueBuffers');
-    alDistanceModel:= alProcedure('alDistanceModel');
-    alDopplerFactor:= alProcedure('alDopplerFactor');
-    alDopplerVelocity:= alProcedure('alDopplerVelocity');
-    alSpeedOfSound := alProcedure('alSpeedOfSound');
-
-    alcCreateContext:= alProcedure('alcCreateContext');
-    alcMakeContextCurrent:= alProcedure('alcMakeContextCurrent');
-    alcProcessContext:= alProcedure('alcProcessContext');
-    alcSuspendContext:= alProcedure('alcSuspendContext');
-    alcDestroyContext:= alProcedure('alcDestroyContext');
-    alcGetError:= alProcedure('alcGetError');
-    alcGetCurrentContext:= alProcedure('alcGetCurrentContext');
-    alcOpenDevice:= alProcedure('alcOpenDevice');
-    alcCloseDevice:= alProcedure('alcCloseDevice');
-    alcIsExtensionPresent:= alProcedure('alcIsExtensionPresent');
-    alcGetProcAddress:= alProcedure('alcGetProcAddress');
-    alcGetEnumValue:= alProcedure('alcGetEnumValue');
-    alcGetContextsDevice:= alProcedure('alcGetContextsDevice');
-    alcGetString:= alProcedure('alcGetString');
-    alcGetIntegerv:= alProcedure('alcGetIntegerv');
-
-    alcCaptureOpenDevice:= alProcedure('alcCaptureOpenDevice');
-    alcCaptureCloseDevice:= alProcedure('alcCaptureCloseDevice');
-    alcCaptureStart:= alProcedure('alcCaptureStart');
-    alcCaptureStop:= alProcedure('alcCaptureStop');
-    alcCaptureSamples:= alProcedure('alcCaptureSamples');
-
-    Result:=True;
-  end;
-end;
-
-procedure ReadOpenALExtensions;
-begin
-  if (LibHandle <> 0) then
-    begin
-      //EAX Extensions
-      if alIsExtensionPresent('EAX2.0') then
-      begin
-        EAXSet := alProcedure('EAXSet');
-        EAXGet := alProcedure('EAXGet');
-      end;
-      //EAX-RAM Extension
-      if alIsExtensionPresent('EAX-RAM') then
-      begin
-        EAXSetBufferMode := alGetProcAddress('EAXSetBufferMode');
-    		EAXGetBufferMode := alGetProcAddress('EAXGetBufferMode');
-        AL_EAX_RAM_SIZE := alGetEnumValue('AL_EAX_RAM_SIZE');
-        AL_EAX_RAM_FREE := alGetEnumValue('AL_EAX_RAM_FREE');
-        AL_STORAGE_AUTOMATIC := alGetEnumValue('AL_STORAGE_AUTOMATIC');
-        AL_STORAGE_HARDWARE := alGetEnumValue('AL_STORAGE_HARDWARE');
-        AL_STORAGE_ACCESSIBLE := alGetEnumValue('AL_STORAGE_ACCESSIBLE');
-      end;
-      if alcIsExtensionPresent(alcGetContextsDevice(alcGetCurrentContext()), ALC_EXT_EFX_NAME) then
-      begin
-        alGenEffects := alGetProcAddress('alGenEffects');
-		    alDeleteEffects := alGetProcAddress('alDeleteEffects');
-		    alIsEffect := alGetProcAddress('alIsEffect');
-		    alEffecti := alGetProcAddress('alEffecti');
-		    alEffectiv := alGetProcAddress('alEffectiv');
-		    alEffectf := alGetProcAddress('alEffectf');
-		    alEffectfv := alGetProcAddress('alEffectfv');
-		    alGetEffecti := alGetProcAddress('alGetEffecti');
-		    alGetEffectiv := alGetProcAddress('alGetEffectiv');
-		    alGetEffectf := alGetProcAddress('alGetEffectf');
-        alGetEffectfv := alGetProcAddress('alGetEffectfv');
-        alGenFilters := alGetProcAddress('alGenFilters');
-		    alDeleteFilters := alGetProcAddress('alDeleteFilters');
-		    alIsFilter := alGetProcAddress('alIsFilter');
-		    alFilteri := alGetProcAddress('alFilteri');
-		    alFilteriv := alGetProcAddress('alFilteriv');
-		    alFilterf := alGetProcAddress('alFilterf');
-		    alFilterfv := alGetProcAddress('alFilterfv');
-		    alGetFilteri := alGetProcAddress('alGetFilteri');
-		    alGetFilteriv := alGetProcAddress('alGetFilteriv');
-		    alGetFilterf := alGetProcAddress('alGetFilterf');
-		    alGetFilterfv := alGetProcAddress('alGetFilterfv');
-		    alGenAuxiliaryEffectSlots := alGetProcAddress('alGenAuxiliaryEffectSlots');
-		    alDeleteAuxiliaryEffectSlots := alGetProcAddress('alDeleteAuxiliaryEffectSlots');
-		    alIsAuxiliaryEffectSlot := alGetProcAddress('alIsAuxiliaryEffectSlot');
-		    alAuxiliaryEffectSloti := alGetProcAddress('alAuxiliaryEffectSloti');
-		    alAuxiliaryEffectSlotiv := alGetProcAddress('alAuxiliaryEffectSlotiv');
-        alAuxiliaryEffectSlotf := alGetProcAddress('alAuxiliaryEffectSlotf');
-		    alAuxiliaryEffectSlotfv := alGetProcAddress('alAuxiliaryEffectSlotfv');
-		    alGetAuxiliaryEffectSloti := alGetProcAddress('alGetAuxiliaryEffectSloti');
-		    alGetAuxiliaryEffectSlotiv := alGetProcAddress('alGetAuxiliaryEffectSlotiv');
-		    alGetAuxiliaryEffectSlotf := alGetProcAddress('alGetAuxiliaryEffectSlotf');
-		    alGetAuxiliaryEffectSlotfv := alGetProcAddress('alGetAuxiliaryEffectSlotfv');
-      end;
-    end;
-end;
-
-//Internal Alut replacement procedures
-
-procedure alutInit(argc: PALint; argv: array of PALbyte);
-var
-  Context: PALCcontext;
-  Device: PALCdevice;
-begin
-  //Open device
-  Device := alcOpenDevice(nil); // this is supposed to select the "preferred device"
-  //Create context(s)
-  Context := alcCreateContext(Device, nil);
-  //Set active context
-  alcMakeContextCurrent(Context);
-end;
-
-procedure alutExit;
-var
-  Context: PALCcontext;
-  Device: PALCdevice;
-begin
-  //Get active context
-  Context := alcGetCurrentContext;
-  //Get device for active context
-  Device := alcGetContextsDevice(Context);
-  //Release context(s)
-  alcDestroyContext(Context);
-  //Close device
-  alcCloseDevice(Device);
-end;
-
-function LoadWavStream(Stream: Tstream; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint): Boolean;
-var
-  WavHeader: TWavHeader;
-  readname: PAnsiChar;
-  name: string;
-  readint: integer;
-begin
-    Result:=False;
-
-    //Read wav header
-    stream.Read(WavHeader, sizeof(TWavHeader));
-
-    //Determine SampleRate
-    freq:=WavHeader.SampleRate;
-
-    //Detemine waveformat
-    if WavHeader.ChannelNumber = 1 then
-    case WavHeader.BitsPerSample of
-    8: format := AL_FORMAT_MONO8;
-    16: format := AL_FORMAT_MONO16;
-    end;
-
-    if WavHeader.ChannelNumber = 2 then
-    case WavHeader.BitsPerSample of
-    8: format := AL_FORMAT_STEREO8;
-    16: format := AL_FORMAT_STEREO16;
-    end;
-
-    //go to end of wavheader
-    stream.seek((8-44)+12+4+WavHeader.FormatHeaderSize+4,soFromCurrent); //hmm crappy...
-    //loop to rest of wave file data chunks
-    repeat
-      //read chunk name
-      getmem(readname,4);
-      stream.Read(readname^, 4);
-      name:=readname[0]+readname[1]+readname[2]+readname[3];
-      if name='data' then
-      begin
-        //Get the size of the wave data
-        stream.Read(readint,4);
-        size:=readint;
-        if WavHeader.BitsPerSample = 8 then size:=size+1; //fix for 8bit???
-        //Read the actual wave data
-        getmem(data,size);
-        stream.Read(Data^, size);
-
-        //Decode wave data if needed
-        if WavHeader.FormatCode=WAV_IMA_ADPCM then
-        begin
-          //TODO: add code to decompress IMA ADPCM data
-        end;
-        if WavHeader.FormatCode=WAV_MP3 then
-        begin
-          //TODO: add code to decompress MP3 data
-        end;
-        Result:=True;
-      end
-      else
-      begin
-        //Skip unknown chunk(s)
-        stream.Read(readint,4);
-        stream.Position:=stream.Position+readint;
-      end;
-    until stream.Position>=stream.size;
-
-end;
-
-procedure alutLoadWAVFile(fname: string; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint);
-var
-  Stream : TFileStream;
-begin
-  Stream:=TFileStream.Create(fname,$0000);
-  LoadWavStream(Stream, format, data, size, freq, loop);
-  Stream.Free;
-end;
-
-procedure alutLoadWAVMemory(memory: PALbyte; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint);
-var Stream: TMemoryStream;
-begin
-  Stream:=TMemoryStream.Create;
-  Stream.Write(memory,sizeof(memory^));
-  LoadWavStream(Stream, format, data, size, freq, loop);
-  Stream.Free;
-end;
-
-procedure alutUnloadWAV(format: TALenum; data: TALvoid; size: TALsizei; freq: TALsizei);
-begin
-  //Clean up
-  if data<>nil then freemem(data);
-end;
-
-end.

+ 2 - 1
Source/FMX/GLX.SoundRegister.pas → Source/FMX/Soundx.Register.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLXcene https://github.com/glscene
 // The graphics platform GLXcene https://github.com/glscene
 //
 //
-unit GLX.SoundRegister;
+unit Soundx.Register;
 
 
 (* Design time registration code for the Sounds *)
 (* Design time registration code for the Sounds *)
 
 
@@ -9,6 +9,7 @@ interface
 
 
 uses
 uses
   System.Classes,
   System.Classes,
+
   Soundx.SMBASS,
   Soundx.SMBASS,
   Soundx.SMFMOD,
   Soundx.SMFMOD,
   Soundx.SMOpenAL,
   Soundx.SMOpenAL,

+ 1 - 2
Source/FMX/Soundx.SMBASS.pas

@@ -26,8 +26,7 @@ uses
   GLX.Sound,
   GLX.Sound,
   GLX.Scene,
   GLX.Scene,
   GLX.VectorGeometry,
   GLX.VectorGeometry,
-
-  Soundx.BASSImport;
+  BASS.Import;
 
 
 type
 type
 
 

+ 269 - 242
Source/FMX/Soundx.SMFMOD.pas

@@ -5,11 +5,10 @@ unit Soundx.SMFMOD;
 
 
 (*
 (*
   FMOD based sound-manager (http://www.fmod.org/, free for freeware).
   FMOD based sound-manager (http://www.fmod.org/, free for freeware).
-
   Unsupported feature(s) :
   Unsupported feature(s) :
-       sound source velocity
-       looping (sounds are played either once or forever)
-       sound cones
+  sound source velocity
+  looping (sounds are played either once or forever)
+  sound cones
 *)
 *)
 
 
 interface
 interface
@@ -21,8 +20,9 @@ uses
   System.SysUtils,
   System.SysUtils,
 
 
   Soundx.FMOD,
   Soundx.FMOD,
-  Soundx.FMODTypes,
-  Soundx.FMODPresets,
+  FMOD.Types,
+  FMOD.Presets,
+
   GLX.VectorTypes,
   GLX.VectorTypes,
   GLX.Sound,
   GLX.Sound,
   GLX.Scene,
   GLX.Scene,
@@ -30,67 +30,52 @@ uses
 
 
 type
 type
 
 
-	// TgxSMFMOD
-	//
-	TgxSMFMOD = class (TgxSoundManager)
-	   private
-	      
-         FActivated : Boolean;
-         FEAXCapable : Boolean; // not persistent
-
-	   protected
-	      
-	      function DoActivate : Boolean; override;
-	      procedure DoDeActivate; override;
-         procedure NotifyMasterVolumeChange; override;
-         procedure Notify3DFactorsChanged; override;
-         procedure NotifyEnvironmentChanged; override;
-
-         procedure KillSource(aSource : TgxBaseSoundSource); override;
-         procedure UpdateSource(aSource : TgxBaseSoundSource); override;
-         procedure MuteSource(aSource : TgxBaseSoundSource; muted : Boolean); override;
-         procedure PauseSource(aSource : TgxBaseSoundSource; paused : Boolean); override;
-
-         function GetDefaultFrequency(aSource : TgxBaseSoundSource) : Integer;
-
-      public
-	      
-	      constructor Create(AOwner : TComponent); override;
-	      destructor Destroy; override;
-
-         procedure UpdateSources; override;
-
-         function CPUUsagePercent : Single; override;
-         function EAXSupported : Boolean; override;
-
-	   published
-	      
-         property MaxChannels default 32;
-	end;
+  // TgxSMFMOD
+  //
+  TgxSMFMOD = class(TgxSoundManager)
+  private
+    FActivated: Boolean;
+    FEAXCapable: Boolean; // not persistent
+  protected
+    function DoActivate: Boolean; override;
+    procedure DoDeActivate; override;
+    procedure NotifyMasterVolumeChange; override;
+    procedure Notify3DFactorsChanged; override;
+    procedure NotifyEnvironmentChanged; override;
+    procedure KillSource(aSource: TgxBaseSoundSource); override;
+    procedure UpdateSource(aSource: TgxBaseSoundSource); override;
+    procedure MuteSource(aSource: TgxBaseSoundSource; muted: Boolean); override;
+    procedure PauseSource(aSource: TgxBaseSoundSource; paused: Boolean); override;
+    function GetDefaultFrequency(aSource: TgxBaseSoundSource): Integer;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure UpdateSources; override;
+    function CPUUsagePercent: Single; override;
+    function EAXSupported: Boolean; override;
+  published
+    property MaxChannels default 32;
+  end;
 
 
-// ---------------------------------------------------------------------
-// ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 implementation
 implementation
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
-// ---------------------------------------------------------------------
-// ---------------------------------------------------------------------
-
 
 
 type
 type
-   TFMODInfo =  record
-      channel : Integer;
-      pfs : PFSoundSample;
-   end;
-   PFMODInfo = ^TFMODInfo;
+  TFMODInfo = record
+    channel: Integer;
+    pfs: PFSoundSample;
+  end;
 
 
-// VectorToFMODVector
-//
-procedure VectorToFMODVector(const aVector : TgxVector; var aFMODVector : TFSoundVector);
+  PFMODInfo = ^TFMODInfo;
+
+  // VectorToFMODVector
+  //
+procedure VectorToFMODVector(const aVector: TgxVector; var aFMODVector: TFSoundVector);
 begin
 begin
-  aFMODVector.x:=aVector.X;
-  aFMODVector.y:=aVector.Y;
-  aFMODVector.z:=-aVector.Z;
+  aFMODVector.x := aVector.x;
+  aFMODVector.y := aVector.y;
+  aFMODVector.z := -aVector.z;
 end;
 end;
 
 
 // ------------------
 // ------------------
@@ -99,275 +84,317 @@ end;
 
 
 // Create
 // Create
 //
 //
-constructor TgxSMFMOD.Create(AOwner : TComponent);
+constructor TgxSMFMOD.Create(AOwner: TComponent);
 begin
 begin
-	inherited Create(AOwner);
-   MaxChannels:=32;
+  inherited Create(AOwner);
+  MaxChannels := 32;
 end;
 end;
 
 
 // Destroy
 // Destroy
 //
 //
 destructor TgxSMFMOD.Destroy;
 destructor TgxSMFMOD.Destroy;
 begin
 begin
-	inherited Destroy;
+  inherited Destroy;
 end;
 end;
 
 
 // DoActivate
 // DoActivate
 //
 //
-function TgxSMFMOD.DoActivate : Boolean;
+function TgxSMFMOD.DoActivate: Boolean;
 var
 var
-   cap : Cardinal;
+  cap: Cardinal;
 begin
 begin
-   FMOD_Load(nil);
-   {$IFDEF MSWindows}
-   if not FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND) then begin
-      Result:=False;
-      Exit;
-   end;
-  {$ENDIF}
-  {$IFDEF LINUX}
-  if not FSOUND_SetOutput(FSOUND_OUTPUT_ALSA) then begin
-     Result:=False;
-     Exit;
+  FMOD_Load(nil);
+{$IFDEF MSWindows}
+  if not FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND) then
+  begin
+    Result := False;
+    Exit;
   end;
   end;
-  {$ENDIF}
-   if not FSOUND_SetDriver(0) then begin
-      Result:=False;
-      Exit;
-   end;
-   cap:=0;
-   if FSOUND_GetDriverCaps(0, cap) then
-      FEAXCapable:=((cap and (FSOUND_CAPS_EAX2 or FSOUND_CAPS_EAX3))>0)
-   else Assert(False, 'Failed to retrieve driver Caps.');
-   if not FSOUND_Init(OutputFrequency, MaxChannels, 0) then
-      Assert(False, 'FSOUND_Init failed.');
-   FActivated:=True;
-   NotifyMasterVolumeChange;
-   Notify3DFactorsChanged;
-   if Environment<>seDefault then
-      NotifyEnvironmentChanged;
-   Result:=True;
+{$ENDIF}
+{$IFDEF LINUX}
+  if not FSOUND_SetOutput(FSOUND_OUTPUT_ALSA) then
+  begin
+    Result := False;
+    Exit;
+  end;
+{$ENDIF}
+  if not FSOUND_SetDriver(0) then
+  begin
+    Result := False;
+    Exit;
+  end;
+  cap := 0;
+  if FSOUND_GetDriverCaps(0, cap) then
+    FEAXCapable := ((cap and (FSOUND_CAPS_EAX2 or FSOUND_CAPS_EAX3)) > 0)
+  else
+    Assert(False, 'Failed to retrieve driver Caps.');
+  if not FSOUND_Init(OutputFrequency, MaxChannels, 0) then
+    Assert(False, 'FSOUND_Init failed.');
+  FActivated := True;
+  NotifyMasterVolumeChange;
+  Notify3DFactorsChanged;
+  if Environment <> seDefault then
+    NotifyEnvironmentChanged;
+  Result := True;
 end;
 end;
 
 
 // DoDeActivate
 // DoDeActivate
 //
 //
 procedure TgxSMFMOD.DoDeActivate;
 procedure TgxSMFMOD.DoDeActivate;
 begin
 begin
-   FSOUND_StopSound(FSOUND_ALL);
-   FSOUND_Close;
-   FMOD_Unload;
-   FEAXCapable:=False;
+  FSOUND_StopSound(FSOUND_ALL);
+  FSOUND_Close;
+  FMOD_Unload;
+  FEAXCapable := False;
 end;
 end;
 
 
 // NotifyMasterVolumeChange
 // NotifyMasterVolumeChange
 //
 //
 procedure TgxSMFMOD.NotifyMasterVolumeChange;
 procedure TgxSMFMOD.NotifyMasterVolumeChange;
 begin
 begin
-   if FActivated then
-      FSOUND_SetSFXMasterVolume(Round(MasterVolume*255));
+  if FActivated then
+    FSOUND_SetSFXMasterVolume(Round(MasterVolume * 255));
 end;
 end;
 
 
 // Notify3DFactorsChanged
 // Notify3DFactorsChanged
 //
 //
 procedure TgxSMFMOD.Notify3DFactorsChanged;
 procedure TgxSMFMOD.Notify3DFactorsChanged;
 begin
 begin
-   if FActivated then begin
-      FSOUND_3D_SetDistanceFactor(DistanceFactor);
-      FSOUND_3D_SetRolloffFactor(RollOffFactor);
-      FSOUND_3D_SetDopplerFactor(DopplerFactor);
-   end;
+  if FActivated then
+  begin
+    FSOUND_3D_SetDistanceFactor(DistanceFactor);
+    FSOUND_3D_SetRolloffFactor(RollOffFactor);
+    FSOUND_3D_SetDopplerFactor(DopplerFactor);
+  end;
 end;
 end;
 
 
 // NotifyEnvironmentChanged
 // NotifyEnvironmentChanged
 //
 //
 procedure TgxSMFMOD.NotifyEnvironmentChanged;
 procedure TgxSMFMOD.NotifyEnvironmentChanged;
 var
 var
-   SoundRevProps:TFSoundReverbProperties;
+  SoundRevProps: TFSoundReverbProperties;
 begin
 begin
-   if FActivated and EAXSupported then begin
-      case Environment of
-         seDefault :          SoundRevProps := FSOUND_PRESET_GENERIC;
-         sePaddedCell :       SoundRevProps := FSOUND_PRESET_PADDEDCELL;
-         seRoom :             SoundRevProps := FSOUND_PRESET_ROOM;
-         seBathroom :         SoundRevProps := FSOUND_PRESET_BATHROOM;
-         seLivingRoom :       SoundRevProps := FSOUND_PRESET_LIVINGROOM;
-         seStoneroom :        SoundRevProps := FSOUND_PRESET_STONEROOM;
-         seAuditorium :       SoundRevProps := FSOUND_PRESET_AUDITORIUM;
-         seConcertHall :      SoundRevProps := FSOUND_PRESET_CONCERTHALL;
-         seCave :             SoundRevProps := FSOUND_PRESET_CAVE;
-         seArena :            SoundRevProps := FSOUND_PRESET_ARENA;
-         seHangar :           SoundRevProps := FSOUND_PRESET_HANGAR;
-         seCarpetedHallway :  SoundRevProps := FSOUND_PRESET_CARPETTEDHALLWAY;
-         seHallway :          SoundRevProps := FSOUND_PRESET_HALLWAY;
-         seStoneCorridor :    SoundRevProps := FSOUND_PRESET_STONECORRIDOR;
-         seAlley :            SoundRevProps := FSOUND_PRESET_ALLEY;
-         seForest :           SoundRevProps := FSOUND_PRESET_FOREST;
-         seCity :             SoundRevProps := FSOUND_PRESET_CITY;
-         seMountains :        SoundRevProps := FSOUND_PRESET_MOUNTAINS;
-         seQuarry :           SoundRevProps := FSOUND_PRESET_QUARRY;
-         sePlain :            SoundRevProps := FSOUND_PRESET_PLAIN;
-         seParkingLot :       SoundRevProps := FSOUND_PRESET_PARKINGLOT;
-         seSewerPipe :        SoundRevProps := FSOUND_PRESET_SEWERPIPE;
-         seUnderWater :       SoundRevProps := FSOUND_PRESET_UNDERWATER;
-         seDrugged :          SoundRevProps := FSOUND_PRESET_DRUGGED;
-         seDizzy :            SoundRevProps := FSOUND_PRESET_DIZZY;
-         sePsychotic :        SoundRevProps := FSOUND_PRESET_PSYCHOTIC;
-      else
-         Assert(False);
-      end;
-      FSOUND_Reverb_SetProperties(SoundRevProps);
-   end;
+  if FActivated and EAXSupported then
+  begin
+    case Environment of
+      seDefault:
+        SoundRevProps := FSOUND_PRESET_GENERIC;
+      sePaddedCell:
+        SoundRevProps := FSOUND_PRESET_PADDEDCELL;
+      seRoom:
+        SoundRevProps := FSOUND_PRESET_ROOM;
+      seBathroom:
+        SoundRevProps := FSOUND_PRESET_BATHROOM;
+      seLivingRoom:
+        SoundRevProps := FSOUND_PRESET_LIVINGROOM;
+      seStoneroom:
+        SoundRevProps := FSOUND_PRESET_STONEROOM;
+      seAuditorium:
+        SoundRevProps := FSOUND_PRESET_AUDITORIUM;
+      seConcertHall:
+        SoundRevProps := FSOUND_PRESET_CONCERTHALL;
+      seCave:
+        SoundRevProps := FSOUND_PRESET_CAVE;
+      seArena:
+        SoundRevProps := FSOUND_PRESET_ARENA;
+      seHangar:
+        SoundRevProps := FSOUND_PRESET_HANGAR;
+      seCarpetedHallway:
+        SoundRevProps := FSOUND_PRESET_CARPETTEDHALLWAY;
+      seHallway:
+        SoundRevProps := FSOUND_PRESET_HALLWAY;
+      seStoneCorridor:
+        SoundRevProps := FSOUND_PRESET_STONECORRIDOR;
+      seAlley:
+        SoundRevProps := FSOUND_PRESET_ALLEY;
+      seForest:
+        SoundRevProps := FSOUND_PRESET_FOREST;
+      seCity:
+        SoundRevProps := FSOUND_PRESET_CITY;
+      seMountains:
+        SoundRevProps := FSOUND_PRESET_MOUNTAINS;
+      seQuarry:
+        SoundRevProps := FSOUND_PRESET_QUARRY;
+      sePlain:
+        SoundRevProps := FSOUND_PRESET_PLAIN;
+      seParkingLot:
+        SoundRevProps := FSOUND_PRESET_PARKINGLOT;
+      seSewerPipe:
+        SoundRevProps := FSOUND_PRESET_SEWERPIPE;
+      seUnderWater:
+        SoundRevProps := FSOUND_PRESET_UNDERWATER;
+      seDrugged:
+        SoundRevProps := FSOUND_PRESET_DRUGGED;
+      seDizzy:
+        SoundRevProps := FSOUND_PRESET_DIZZY;
+      sePsychotic:
+        SoundRevProps := FSOUND_PRESET_PSYCHOTIC;
+    else
+      Assert(False);
+    end;
+    FSOUND_Reverb_SetProperties(SoundRevProps);
+  end;
 end;
 end;
 
 
 // KillSource
 // KillSource
 //
 //
-procedure TgxSMFMOD.KillSource(aSource : TgxBaseSoundSource);
+procedure TgxSMFMOD.KillSource(aSource: TgxBaseSoundSource);
 var
 var
-   p : PFMODInfo;
+  p: PFMODInfo;
 begin
 begin
-   if aSource.ManagerTag<>0 then begin
-      p:=PFMODInfo(aSource.ManagerTag);
-      aSource.ManagerTag:=0;
-      if p.channel<>-1 then
-         if not FSOUND_StopSound(p.channel) then
-            Assert(False, IntToStr(Integer(p)));
-      FSOUND_Sample_Free(p.pfs);
-      FreeMem(p);
-   end;
+  if aSource.ManagerTag <> 0 then
+  begin
+    p := PFMODInfo(aSource.ManagerTag);
+    aSource.ManagerTag := 0;
+    if p.channel <> -1 then
+      if not FSOUND_StopSound(p.channel) then
+        Assert(False, IntToStr(Integer(p)));
+    FSOUND_Sample_Free(p.pfs);
+    FreeMem(p);
+  end;
 end;
 end;
 
 
 // UpdateSource
 // UpdateSource
 //
 //
-procedure TgxSMFMOD.UpdateSource(aSource : TgxBaseSoundSource);
+procedure TgxSMFMOD.UpdateSource(aSource: TgxBaseSoundSource);
 var
 var
-   p : PFMODInfo;
-   objPos, objVel : TgxVector;
-   position, velocity : TFSoundVector;
+  p: PFMODInfo;
+  objPos, objVel: TgxVector;
+  position, velocity: TFSoundVector;
 begin
 begin
-   if (sscSample in aSource.Changes) then
-   begin
-     KillSource(aSource);
-   end;
-
-   if (aSource.Sample=nil) or (aSource.Sample.Data=nil) or
-      (aSource.Sample.Data.WAVDataSize=0) then Exit;
-   if aSource.ManagerTag<>0 then begin
-      p:=PFMODInfo(aSource.ManagerTag);
-      if not FSOUND_IsPlaying(p.channel) then begin
-         p.channel:=-1;
-         aSource.Free;
-         Exit;
-      end;
-   end else begin
-      p:=AllocMem(SizeOf(TFMODInfo));
-      p.channel:=-1;
-      p.pfs:=FSOUND_Sample_Load(FSOUND_FREE, aSource.Sample.Data.WAVData,
-                                FSOUND_HW3D+FSOUND_LOOP_OFF+FSOUND_LOADMEMORY,
-                                0, aSource.Sample.Data.WAVDataSize);
-
-      if aSource.NbLoops>1 then
-         FSOUND_Sample_SetMode(p.pfs, FSOUND_LOOP_NORMAL);
-      FSOUND_Sample_SetMinMaxDistance(p.pfs, aSource.MinDistance, aSource.MaxDistance);
-      aSource.ManagerTag:=Integer(p);
-   end;
-   if aSource.Origin<>nil then begin
-      objPos:=aSource.Origin.AbsolutePosition;
-      objVel:=NullHmgVector;
-   end else begin
-      objPos:=NullHmgPoint;
-      objVel:=NullHmgVector;
-   end;
-   VectorToFMODVector(objPos, position);
-   VectorToFMODVector(objVel, velocity);
-   if p.channel=-1 then
-      p.channel:=FSOUND_PlaySound(FSOUND_FREE, p.pfs);
-   if p.channel<>-1 then begin
-      FSOUND_3D_SetAttributes(p.channel, @position, @velocity);
-      FSOUND_SetVolume(p.channel, Round(aSource.Volume*255));
-      FSOUND_SetMute(p.channel, aSource.Mute);
-      FSOUND_SetPaused(p.channel, aSource.Pause);
-      FSOUND_SetPriority(p.channel, aSource.Priority);
-      if aSource.Frequency>0 then
-         FSOUND_SetFrequency(p.channel, aSource.Frequency);
-   end else aSource.Free;
-
-   inherited UpdateSource(aSource);
+  if (sscSample in aSource.Changes) then
+  begin
+    KillSource(aSource);
+  end;
+
+  if (aSource.Sample = nil) or (aSource.Sample.Data = nil) or (aSource.Sample.Data.WAVDataSize = 0)
+  then
+    Exit;
+  if aSource.ManagerTag <> 0 then
+  begin
+    p := PFMODInfo(aSource.ManagerTag);
+    if not FSOUND_IsPlaying(p.channel) then
+    begin
+      p.channel := -1;
+      aSource.Free;
+      Exit;
+    end;
+  end
+  else
+  begin
+    p := AllocMem(SizeOf(TFMODInfo));
+    p.channel := -1;
+    p.pfs := FSOUND_Sample_Load(FSOUND_FREE, aSource.Sample.Data.WAVData,
+      FSOUND_HW3D + FSOUND_LOOP_OFF + FSOUND_LOADMEMORY, 0, aSource.Sample.Data.WAVDataSize);
+
+    if aSource.NbLoops > 1 then
+      FSOUND_Sample_SetMode(p.pfs, FSOUND_LOOP_NORMAL);
+    FSOUND_Sample_SetMinMaxDistance(p.pfs, aSource.MinDistance, aSource.MaxDistance);
+    aSource.ManagerTag := Integer(p);
+  end;
+  if aSource.Origin <> nil then
+  begin
+    objPos := aSource.Origin.AbsolutePosition;
+    objVel := NullHmgVector;
+  end
+  else
+  begin
+    objPos := NullHmgPoint;
+    objVel := NullHmgVector;
+  end;
+  VectorToFMODVector(objPos, position);
+  VectorToFMODVector(objVel, velocity);
+  if p.channel = -1 then
+    p.channel := FSOUND_PlaySound(FSOUND_FREE, p.pfs);
+  if p.channel <> -1 then
+  begin
+    FSOUND_3D_SetAttributes(p.channel, @position, @velocity);
+    FSOUND_SetVolume(p.channel, Round(aSource.Volume * 255));
+    FSOUND_SetMute(p.channel, aSource.Mute);
+    FSOUND_SetPaused(p.channel, aSource.Pause);
+    FSOUND_SetPriority(p.channel, aSource.Priority);
+    if aSource.Frequency > 0 then
+      FSOUND_SetFrequency(p.channel, aSource.Frequency);
+  end
+  else
+    aSource.Free;
+
+  inherited UpdateSource(aSource);
 end;
 end;
 
 
 // MuteSource
 // MuteSource
 //
 //
-procedure TgxSMFMOD.MuteSource(aSource : TgxBaseSoundSource; muted : Boolean);
+procedure TgxSMFMOD.MuteSource(aSource: TgxBaseSoundSource; muted: Boolean);
 var
 var
-   p : PFMODInfo;
+  p: PFMODInfo;
 begin
 begin
-   if aSource.ManagerTag<>0 then begin
-      p:=PFMODInfo(aSource.ManagerTag);
-      FSOUND_SetMute(p.channel, muted);
-   end;
+  if aSource.ManagerTag <> 0 then
+  begin
+    p := PFMODInfo(aSource.ManagerTag);
+    FSOUND_SetMute(p.channel, muted);
+  end;
 end;
 end;
 
 
 // PauseSource
 // PauseSource
 //
 //
-procedure TgxSMFMOD.PauseSource(aSource : TgxBaseSoundSource; paused : Boolean);
+procedure TgxSMFMOD.PauseSource(aSource: TgxBaseSoundSource; paused: Boolean);
 var
 var
-   p : PFMODInfo;
+  p: PFMODInfo;
 begin
 begin
-   if aSource.ManagerTag<>0 then begin
-      p:=PFMODInfo(aSource.ManagerTag);
-      FSOUND_SetPaused(p.channel, paused);
-   end;
+  if aSource.ManagerTag <> 0 then
+  begin
+    p := PFMODInfo(aSource.ManagerTag);
+    FSOUND_SetPaused(p.channel, paused);
+  end;
 end;
 end;
 
 
 // UpdateSources
 // UpdateSources
 //
 //
 procedure TgxSMFMOD.UpdateSources;
 procedure TgxSMFMOD.UpdateSources;
 var
 var
-   objPos, objVel, objDir, objUp : TgxVector;
-   position, velocity, fwd, top : TFSoundVector;
+  objPos, objVel, objDir, objUp: TgxVector;
+  position, velocity, fwd, top: TFSoundVector;
 begin
 begin
-   // update listener
-   ListenerCoordinates(objPos, objVel, objDir, objUp);
-   VectorToFMODVector(objPos, position);
-   VectorToFMODVector(objVel, velocity);
-   VectorToFMODVector(objDir, fwd);
-   VectorToFMODVector(objUp, top);
-   FSOUND_3D_Listener_SetAttributes(@position, @velocity,
-                                    fwd.x, fwd.y, fwd.z,
-                                    top.x, top.y, top.z);
-   // update sources
-   inherited;
-   FSOUND_Update;
+  // update listener
+  ListenerCoordinates(objPos, objVel, objDir, objUp);
+  VectorToFMODVector(objPos, position);
+  VectorToFMODVector(objVel, velocity);
+  VectorToFMODVector(objDir, fwd);
+  VectorToFMODVector(objUp, top);
+  FSOUND_3D_Listener_SetAttributes(@position, @velocity, fwd.x, fwd.y, fwd.z, top.x, top.y, top.z);
+  // update sources
+  inherited;
+  FSOUND_Update;
 end;
 end;
 
 
 // CPUUsagePercent
 // CPUUsagePercent
 //
 //
-function TgxSMFMOD.CPUUsagePercent : Single;
+function TgxSMFMOD.CPUUsagePercent: Single;
 begin
 begin
-   Result:=FSOUND_GetCPUUsage;
+  Result := FSOUND_GetCPUUsage;
 end;
 end;
 
 
 // EAXSupported
 // EAXSupported
 //
 //
-function TgxSMFMOD.EAXSupported : Boolean;
+function TgxSMFMOD.EAXSupported: Boolean;
 begin
 begin
-   Result:=FEAXCapable;
+  Result := FEAXCapable;
 end;
 end;
 
 
 // GetDefaultFrequency
 // GetDefaultFrequency
 //
 //
-function TgxSMFMOD.GetDefaultFrequency(aSource : TgxBaseSoundSource): integer;
+function TgxSMFMOD.GetDefaultFrequency(aSource: TgxBaseSoundSource): Integer;
 var
 var
-   p : PFMODInfo;
-   dfreq, dVol, dPan, dPri : Integer;
+  p: PFMODInfo;
+  dfreq, dVol, dPan, dPri: Integer;
 begin
 begin
-   try
-      p:=PFMODInfo(aSource.ManagerTag);
-      FSOUND_Sample_GetDefaults(p.pfs, dFreq, dVol, dPan, dPri);
-      Result:=dFreq;
-   except
-      Result:=-1;
-   end;
+  try
+    p := PFMODInfo(aSource.ManagerTag);
+    FSOUND_Sample_GetDefaults(p.pfs, dfreq, dVol, dPan, dPri);
+    Result := dfreq;
+  except
+    Result := -1;
+  end;
 end;
 end;
 
 
 end.
 end.
-

+ 2 - 1
Source/FMX/Soundx.SMOpenAL.pas

@@ -29,7 +29,8 @@ uses
   FMX.Forms,
   FMX.Forms,
   FMX.Dialogs,
   FMX.Dialogs,
 
 
-  Soundx.OpenALImport,  // al, alut, alTypes
+  OpenAL.Import,  // al, alut, alTypes
+
   GLX.VectorTypes,
   GLX.VectorTypes,
   GLX.VectorGeometry,
   GLX.VectorGeometry,
   GLX.Sound,
   GLX.Sound,

+ 1 - 1
Source/Sounds.BASS.pas → Source/VCL/Sounds.BASS.pas

@@ -24,7 +24,7 @@ uses
   GLS.VectorTypes,
   GLS.VectorTypes,
   GLS.VectorGeometry,
   GLS.VectorGeometry,
 
 
-  Sounds.BASSImport;
+  BASS.Import;
 
 
 type
 type
   TBASS3DAlgorithm = (algDefault, algOff, algFull, algLight);
   TBASS3DAlgorithm = (algDefault, algOff, algFull, algLight);

+ 3 - 3
Source/Sounds.FMOD.pas → Source/VCL/Sounds.FMOD.pas

@@ -24,9 +24,9 @@ uses
   GLS.VectorTypes,
   GLS.VectorTypes,
   GLS.VectorGeometry,
   GLS.VectorGeometry,
 
 
-  Sounds.FMODImport,
-  Sounds.FMODTypes,
-  Sounds.FMODPresets;
+  FMOD.Import,
+  FMOD.Types,
+  FMOD.Presets;
 
 
 type
 type
 
 

+ 1 - 1
Source/Sounds.OpenAL.pas → Source/VCL/Sounds.OpenAL.pas

@@ -66,7 +66,7 @@ implementation
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 
 
 uses
 uses
-  Sounds.OpenALImport {al, alut, alTypes};
+  OpenAL.Import {al, alut, alTypes};
 
 
 // checks for an error and raises an exception if necessary
 // checks for an error and raises an exception if necessary
 procedure CheckOpenALError;
 procedure CheckOpenALError;

+ 1 - 1
Source/Sounds.SoundRegister.pas → Source/VCL/Sounds.Register.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit Sounds.SoundRegister;
+unit Sounds.Register;
 
 
 (* Design time registration code for the Sounds *)
 (* Design time registration code for the Sounds *)
 
 

+ 0 - 0
Source/Sounds.WaveOut.pas → Source/VCL/Sounds.WaveOut.pas