Dear community,
The time has come for us to plug a hole in blitzmax and offer 100% ROBUST FMOD support! With FMOD (which is free to use unless you're selling your game, then it's a paltry $100)
Why FMOD? well it gives us OXM, which none of the other sound libraries are actually able to do, this is absolutely essential for any indie/shareware developer! you're looking at the highest quality with the smallest download size - and cross platform. Thats just for starters!
With FMOD all of us can use the industry quality OXM format which is also used in the nintendo DS! With FMOD we're able to apply a wide range of absolutely WICKED sound effects from echoes and more!
Need I remind you it's totally cross platform and bug free? It's also far higher performance than max's native sound (not criticising simon as this is heavily optimised)
All we need to do is get together and do it! I know once we get started it'll be another feather in Blitzmax's CAP!
To start us off:
http://www.fmod.org/ << find fmod and dll's here
http://drago-tech.net/FmodWin32.zip << drago's windows fmod
http://drago-tech.net/FmodLinux.tar.gz << drago's linux fmod
But no mac fmod yet guys and the above ones are complete.
Also we've got a contribution from Tea Virus - a full set of structs. He says: "Mostly untested but all the commands/consts/structs are there." :
Like the SDL thread, this community project is designed for the whole community to benefit from. Hopefully we'll see help from a couple of guys including BRL if they can - as they have experience using FMOD too!
Good luck everyone!
The time has come for us to plug a hole in blitzmax and offer 100% ROBUST FMOD support! With FMOD (which is free to use unless you're selling your game, then it's a paltry $100)
Why FMOD? well it gives us OXM, which none of the other sound libraries are actually able to do, this is absolutely essential for any indie/shareware developer! you're looking at the highest quality with the smallest download size - and cross platform. Thats just for starters!
With FMOD all of us can use the industry quality OXM format which is also used in the nintendo DS! With FMOD we're able to apply a wide range of absolutely WICKED sound effects from echoes and more!
Need I remind you it's totally cross platform and bug free? It's also far higher performance than max's native sound (not criticising simon as this is heavily optimised)
All we need to do is get together and do it! I know once we get started it'll be another feather in Blitzmax's CAP!
To start us off:
http://www.fmod.org/ << find fmod and dll's here
http://drago-tech.net/FmodWin32.zip << drago's windows fmod
http://drago-tech.net/FmodLinux.tar.gz << drago's linux fmod
But no mac fmod yet guys and the above ones are complete.
Also we've got a contribution from Tea Virus - a full set of structs. He says: "Mostly untested but all the commands/consts/structs are there." :
Module pub.fmod Import "libfmod.a" 'FSOUND_CAPS Const FSOUND_CAPS_HARDWARE =$1 ' This driver supports hardware accelerated 3d sound. Const FSOUND_CAPS_EAX2 =$2 ' This driver supports EAX 2 reverb. Const FSOUND_CAPS_EAX3 =$10 ' This driver supports EAX 3 reverb. 'FSOUND_CDPLAYMODES Const FSOUND_CD_PLAYCONTINUOUS =0 ' Starts from the current track And plays To End of CD. Const FSOUND_CD_PLAYONCE =1 ' Plays the specified track Then stops. Const FSOUND_CD_PLAYLOOPED =2 ' Plays the specified track looped, Forever Until stopped manually. Const FSOUND_CD_PLAYRANDOM =3 ' Plays tracks in random order 'FSOUND_DSP_PRIORITIES Const FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT =0 ' DSP CLEAR unit - done first Const FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT =100 ' DSP SFX unit - done second Const FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT =200 ' DSP MUSIC unit - done third Const FSOUND_DSP_DEFAULTPRIORITY_USER =300 ' User priority, use this as reference For your own DSP units Const FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT =900 ' This reads data For FSOUND_DSP_GetSpectrum, so it comes after user units Const FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT =1000 ' DSP CLIP And COPY unit - last 'FSOUND_MODES Const FSOUND_LOOP_OFF =$00000001 ' For non looping samples. Const FSOUND_LOOP_NORMAL =$00000002 ' For forward looping samples. Const FSOUND_LOOP_BIDI =$00000004 ' For bidirectional looping samples. (no effect If in hardware). Const FSOUND_8BITS =$00000008 ' For 8 bit samples. Const FSOUND_16BITS =$00000010 ' For 16 bit samples. Const FSOUND_MONO =$00000020 ' For mono samples. Const FSOUND_STEREO =$00000040 ' For stereo samples. Const FSOUND_UNSIGNED =$00000080 ' For user created source data containing unsigned samples. Const FSOUND_SIGNED =$00000100 ' For user created source data containing signed data. Const FSOUND_DELTA =$00000200 ' For user created source data stored as delta values. Const FSOUND_IT214 =$00000400 ' For user created source data stored using IT214 compression. Const FSOUND_IT215 =$00000800 ' For user created source data stored using IT215 compression. Const FSOUND_HW3D =$00001000 ' Attempts To make samples use 3d hardware acceleration. (If the card supports it) Const FSOUND_2D =$00002000 ' Tells software (Not hardware) based sample Not To be included in 3d processing. Const FSOUND_STREAMABLE =$00004000 ' For a streamimg sound where you feed the data To it. Const FSOUND_LOADMEMORY =$00008000 ' "name" will be interpreted as a pointer To data For streaming And samples. Const FSOUND_LOADRAW =$00010000 ' Will ignore file format And treat as raw pcm. Const FSOUND_MPEGACCURATE =$00020000 ' For FSOUND_Stream_Open - For accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime. WARNING, see FSOUND_Stream_Open For inital opening time performance issues. Const 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 Const FSOUND_HW2D =$00080000 ' 2D hardware sounds. allows hardware specific effects Const 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 Const FSOUND_MPEGHALFRATE =$00200000 ' For FMODCE only - decodes mpeg streams using a Lower quality decode, but faster execution Const FSOUND_IMAADPCM =$00400000 ' Contents are stored compressed as IMA ADPCM Const FSOUND_VAG =$00800000 ' For PS2 only - Contents are compressed as Sony VAG format Const FSOUND_NONBLOCKING =$01000000 ' For FSOUND_Stream_Open/FMUSIC_LoadSong - Causes stream Or music To open in the background And Not block the foreground app. See FSOUND_Stream_GetOpenState Or FMUSIC_GetOpenState To determine when it IS ready. Const FSOUND_GCADPCM =$02000000 ' For Gamecube only - Contents are compressed as Gamecube DSP-ADPCM format Const FSOUND_MULTICHANNEL =$04000000 ' For PS2 And Gamecube only - Contents are interleaved into a multi-channel (more than stereo) format Const FSOUND_USECORE0 =$08000000 ' For PS2 only - Sample/Stream is forced To use hardware voices 00-23 Const FSOUND_USECORE1 =$10000000 ' For PS2 only - Sample/Stream is forced To use hardware voices 24-47 Const 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_IGNORETAGS =$40000000 ' Skips id3v2 etc tag checks when opening a stream, To reduce seek/read overhead when opening files (helps with CD performance) Const FSOUND_STREAM_NET =$80000000 ' Specifies an internet stream */ Const FSOUND_NORMAL =(FSOUND_16BITS | FSOUND_SIGNED | FSOUND_MONO) Rem FSOUND_REVERB_PRESETS 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, 0x33f } 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 } 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 } FSOUND_PRESET_PS2_ROOM {1, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_STUDIO_A {2, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_STUDIO_B {3, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_STUDIO_C {4, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_HALL {5, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_SPACE {6, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_ECHO {7, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_DELAY {8, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } FSOUND_PRESET_PS2_PIPE {9, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } End Rem Type FSOUND_REVERB_PROPERTIES Field Environment ' 0 , 25 , 0 , sets all listener properties (WIN32/PS2 only) Field EnvSize:Float ' 1.0 , 100.0 , 7.5 , environment size in meters (WIN32 only) Field EnvDiffusion:Float ' 0.0 , 1.0 , 1.0 , environment diffusion (WIN32/XBOX) Field Room ' -10000, 0 , -1000 , room effect level (at Mid frequencies) (WIN32/XBOX/PS2) Field RoomHF ' -10000, 0 , -100 , relative room effect level at high frequencies (WIN32/XBOX) Field RoomLF ' -10000, 0 , 0 , relative room effect level at low frequencies (WIN32 only) Field DecayTime:Float ' 0.1 , 20.0 , 1.49 , reverberation decay time at Mid frequencies (WIN32/XBOX) Field DecayHFRatio:Float ' 0.1 , 2.0 , 0.83 , high-frequency To Mid-frequency decay time ratio (WIN32/XBOX) Field DecayLFRatio:Float ' 0.1 , 2.0 , 1.0 , low-frequency To Mid-frequency decay time ratio (WIN32 only) Field Reflections ' -10000, 1000 , -2602 , early reflections level relative To room effect (WIN32/XBOX) Field ReflectionsDelay:Float ' 0.0 , 0.3 , 0.007 , initial reflection Delay time (WIN32/XBOX) Field ReflectionsPan:Float[3] ' , , [0,0,0], early reflections panning vector (WIN32 only) Field Reverb ' -10000, 2000 , 200 , late reverberation level relative To room effect (WIN32/XBOX) Field ReverbDelay:Float ' 0.0 , 0.1 , 0.011 , late reverberation Delay time relative To initial reflection (WIN32/XBOX) Field ReverbPan:Float[3] ' , , [0,0,0], late reverberation panning vector (WIN32 only) Field EchoTime:Float ' .075 , 0.25 , 0.25 , echo time (WIN32/PS2 only. PS2 = Delay time For ECHO/Delay modes only) Field EchoDepth:Float ' 0.0 , 1.0 , 0.0 , echo depth (WIN32/PS2 only. PS2 = Feedback level For ECHO mode only) Field ModulationTime:Float ' 0.04 , 4.0 , 0.25 , modulation time (WIN32 only) Field ModulationDepth:Float ' 0.0 , 1.0 , 0.0 , modulation depth (WIN32 only) Field AirAbsorptionHF:Float ' -100 , 0.0 , -5.0 , change in level per meter at high frequencies (WIN32 only) Field HFReference:Float ' 1000.0, 20000 , 5000.0 , reference high frequency (hz) (WIN32/XBOX) Field LFReference:Float ' 20.0 , 1000.0, 250.0 , reference low frequency (hz) (WIN32 only) Field RoomRolloffFactor:Float ' 0.0 , 10.0 , 0.0 , like FSOUND_3D_SetRolloffFactor but For room effect (WIN32/XBOX) Field Diffusion:Float ' 0.0 , 100.0 , 100.0 , Value that controls the echo density in the late reverberation decay. (XBOX only) Field Density:Float ' 0.0 , 100.0 , 100.0 , Value that controls the modal density in the late reverberation decay (XBOX only) Field Flags ' FSOUND_REVERB_FLAGS - modifies the behavior of above properties (WIN32/PS2 only) End Type Type FSOUND_REVERB_CHANNELPROPERTIES Field Direct ' -10000, 1000, 0, direct path level (at low And Mid frequencies) (WIN32/XBOX) Field DirectHF ' -10000, 0, 0, relative direct path level at high frequencies (WIN32/XBOX) Field Room ' -10000, 1000, 0, room effect level (at low And Mid frequencies) (WIN32/XBOX/PS2) Field RoomHF ' -10000, 0, 0, relative room effect level at high frequencies (WIN32/XBOX) Field Obstruction ' -10000, 0, 0, main obstruction control (attenuation at high frequencies) (WIN32/XBOX) Field ObstructionLFRatio:Float ' 0.0, 1.0, 0.0, obstruction low-frequency level re. main control (WIN32/XBOX) Field Occlusion ' -10000, 0, 0, main occlusion control (attenuation at high frequencies) (WIN32/XBOX) Field OcclusionLFRatio:Float ' 0.0, 1.0, 0.25, occlusion low-frequency level re. main control (WIN32/XBOX) Field OcclusionRoomRatio:Float ' 0.0, 10.0, 1.5, relative occlusion control For room effect (WIN32) Field OcclusionDirectRatio:Float ' 0.0, 10.0, 1.0, relative occlusion control For direct path (WIN32) Field Exclusion ' -10000, 0, 0, main exlusion control (attenuation at high frequencies) (WIN32) Field ExclusionLFRatio:Float ' 0.0, 1.0, 1.0, exclusion low-frequency level re. main control (WIN32) Field OutsideVolumeHF ' -10000, 0, 0, outside sound cone level at high frequencies (WIN32) Field DopplerFactor:Float ' 0.0, 10.0, 0.0, like DS3D flDopplerFactor but per source (WIN32) Field RolloffFactor:Float ' 0.0, 10.0, 0.0, like DS3D flRolloffFactor but per source (WIN32) Field RoomRolloffFactor:Float ' 0.0, 10.0, 0.0, like DS3D flRolloffFactor but For room effect (WIN32/XBOX) Field AirAbsorptionFactor:Float ' 0.0, 10.0, 1.0, multiplies AirAbsorptionHF member of FSOUND_REVERB_PROPERTIES (WIN32) Field Flags ' FSOUND_REVERB_CHANNELFLAGS - modifies the behavior of properties (WIN32) End Type Type FSOUND_TOC_TAG Field name[4] ' The String "TOC", just in Case this structure is accidentally treated as a String */ Field numtracks ' The number of tracks on the CD Field minoff[100] ' The start offset of each track in minutes Field sec[100] ' The start offset of each track in seconds Field frame[100] ' The start offset of each track in frames End Type 'FSOUND_MISC_VALUES Const FSOUND_FREE =-1 ' value To play on any free channel, Or To allocate a sample in a free sample slot. Const FSOUND_UNMANAGED =-2 ' value To allocate a sample that is Not managed by FSOUND Or placed in a sample slot. Const FSOUND_ALL =-3 ' For a channel index , this flag will affect ALL channels available! Not supported by every function. Const FSOUND_STEREOPAN =-1 ' value For FSOUND_SetPan so that stereo sounds are Not played at half volume. See FSOUND_SetPan For more on this. Const FSOUND_SYSTEMCHANNEL =-1000 ' special 'channel' ID for all channel based functions that want to alter the global FSOUND software mixing output channel Const FSOUND_SYSTEMSAMPLE =-1000 ' special 'sample' ID for all sample based functions that want to alter the global FSOUND software mixing output sample 'FSOUND_MIXERTYPES Const FSOUND_MIXER_AUTODETECT =1 ' CE/PS2/GC Only - Non interpolating/low quality mixer. Const FSOUND_MIXER_BLENDMODE =2 ' Removed / obsolete. Const FSOUND_MIXER_MMXP5 =3 ' Removed / obsolete. Const FSOUND_MIXER_MMXP6 =4 ' Removed / obsolete. Const FSOUND_MIXER_QUALITY_AUTODETECT =5 Const FSOUND_MIXER_QUALITY_FPU =6 ' Win32/Linux only - Interpolating/volume ramping FPU mixer. Const FSOUND_MIXER_QUALITY_MMXP5 =7 ' Win32/Linux only - Interpolating/volume ramping P5 MMX mixer. Const FSOUND_MIXER_QUALITY_MMXP6 =8 ' Win32/Linux only - Interpolating/volume ramping ppro+ MMX mixer. Const FSOUND_MIXER_MONO =9 ' CE/PS2/GC only - MONO non interpolating/low quality mixer. For speed Const FSOUND_MIXER_QUALITY_MONO =10 ' CE/PS2/GC only - MONO Interpolating mixer. For speed Const FSOUND_MIXER_MAX =11 'FSOUND_OUTPUTTYPES Const FSOUND_OUTPUT_NOSOUND =1 ' NoSound driver, all calls To this succeed but do nothing. Const FSOUND_OUTPUT_WINMM =2 ' Windows Multimedia driver. Const FSOUND_OUTPUT_DSOUND =3 ' DirectSound driver. You need this To get EAX2 Or EAX3 support, Or FX api support. Const FSOUND_OUTPUT_A3D =4 ' A3D driver. Const FSOUND_OUTPUT_OSS =5 ' Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers. Const FSOUND_OUTPUT_ESD =6 ' Linux/Unix ESD (Enlightment Sound Daemon) driver. Const FSOUND_OUTPUT_ALSA =7 ' Linux Alsa driver. Const FSOUND_OUTPUT_ASIO =8 ' Low latency ASIO driver Const FSOUND_OUTPUT_XBOX =9 ' Xbox driver Const FSOUND_OUTPUT_PS2 =10 ' PlayStation 2 driver Const FSOUND_OUTPUT_MAC =11 ' Mac SoundManager driver Const FSOUND_OUTPUT_GC =12 ' Gamecube driver Const FSOUND_OUTPUT_NOSOUND_NONREALTIME =13 ' This is the same as nosound, but the sound generation is driven by FSOUND_Update Extern "win32" 'Pre Initialization/Initialization/Enumeration Functions Function FSOUND_Init( mixrate,maxsoftwarechannels,flags ) = "FSOUND_Init@12" Function FSOUND_Close() = "FSOUND_Close@0" Function FSOUND_File_SetCallbacks( useropen,userclose,userread,userseek,usertell ) = "FSOUND_File_SetCallbacks@20" Function FSOUND_SetBufferSize( len_ms ) = "FSOUND_SetBufferSize@4" Function FSOUND_SetDriver( driver ) = "FSOUND_SetDriver@4" Function FSOUND_SetHWND( hwnd:Byte Ptr ) = "FSOUND_SetHWND@4" Function FSOUND_SetMaxHardwareChannels( maxchn ) = "FSOUND_SetMaxHardwareChannels@4" Function FSOUND_SetMemorySystem( poolmem:Byte Ptr,poollen,useralloc,userrealloc,userfree ) = "FSOUND_SetMemorySystem@20" Function FSOUND_SetMinHardwareChannels( minchn ) = "FSOUND_SetMinHardwareChannels@4" Function FSOUND_SetMixer( mixer ) = "FSOUND_SetMixer@4" Function FSOUND_SetOutput( outputtype ) = "FSOUND_SetOutput@4" 'Global run-time update functions Function FSOUND_SetPanSeperation( pansep ) = "FSOUND_SetPanSeperation@4" Function FSOUND_SetSFXMasterVolume( volume ) = "FSOUND_SetSFXMasterVolume@4" Function FSOUND_SetSpeakerMode( speakermode ) = "FSOUND_SetSpeakerMode@4" Function FSOUND_Update() = "FSOUND_Update@0" 'Global run-time information functions Function FSOUND_GetCPUUsage:Float() = "FSOUND_GetCPUUsage@0" Function FSOUND_GetChannelsPlaying() = "GetChannelsPlaying@0" Function FSOUND_GetDriver() = "FSOUND_GetDriver@0" Function FSOUND_GetDriverCaps( id,caps:Byte Ptr ) = "FSOUND_GetDriverCaps@8" Function FSOUND_GetDriverName( id ) = "FSOUND_GetDriverName@4" Function FSOUND_GetMaxSamples() = "FSOUND_GetMaxSamples@0" Function FSOUND_GetMaxChannels() = "FSOUND_GetMaxChannels@0" Function FSOUND_GetMemoryStats( currentalloced:Byte Ptr,maxalloced:Byte Ptr ) = "FSOUND_GetMemoryStats@8" Function FSOUND_GetNumDrivers() = "FSOUND_GetNumDrivers@0" Function FSOUND_GetNumHWChannels( num2d:Byte Ptr,num3d:Byte Ptr,total:Byte Ptr ) = "FSOUND_GetNumHWChannels@12" Function FSOUND_GetOutput() = "FSOUND_GetOutput@0" Function FSOUND_GetOutputHandle:Byte Ptr() = "FSOUND_GetOutputHandle@0" Function FSOUND_GetOutputRate() = "FSOUND_GetOutputRate@0" Function FSOUND_GetSFXMasterVolume() = "FSOUND_GetSFXMasterVolume@0" Function FSOUND_GetVersion:Float() = "FSOUND_GetVersion@0" Function FSOUND_GetError() = "FSOUND_GetError@0" 'Sample Functions Function FSOUND_Sample_Alloc:Byte Ptr( index,length,mode,deffreq,defvol,defpan,defpri ) = "FSOUND_Sample_Alloc@28" Function FSOUND_Sample_Free( sptr:Byte Ptr ) = "FSOUND_Sample_Free@4" Function FSOUND_Sample_Get:Byte Ptr( sampno ) = "FSOUND_Sample_Get@4" Function FSOUND_Sample_GetDefaults( sptr:Byte Ptr,deffreq:Byte Ptr,defvol:Byte Ptr,defpan:Byte Ptr,defpri:Byte Ptr ) = "FSOUND_Sample_GetDefaults@20" Function FSOUND_Sample_GetDefaultsEx( sptr:Byte Ptr,deffreq:Byte Ptr,defvol:Byte Ptr,defpan:Byte Ptr,defpri:Byte Ptr,varfreq:Byte Ptr,varvol:Byte Ptr,varpan:Byte Ptr ) = "FSOUND_Sample_GetDefaultsEx@32" Function FSOUND_Sample_GetLength( sptr:Byte Ptr ) = "FSOUND_Sample_GetLength@4" Function FSOUND_Sample_GetLoopPoints( sptr:Byte Ptr,loopstart:Byte Ptr,loopend:Byte Ptr ) Function FSOUND_Sample_GetMinMaxDistance( sptr:Byte Ptr, minval:Byte Ptr,maxval:Byte Ptr ) = "FSOUND_Sample_GetMinMaxDistance@12" Function FSOUND_Sample_GetMode( sptr:Byte Ptr ) = "FSOUND_Sample_GetMode@4" Function FSOUND_Sample_GetName( sptr:Byte Ptr ) = "FSOUND_Sample_GetName@4" Function FSOUND_Sample_Load( index,name_or_data:Byte Ptr,inputmode,offset,length ) = "FSOUND_Sample_Load@20" Function FSOUND_Sample_Lock( sptr:Byte Ptr,offset,length,ptr1:Byte Ptr,ptr2:Byte Ptr,len1:Byte Ptr,len2:Byte Ptr ) = "FSOUND_Sample_Lock@28" Function FSOUND_Sample_SetDefaults( sptr:Byte Ptr,deffreq,defvol,defpan,defpri ) = "FSOUND_Sample_SetDefaults@20" Function FSOUND_Sample_SetDefaultsEx( sptr:Byte Ptr,deffreq,defvol,defpan,defpri,varfreq,varvol,varpan ) = "FSOUND_Sample_SetDefaultsEx@32" Function FSOUND_Sample_SetMaxPlaybacks( sptr:Byte Ptr,maxval ) = "FSOUND_Sample_SetMaxPlaybacks@8" Function FSOUND_Sample_SetMinMaxDistance( sptr:Byte Ptr,minval:Float,maxval:Float ) = "FSOUND_Sample_SetMinMaxDistance@12" Function FSOUND_Sample_SetMode( sptr:Byte Ptr,mode ) = "FSOUND_Sample_SetMode@8" Function FSOUND_Sample_SetLoopPoints( sptr:Byte Ptr,loopstart,loopend ) = "FSOUND_Sample_SetLoopPoints@12" Function FSOUND_Sample_Unlock( sptr:Byte Ptr,ptr1:Byte Ptr,ptr2:Byte Ptr,len1,len2 ) = "FSOUND_Sample_Unlock@20" Function FSOUND_Sample_Upload( sptr:Byte Ptr,srcdata:Byte Ptr,mode_in ) = "FSOUND_Sample_Upload@12" 'Channel Functions Function FSOUND_PlaySound( channel,sptr:Byte Ptr ) = "FSOUND_PlaySound@8" Function FSOUND_PlaySoundEx( channel,sptr:Byte Ptr,dspunit:Byte Ptr,startpaused ) = "FSOUND_PlaySoundEx@16" Function FSOUND_StopSound( channel ) = "FSOUND_StopSound@4" Function FSOUND_SetFrequency( channel,freq ) = "FSOUND_SetFrequency@8" Function FSOUND_SetLevels( channel,frontleft,center,frontright,backleft,backright,lfe ) = "FSOUND_SetLevels@24" Function FSOUND_SetLoopMode( channel,loopmode ) = "FSOUND_SetLoopMode@8" Function FSOUND_SetMute( channel,mute ) = "FSOUND_SetMute@8" Function FSOUND_SetPan( channel,pan ) = "FSOUND_SetPan@8" Function FSOUND_SetPaused( channel,paused ) = "FSOUND_SetPaused@8" Function FSOUND_SetPriority( channel,priority ) = "FSOUND_SetPriority@8" Function FSOUND_SetReserved( channel,reserved ) = "FSOUND_SetReserved@8" Function FSOUND_SetSurround( channel,surround ) = "FSOUND_SetSurround@8" Function FSOUND_SetVolume( channel,vol ) = "FSOUND_SetVolume@8" Function FSOUND_SetVolumeAbsolute( channel,vol ) = "FSOUND_SetVolumeAbsolute@8" Function FSOUND_GetVolume( channel ) = "FSOUND_GetVolume@4" Function FSOUND_GetAmplitude( channel ) = "FSOUND_GetAmplitude@4" Function FSOUND_3D_SetAttributes( channel,pos:Byte Ptr,vel:Byte Ptr ) = "FSOUND_3D_SetAttributes@12" Function FSOUND_3D_SetMinMaxDistance( channel,minval,maxval ) = "FSOUND_3D_SetMinMaxDistance@12" Function FSOUND_SetCurrentPosition( channel,pos ) = "FSOUND_SetCurrentPosition@8" Function FSOUND_GetCurrentPosition( channel ) = "FSOUND_GetCurrentPosition@4" Function FSOUND_GetCurrentSample:Byte Ptr( channel ) = "FSOUND_GetCurrentSample@4" Function FSOUND_GetCurrentLevels( channel,l:Byte Ptr,r:Byte Ptr ) = "FSOUND_GetCurrentLevels@12" Function FSOUND_GetFrequency( channel ) = "FSOUND_GetFrequency@4" Function FSOUND_GetLoopMode( channel ) = "FSOUND_GetLoopMode@4" Function FSOUND_GetMixer() = "FSOUND_GetMixer@0" Function FSOUND_GetMute( channel ) = "FSOUND_GetMute@4" Function FSOUND_GetNumSubChannels( channel ) = "FSOUND_GetNumSubChannels@4" Function FSOUND_GetPan( channel ) = "FSOUND_GetPan@4" Function FSOUND_GetPaused( channel ) = "FSOUND_GetPaused@4" Function FSOUND_GetPriority( channel ) = "FSOUND_GetPriority@4" Function FSOUND_GetReserved( channel ) = "FSOUND_GetReserved@4" Function FSOUND_GetSubChannel( channel,subchannel ) = "FSOUND_GetSubChannel@8" Function FSOUND_GetSurround( channel ) = "FSOUND_GetSurround@4" Function FSOUND_IsPlaying( channel ) = "FSOUND_IsPlaying@8" Function FSOUND_3D_GetAttributes( channel,pos:Byte Ptr,vel:Byte Ptr ) = "FSOUND_3D_GetAttributes@12" Function FSOUND_3D_GetMinMaxDistance( channel,mindistance:Byte Ptr,maxdistance:Byte Ptr ) = "FSOUND_3D_GetMinMaxDistance@12" '3D Sound Functions Function FSOUND_3D_Listener_GetAttributes( pos:Byte Ptr,vel:Byte Ptr,fx:Byte Ptr,fy:Byte Ptr,fz:Byte Ptr,tx:Byte Ptr,ty:Byte Ptr,tz:Byte Ptr ) = "FSOUND_3D_Listener_GetAttributes@32" Function FSOUND_3D_Listener_SetAttributes( pos:Byte Ptr,vel:Byte Ptr,fx:Byte Ptr,fy:Byte Ptr,fz:Byte Ptr,tx:Byte Ptr,ty:Byte Ptr,tz:Byte Ptr ) = "FSOUND_3D_Listener_SetAttributes@32" Function FSOUND_3D_Listener_SetCurrent( current,numlisteners ) = "FSOUND_3D_Listener_SetCurrent@8" Function FSOUND_3D_SetDistanceFactor( factor ) = "FSOUND_3D_SetDistanceFactor@4" Function FSOUND_3D_SetDopplerFactor( scale ) = "FSOUND_3D_SetDopplerFactor@4" Function FSOUND_3D_SetRolloffFactor( factor ) = "FSOUND_3D_SetRolloffFactor@4" 'Stream Functions Function FSOUND_Stream_AddSyncPoint:Byte Ptr( stream:Byte Ptr,pcmoffset,name:Byte Ptr ) = "FSOUND_Stream_AddSyncPoint@12" Function FSOUND_Stream_Close( stream:Byte Ptr ) = "FSOUND_Stream_Close@4" Function FSOUND_Stream_Create:Byte Ptr( callback,lenbytes,mode,samplerate,userdata:Byte Ptr ) = "FSOUND_Stream_Create@20" Function FSOUND_Stream_CreateDSP:Byte Ptr( stream:Byte Ptr,callback,priority,userdata:Byte Ptr ) = "FSOUND_Stream_CreateDSP@16" Function FSOUND_Stream_DeleteSyncPoint( point:Byte Ptr ) = "FSOUND_Stream_DeleteSyncPoint@4" Function FSOUND_Stream_FindTagField( stream:Byte Ptr,fieldtype,name:Byte Ptr,value:Byte Ptr,length:Byte Ptr ) = "FSOUND_Stream_FindTagField@20" Function FSOUND_Stream_GetLength( stream:Byte Ptr ) = "FSOUND_Stream_GetLength@4" Function FSOUND_Stream_GetLengthMs( stream:Byte Ptr ) = "FSOUND_Stream_GetLengthMs@4" Function FSOUND_Stream_GetMode( stream:Byte Ptr ) = "FSOUND_Stream_GetMode@4" Function FSOUND_Stream_GetNumSubStreams( stream:Byte Ptr ) = "FSOUND_Stream_GetNumSubStreams@4" Function FSOUND_Stream_GetNumSyncPoints( stream:Byte Ptr ) = "FSOUND_Stream_GetNumSyncPoints@4" Function FSOUND_Stream_GetNumTagFields( stream:Byte Ptr,num:Byte Ptr ) = "FSOUND_Stream_GetNumTagFields@8" Function FSOUND_Stream_GetOpenState( stream:Byte Ptr ) = "FSOUND_Stream_GetOpenState@4" Function FSOUND_Stream_GetPosition( stream:Byte Ptr ) = "FSOUND_Stream_GetPosition@4" Function FSOUND_Stream_GetSample( stream:Byte Ptr ) = "FSOUND_STREAM@4" Function FSOUND_Stream_GetSyncPoint:Byte Ptr( stream:Byte Ptr,index ) = "FSOUND_Stream_GetSyncPoint@8" Function FSOUND_Stream_GetSyncPointInfo:Byte Ptr( point:Byte Ptr,pcmoffset:Byte Ptr ) = "FSOUND_Stream_GetSyncPointInfo@8" Function FSOUND_Stream_GetTagField( stream:Byte Ptr,num,tagtype:Byte Ptr,name:Byte Ptr,value:Byte Ptr,length:Byte Ptr ) = "FSOUND_Stream_GetTagField@24" Function FSOUND_Stream_GetTime( stream:Byte Ptr ) = "FSOUND_Stream_GetTime@4" Function FSOUND_Stream_Net_GetBufferProperties( buffersize:Byte Ptr,prebuffer_percent:Byte Ptr,rebuffer_percent:Byte Ptr ) = "FSOUND_Stream_Net_GetBufferProperties@12" Function FSOUND_Stream_Net_GetLastServerStatus( ) = "FSOUND_Stream_Net_GetLastServerStatus@0" Function FSOUND_Stream_Net_GetStatus( stream:Byte Ptr,status:Byte Ptr,bufferused:Byte Ptr,bitrate:Byte Ptr,flags:Byte Ptr ) = "FSOUND_Stream_Net_GetStatus@20" Function FSOUND_Stream_Net_SetBufferProperties( buffersize,prebuffer_percent,rebuffer_percent ) = "FSOUND_Stream_Net_SetBufferProperties@12" Function FSOUND_Stream_Net_SetMetadataCallback( stream:Byte Ptr,callback,userdata:Byte Ptr ) = "FSOUND_Stream_Net_SetMetadataCallback@12" Function FSOUND_Stream_Net_SetProxy( proxy:Byte Ptr ) = "FSOUND_Stream_Net_SetProxy@4" Function FSOUND_Stream_Open:Byte Ptr( name_or_data:Byte Ptr,mode,offset,length ) = "FSOUND_Stream_Open@16" Function FSOUND_Stream_Play( channel,stream:Byte Ptr ) = "FSOUND_Stream_Play@8" Function FSOUND_Stream_PlayEx( channel,stream:Byte Ptr,dspunit:Byte Ptr,paused ) = "FSOUND_Stream_PlayEx@16" Function FSOUND_Stream_SetBufferSize( ms ) = "FSOUND_Stream_SetBufferSize@4" Function FSOUND_Stream_SetEndCallback( stream,callback,userdata:Byte Ptr ) = "FSOUND_Stream_SetEndCallback@12" Function FSOUND_Stream_SetLoopCount( stream:Byte Ptr,count ) = "FSOUND_Stream_SetLoopCount@8" Function FSOUND_Stream_SetLoopPoints( stream:Byte Ptr,loopstart,loopend ) = "FSOUND_Stream_SetLoopPoints@12" Function FSOUND_Stream_SetMode( stream:Byte Ptr,mode ) = "FSOUND_Stream_SetMode@8" Function FSOUND_Stream_SetPosition( stream:Byte Ptr,position ) = "FSOUND_Stream_SetPosition@8" Function FSOUND_Stream_SetSubStream( stream:Byte Ptr,index ) = "FSOUND_Stream_SetSubStream@8" Function FSOUND_Stream_SetSubStreamSentence( stream:Byte Ptr,sentencelist:Byte Ptr,numitems ) = "FSOUND_Stream_SetSubStreamSentence@12" Function FSOUND_Stream_SetSyncCallback( stream:Byte Ptr,callback,userdata:Byte Ptr ) = "FSOUND_Stream_SetSyncCallback@12" Function FSOUND_Stream_SetTime( stream:Byte Ptr,ms ) = "FSOUND_Stream_SetTime@8" Function FSOUND_Stream_Stop( stream:Byte Ptr ) = "FSOUND_Stream_Stop@4" 'CD Functions Function FSOUND_CD_GetNumTracks( drive ) = "FSOUND_CD_GetNumTracks@4" Function FSOUND_CD_GetPaused( drive ) = "FSOUND_CD_GetPaused@4" Function FSOUND_CD_GetTrack( drive ) = "FSOUND_CD_GetTrack@4" Function FSOUND_CD_GetTrackLength( drive,track ) = "FSOUND_CD_GetTrackLength@8" Function FSOUND_CD_GetTrackTime( drive ) = "FSOUND_CD_GetTrackTime@4" Function FSOUND_CD_OpenTray( drive,open ) = "FSOUND_CD_OpenTray@8" Function FSOUND_CD_Play( drive,track ) = "FSOUND_CD_Play@8" Function FSOUND_CD_SetPaused( drive,paused ) = "FSOUND_CD_SetPaused@8" Function FSOUND_CD_SetPlayMode( drive,mode ) = "FSOUND_CD_SetPlayMode@8" Function FSOUND_CD_SetTrackTime( drive,ms ) = "FSOUND_CD_SetTrackTime@8" Function FSOUND_CD_SetVolume( drive,volume ) = "FSOUND_CD_SetVolume@8" Function FSOUND_CD_Stop( drive ) = "FSOUND_CD_Stop@4" 'DSP Functions Function FSOUND_DSP_ClearMixBuffer( ) = "FSOUND_DSP_ClearMixBuffer@0" Function FSOUND_DSP_Create:Byte Ptr( callback,priority,userdata:Byte Ptr ) = "FSOUND_DSP_Create@12" Function FSOUND_DSP_Free( unit:Byte Ptr ) = "FSOUND_DSP_Free@4" Function FSOUND_DSP_SetActive( unit:Byte Ptr,active ) = "FSOUND_DSP_SetActive@8" Function FSOUND_DSP_GetActive( unit:Byte Ptr ) = "FSOUND_DSP_GetActive@4" Function FSOUND_DSP_GetBufferLength( ) = "FSOUND_DSP_GetBufferLength@0" Function FSOUND_DSP_GetBufferLengthTotal( ) = "FSOUND_DSP_GetBufferLengthTotal@0" Function FSOUND_DSP_SetPriority( unit:Byte Ptr,priority ) = "FSOUND_DSP_SetPriority@8" Function FSOUND_DSP_GetPriority( unit:Byte Ptr ) = "FSOUND_DSP_GetPriority@4" Function FSOUND_DSP_GetClearUnit:Byte Ptr( ) = "FSOUND_DSP_GetClearUnit@0" Function FSOUND_DSP_GetClipAndCopyUnit:Byte Ptr( ) = "FSOUND_DSP_GetClipAndCopyUnit@0" Function FSOUND_DSP_GetMusicUnit:Byte Ptr( ) = "FSOUND_DSP_GetMusicUnit@0" Function FSOUND_DSP_GetSFXUnit:Byte Ptr( ) = "FSOUND_DSP_GetSFXUnit@0" Function FSOUND_DSP_GetFFTUnit:Byte Ptr( ) = "FSOUND_DSP_GetFFTUnit@0" Function FSOUND_DSP_GetSpectrum:Byte Ptr( ) = "FSOUND_DSP_GetSpectrum@0" Function FSOUND_DSP_MixBuffers( destbuffer:Byte Ptr,srcbuffer:Byte Ptr,buflen,freq,vol,pan,mode ) = "FSOUND_DSP_MixBuffers@28" 'FX Functions Function FSOUND_FX_Disable( channel ) = "FSOUND_FX_Disable@4" Function FSOUND_FX_Enable( channel,fxtype ) = "FSOUND_FX_Enable@8" Function FSOUND_FX_SetChorus( fxid,WetDryMix,Depth,Feedback,Frequency,Waveform,FXDelay,Phase ) = "FSOUND_FX_SetChorus@32" Function FSOUND_FX_SetCompressor( fxid,Gain,Attack,FXRelease,Threshold,Ratio,Predelay ) = "FSOUND_FX_SetCompressor@28" Function FSOUND_FX_SetDistortion( fxid,Gain,Edge,PostEQCenterFrequency,PostEQBandwidth,PreLowpassCutoff ) = "FSOUND_FX_SetDistortion@24" Function FSOUND_FX_SetEcho( fxid,WetDryMix,Feedback,LeftDelay,RightDelay,PanDelay ) = "FSOUND_FX_SetEcho@24" Function FSOUND_FX_SetFlanger( fxid,WetDryMix,Depth,Feedback,Frequency,Waveform,FXDelay,Phase ) = "FSOUND_FX_SetFlanger@32" Function FSOUND_FX_SetGargle( fxid,RateHz,WaveShape ) = "FSOUND_FX_SetGargle@12" Function FSOUND_FX_SetI3DL2Reverb( fxid,Room,RoomHF,RoomRolloffFactor,DecayTime,DecayHFRatio,Reflections,ReflectionsDelay,Reverb,ReverbDelay,Diffusion,Density,HFReference ) = "FSOUND_FX_SetI3DL2Reverb@52" Function FSOUND_FX_SetParamEQ( fxid,Center,Bandwidth,Gain ) = "FSOUND_FX_SetParamEQ@16" Function FSOUND_FX_SetWavesReverb( fxid,InGain,ReverbMix,ReverbTime,HighFreqRTRatio ) = "FSOUND_FX_SetWavesReverb@20" 'Recording Functions Function FSOUND_Record_GetDriver( ) = "FSOUND_Record_GetDriver@0" Function FSOUND_Record_GetDriverName:Byte Ptr( id ) = "FSOUND_Record_GetDriverName@4" Function FSOUND_Record_GetNumDrivers( ) = "FSOUND_Record_GetNumDrivers@0" Function FSOUND_Record_GetPosition( ) = "FSOUND_Record_GetPosition@0" Function FSOUND_Record_SetDriver( driver ) = "FSOUND_Record_SetDriver@4" Function FSOUND_Record_StartSample( sptr:Byte Ptr,loop ) = "FSOUND_Record_StartSample@8" Function FSOUND_Record_Stop( ) = "FSOUND_Record_Stop@4" 'Reverb Functions Function FSOUND_Reverb_SetProperties( props:Byte Ptr ) = "FSOUND_Reverb_SetProperties@4" Function FSOUND_Reverb_GetProperties( props:Byte Ptr ) = "FSOUND_Reverb_GetProperties@4" Function FSOUND_Reverb_SetChannelProperties( channel,prop:Byte Ptr ) = "FSOUND_Reverb_SetChannelProperties@8" Function FSOUND_Reverb_GetChannelProperties( channel,prop:Byte Ptr ) = "FSOUND_Reverb_GetChannelProperties@8" EndExtern 'FMOD Errors Const FMOD_ERR_NONE =1 Const FMOD_ERR_BUSY =2 Const FMOD_ERR_UNINITIALIZED =3 Const FMOD_ERR_INIT =4 Const FMOD_ERR_ALLOCATED =5 Const FMOD_ERR_PLAY =6 Const FMOD_ERR_OUTPUT_FORMAT =7 Const FMOD_ERR_COOPERATIVELEVEL=8 Const FMOD_ERR_CREATEBUFFER =9 Const FMOD_ERR_FILE_NOTFOUND =10 Const FMOD_ERR_FILE_FORMAT =11 Const FMOD_ERR_FILE_BAD =12 Const FMOD_ERR_MEMORY =13 Const FMOD_ERR_VERSION =14 Const FMOD_ERR_INVALID_PARAM =15 Const FMOD_ERR_NO_EAX =16 Const FMOD_ERR_CHANNEL_ALLOC =17 Const FMOD_ERR_RECORD =18 Const FMOD_ERR_MEDIAPLAYER =19 Const FMOD_ERR_CDDEVICE =20 Function FMOD_ErrorString:String(errcode) Select errcode Case FMOD_ERR_NONE Return "No errors" Case FMOD_ERR_BUSY Return "Cannot call this command after FSOUND_Init. Call FSOUND_Close first." Case FMOD_ERR_UNINITIALIZED Return "This command failed because FSOUND_Init was not called" Case FMOD_ERR_PLAY Return "Playing the sound failed." Case FMOD_ERR_INIT Return "Error initializing output device." Case FMOD_ERR_ALLOCATED Return "The output device is already in use and cannot be reused." Case FMOD_ERR_OUTPUT_FORMAT Return "Soundcard does not support the features needed for this soundsystem (16bit stereo output)" Case FMOD_ERR_COOPERATIVELEVEL Return "Error setting cooperative level for hardware." Case FMOD_ERR_CREATEBUFFER Return "Error creating hardware sound buffer." Case FMOD_ERR_FILE_NOTFOUND Return "File not found" Case FMOD_ERR_FILE_FORMAT Return "Unknown file format" Case FMOD_ERR_FILE_BAD Return "Error loading file" Case FMOD_ERR_MEMORY Return "Not enough memory " Case FMOD_ERR_VERSION Return "The version number of this file format is not supported" Case FMOD_ERR_INVALID_PARAM Return "An invalid parameter was passed to this function" Case FMOD_ERR_NO_EAX Return "Tried to use an EAX command on a non EAX enabled channel or output." Case FMOD_ERR_CHANNEL_ALLOC Return "Failed to allocate a new channel" Case FMOD_ERR_RECORD Return "Recording not supported on this device" Case FMOD_ERR_MEDIAPLAYER Return "Required Mediaplayer codec is not installed" Default Return "Unknown error" End Select End Function
Like the SDL thread, this community project is designed for the whole community to benefit from. Hopefully we'll see help from a couple of guys including BRL if they can - as they have experience using FMOD too!
Good luck everyone!
