diff --git a/CrystalPoint.cpp b/CrystalPoint.cpp
index cf24833..867a0b6 100644
--- a/CrystalPoint.cpp
+++ b/CrystalPoint.cpp
@@ -9,6 +9,8 @@
int CrystalPoint::width = 0;
int CrystalPoint::height = 0;
+SoundSystem CrystalPoint::sound_system;
+
void CrystalPoint::init()
{
player = Player::getInstance();
@@ -90,6 +92,8 @@ void CrystalPoint::update()
mouseOffset = Vec2f(0, 0);
prevKeyboardState = keyboardState;
glutPostRedisplay();
+
+ sound_system.SetListener(player->position, Vec3f(), Vec3f());
}
diff --git a/CrystalPoint.h b/CrystalPoint.h
index da4a3b8..5437d5c 100644
--- a/CrystalPoint.h
+++ b/CrystalPoint.h
@@ -1,8 +1,10 @@
#pragma once
class WorldHandler;
+class SoundSystem;
class Player;
#include "Vector.h"
+#include "SoundSystem.h"
class KeyboardState
{
@@ -33,4 +35,8 @@ public:
float lastFrameTime;
+ static SoundSystem& GetSoundSystem() { return sound_system; }
+
+private:
+ static SoundSystem sound_system;
};
\ No newline at end of file
diff --git a/CrystalPoint.vcxproj b/CrystalPoint.vcxproj
index e225b3a..a14f55a 100644
--- a/CrystalPoint.vcxproj
+++ b/CrystalPoint.vcxproj
@@ -89,12 +89,13 @@
Disabled
WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- freeglut/include
+ freeglut/include; openAL/include
Console
true
- freeglut/lib
+ freeglut/lib; openAL/libs/Win32
+ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenAL32.lib;%(AdditionalDependencies)
@@ -104,12 +105,13 @@
Disabled
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- freeglut/include
+ freeglut/include;C:\Program Files (x86)\OpenAL 1.1 SDK\include
Console
true
- freeglut/lib
+ freeglut/lib;C:\Program Files (x86)\OpenAL 1.1 SDK\libs\Win32
+ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenAL32.lib;%(AdditionalDependencies)
@@ -121,14 +123,15 @@
true
WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- freeglut/include
+ freeglut/include; openAL/include
Console
true
true
true
- freeglut/lib
+ freeglut/lib; openAL/libs/Win32
+ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenAL32.lib;%(AdditionalDependencies)
@@ -162,6 +165,8 @@
+
+
@@ -181,6 +186,8 @@
+
+
@@ -195,6 +202,10 @@
+
+
+
+
diff --git a/CrystalPoint.vcxproj.filters b/CrystalPoint.vcxproj.filters
index e894c14..df8bece 100644
--- a/CrystalPoint.vcxproj.filters
+++ b/CrystalPoint.vcxproj.filters
@@ -75,6 +75,15 @@
Source Files\Object
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
@@ -125,6 +134,12 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
Header Files
@@ -146,4 +161,12 @@
Source Files\json
+
+
+ Resource Files
+
+
+ Resource Files
+
+
\ No newline at end of file
diff --git a/Enemy.cpp b/Enemy.cpp
index 9d77229..5dbf5e4 100644
--- a/Enemy.cpp
+++ b/Enemy.cpp
@@ -1,11 +1,10 @@
#define _USE_MATH_DEFINES
#include
-
#include "Enemy.h"
#include "Model.h"
+#include "CrystalPoint.h"
#include
-
Enemy::Enemy(const std::string &fileName,
const Vec3f &position,
Vec3f &rotation,
@@ -20,6 +19,7 @@ Enemy::Enemy(const std::string &fileName,
speed = 1;
radius = 10;
hasTarget = false;
+ hit_sound_id = CrystalPoint::GetSoundSystem().LoadSound("WAVE/Sound.wav", false);
}
@@ -73,6 +73,7 @@ void Enemy::update(float delta)
{
if (hasTarget)
{
+
//just 2d walking
float dx, dz, length;
@@ -92,5 +93,12 @@ void Enemy::update(float delta)
position.z += dz;
}
rotation.y = atan2f(dx, dz) * 180 / M_PI;
- }
+ }
+
+ if (false)
+ {
+ Sound* sound = CrystalPoint::GetSoundSystem().GetSound(hit_sound_id);
+ sound->SetPos(position, Vec3f());
+ sound->Play();
+ }
}
diff --git a/Enemy.h b/Enemy.h
index e0cabd7..94f3a06 100644
--- a/Enemy.h
+++ b/Enemy.h
@@ -19,5 +19,7 @@ public:
void inEyeSight(Vec3f &);
void collide(const Entity *entity);
+private:
+ int hit_sound_id;
};
diff --git a/Main.cpp b/Main.cpp
index 413f30d..2660258 100644
--- a/Main.cpp
+++ b/Main.cpp
@@ -54,6 +54,8 @@ int main(int argc, char* argv[])
CrystalPoint::width = GLUT_WINDOW_WIDTH;
glutMainLoop();
+
+ delete app;
return 0;
}
diff --git a/Sound.cpp b/Sound.cpp
new file mode 100644
index 0000000..cc990da
--- /dev/null
+++ b/Sound.cpp
@@ -0,0 +1,139 @@
+#include "Sound.h"
+
+#include
+#include
+#include
+
+Sound::Sound(const char* inWavPath, bool inLooping):
+ buffer_id(0),
+ source_id(0),
+ is_looping(inLooping)
+
+{
+ const char* path = inWavPath;
+
+ FILE *fp = fopen(path, "rb"); // Open the WAVE file
+ if (!fp)
+ return; // Could not open file
+
+ // Check that the WAVE file is OK
+ char type[4];
+ fread(type, sizeof(char), 4, fp); // Reads the first bytes in the file
+ if (type[0] != 'R' || type[1] != 'I' || type[2] != 'F' || type[3] != 'F') // Should be "RIFF"
+ return; // Not RIFF
+
+ DWORD size;
+ fread(&size, sizeof(DWORD), 1, fp); // Continue to read the file
+ fread(type, sizeof(char), 4, fp); // Continue to read the file
+ if (type[0] != 'W' || type[1] != 'A' || type[2] != 'V' || type[3] != 'E') // This part should be "WAVE"
+ return; // Not WAVE
+
+ fread(type, sizeof(char), 4, fp); // Continue to read the file
+ if (type[0] != 'f' || type[1] != 'm' || type[2] != 't' || type[3] != ' ') // This part should be "fmt "
+ return; // Not fmt
+
+ // Now we know that the file is a acceptable WAVE file
+ // Info about the WAVE data is now read and stored
+ DWORD chunkSize;
+ fread(&chunkSize, sizeof(DWORD), 1, fp);
+ short formatType;
+ fread(&formatType, sizeof(short), 1, fp);
+ short channels;
+ fread(&channels, sizeof(short), 1, fp);
+ DWORD sampleRate;
+ fread(&sampleRate, sizeof(DWORD), 1, fp);
+ DWORD avgBytesPerSec;
+ fread(&avgBytesPerSec, sizeof(DWORD), 1, fp);
+ short bytesPerSample;
+ fread(&bytesPerSample, sizeof(short), 1, fp);
+ short bitsPerSample;
+ fread(&bitsPerSample, sizeof(short), 1, fp);
+ ALenum format = 0; // The audio format (bits per sample, number of channels)
+ if (bitsPerSample == 8)
+ {
+ if (channels == 1)
+ format = AL_FORMAT_MONO8;
+ else if (channels == 2)
+ format = AL_FORMAT_STEREO8;
+ }
+ else if (bitsPerSample == 16)
+ {
+ if (channels == 1)
+ format = AL_FORMAT_MONO16;
+ else if (channels == 2)
+ format = AL_FORMAT_STEREO16;
+ }
+ if (!format)
+ return; // Not valid format
+
+ fread(type, sizeof(char), 4, fp);
+ if (type[0] != 'd' || type[1] != 'a' || type[2] != 't' || type[3] != 'a') // This part should be "data"
+ return; // not data
+
+ DWORD dataSize;
+ fread(&dataSize, sizeof(DWORD), 1, fp); // The size of the sound data is read
+
+ // Display the info about the WAVE file
+ std::cout << "Chunk Size: " << chunkSize << "\n";
+ std::cout << "Format Type: " << formatType << "\n";
+ std::cout << "Channels: " << channels << "\n";
+ std::cout << "Sample Rate: " << sampleRate << "\n";
+ std::cout << "Average Bytes Per Second: " << avgBytesPerSec << "\n";
+ std::cout << "Bytes Per Sample: " << bytesPerSample << "\n";
+ std::cout << "Bits Per Sample: " << bitsPerSample << "\n";
+ std::cout << "Data Size: " << dataSize << "\n";
+
+ unsigned char* buf = new unsigned char[dataSize]; // Allocate memory for the sound data
+ std::cout << fread(buf, sizeof(BYTE), dataSize, fp) << " bytes loaded\n"; // Read the sound data and display the
+ fclose(fp);
+
+ alGenBuffers(1, &buffer_id); // Generate one OpenAL Buffer and link to "buffer"
+ alGenSources(1, &source_id); // Generate one OpenAL Source and link to "source"
+ if (alGetError() != AL_NO_ERROR)
+ return; // Error during buffer/source generation
+
+ alBufferData(buffer_id, format, buf, dataSize, sampleRate); // Store the sound data in the OpenAL Buffer
+ if (alGetError() != AL_NO_ERROR)
+ return; // Error during buffer loading
+
+ delete[] buf; // Delete the sound data buffer
+}
+
+
+Sound::~Sound()
+{
+ alSourceStop(source_id);
+ alDeleteSources(1, &source_id); // Delete the OpenAL Source
+ alDeleteBuffers(1, &buffer_id); // Delete the OpenAL Buffer
+}
+
+
+void Sound::SetPos(const Vec3f& inPos, const Vec3f& inVel)
+{
+ alSourcei(source_id, AL_BUFFER, buffer_id); // Link the buffer to the source
+ alSourcef(source_id, AL_PITCH, 1.0f); // Set the pitch of the source
+ alSourcef(source_id, AL_GAIN, 1.0f); // Set the gain of the source
+ alSourcefv(source_id, AL_POSITION, inPos.v); // Set the position of the source
+ alSourcefv(source_id, AL_VELOCITY, inVel.v); // Set the velocity of the source
+ alSourcei(source_id, AL_LOOPING, is_looping ? AL_TRUE : AL_FALSE); // Set if source is looping sound
+}
+
+
+void Sound::Play()
+{
+ alSourcePlay(source_id);
+ int e = alGetError(); // != AL_NO_ERROR) return;
+}
+
+
+void Sound::Pause()
+{
+ alSourcePause(source_id);
+}
+
+
+void Sound::Stop()
+{
+ alSourceStop(source_id);
+}
+
diff --git a/Sound.h b/Sound.h
new file mode 100644
index 0000000..74e2f9f
--- /dev/null
+++ b/Sound.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "vector.h"
+
+class Sound
+{
+public:
+ Sound(const char* inWavPath, bool inLooping);
+ ~Sound();
+
+ void SetPos(const Vec3f& inPos, const Vec3f& inVel);
+
+ void Play();
+ void Pause();
+ void Stop();
+
+private:
+ unsigned int buffer_id;
+ unsigned int source_id;
+
+ bool is_looping;
+};
\ No newline at end of file
diff --git a/SoundSystem.cpp b/SoundSystem.cpp
new file mode 100644
index 0000000..bd207be
--- /dev/null
+++ b/SoundSystem.cpp
@@ -0,0 +1,56 @@
+#include "SoundSystem.h"
+
+#include
+#include
+#include
+
+
+
+SoundSystem::SoundSystem():
+ device(nullptr),
+ context(nullptr)
+{
+ device = alcOpenDevice(nullptr);
+ if (!device)
+ return;
+ context = alcCreateContext(device, nullptr);
+ if (!context)
+ return;
+ alcMakeContextCurrent(context);
+}
+
+
+SoundSystem::~SoundSystem()
+{
+ for (auto sound : sounds)
+ delete sound;
+ alcMakeContextCurrent(nullptr);
+ alcDestroyContext(context);
+ alcCloseDevice(device);
+}
+
+
+void SoundSystem::SetListener(const Vec3f& inPos, const Vec3f& inVel, const Vec3f& inOri)
+{
+ ALfloat orientation[] = { 0.0, 0.0, -1.0, 0.0, 1.0, 0.0 };
+
+ alListenerfv(AL_POSITION, inPos.v);
+ alListenerfv(AL_VELOCITY, inVel.v);
+ alListenerfv(AL_ORIENTATION, orientation);
+}
+
+
+unsigned int SoundSystem::LoadSound(const char* inWavPath, bool inLooping)
+{
+ Sound* sound = new Sound(inWavPath, inLooping);
+ sounds.push_back(sound);
+ return sounds.size() - 1;
+}
+
+
+Sound* SoundSystem::GetSound(unsigned int inID)
+{
+ if (inID > sounds.size())
+ return nullptr;
+ return sounds[inID];
+}
diff --git a/SoundSystem.h b/SoundSystem.h
new file mode 100644
index 0000000..d6908ce
--- /dev/null
+++ b/SoundSystem.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include
+#include
+#include
+#include "vector.h"
+#include "Sound.h"
+
+
+class SoundSystem
+{
+public:
+ SoundSystem();
+ ~SoundSystem();
+
+ void SetListener(const Vec3f& inPos, const Vec3f& inVel, const Vec3f& inOri);
+
+ unsigned int LoadSound(const char* inWavPath, bool inLooping);
+ Sound* GetSound(unsigned int inID);
+
+private:
+ ALCdevice* device;
+ ALCcontext* context;
+ std::vector sounds;
+};
diff --git a/WAVE/Sound.wav b/WAVE/Sound.wav
new file mode 100644
index 0000000..74ccfd2
Binary files /dev/null and b/WAVE/Sound.wav differ
diff --git a/WAVE/bond.wav b/WAVE/bond.wav
new file mode 100644
index 0000000..c478afe
Binary files /dev/null and b/WAVE/bond.wav differ
diff --git a/World.cpp b/World.cpp
index 232e145..869de65 100644
--- a/World.cpp
+++ b/World.cpp
@@ -8,7 +8,8 @@
#include
#include "WorldHandler.h"
-World::World(const std::string &fileName)
+World::World(const std::string &fileName):
+ music_id(-1)
{
//Store player instance
player = Player::getInstance();
@@ -152,6 +153,15 @@ World::World(const std::string &fileName)
crystals.push_back(new Crystal(e["file"].asString(), position, rotation, scale));
}
+
+ if (!v["world"]["music"].isNull())
+ {
+ music_id = CrystalPoint::GetSoundSystem().LoadSound(v["world"]["music"].asString().c_str(), true);
+ Sound* music = CrystalPoint::GetSoundSystem().GetSound(music_id);
+ music->SetPos(Vec3f(), Vec3f());
+ music->Play();
+ }
+
}
diff --git a/World.h b/World.h
index fc17d69..8a8f946 100644
--- a/World.h
+++ b/World.h
@@ -20,6 +20,8 @@ private:
HeightMap* heightmap;
Interface* interface;
Skybox* skybox;
+
+ int music_id;
std::vector entities;
std::vector enemies;
diff --git a/WorldHandler.cpp b/WorldHandler.cpp
index 0e7af94..08f9ba0 100644
--- a/WorldHandler.cpp
+++ b/WorldHandler.cpp
@@ -97,6 +97,7 @@ bool WorldHandler::isPlayerPositionValid(void)
{
if(!loadingWorld)
return world->isPlayerPositionValid();
+ return false;
}
float WorldHandler::getHeight(float x, float y)
diff --git a/openAL/include/EFX-Util.h b/openAL/include/EFX-Util.h
new file mode 100644
index 0000000..2042a58
--- /dev/null
+++ b/openAL/include/EFX-Util.h
@@ -0,0 +1,446 @@
+/*******************************************************************\
+* *
+* EFX-UTIL.H - EFX Utilities functions and Reverb Presets *
+* *
+* File revision 1.0 *
+* *
+\*******************************************************************/
+
+#ifndef EFX_UTIL_H_INCLUDED
+#define EFX_UTIL_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+#pragma pack(push, 4)
+
+#ifndef EAXVECTOR_DEFINED
+#define EAXVECTOR_DEFINED
+typedef struct _EAXVECTOR {
+ float x;
+ float y;
+ float z;
+} EAXVECTOR;
+#endif
+
+#ifndef EAXREVERBPROPERTIES_DEFINED
+#define EAXREVERBPROPERTIES_DEFINED
+typedef struct _EAXREVERBPROPERTIES
+{
+ unsigned long ulEnvironment;
+ float flEnvironmentSize;
+ float flEnvironmentDiffusion;
+ long lRoom;
+ long lRoomHF;
+ long lRoomLF;
+ float flDecayTime;
+ float flDecayHFRatio;
+ float flDecayLFRatio;
+ long lReflections;
+ float flReflectionsDelay;
+ EAXVECTOR vReflectionsPan;
+ long lReverb;
+ float flReverbDelay;
+ EAXVECTOR vReverbPan;
+ float flEchoTime;
+ float flEchoDepth;
+ float flModulationTime;
+ float flModulationDepth;
+ float flAirAbsorptionHF;
+ float flHFReference;
+ float flLFReference;
+ float flRoomRolloffFactor;
+ unsigned long ulFlags;
+} EAXREVERBPROPERTIES, *LPEAXREVERBPROPERTIES;
+#endif
+
+#ifndef EFXEAXREVERBPROPERTIES_DEFINED
+#define EFXEAXREVERBPROPERTIES_DEFINED
+typedef struct
+{
+ float flDensity;
+ float flDiffusion;
+ float flGain;
+ float flGainHF;
+ float flGainLF;
+ float flDecayTime;
+ float flDecayHFRatio;
+ float flDecayLFRatio;
+ float flReflectionsGain;
+ float flReflectionsDelay;
+ float flReflectionsPan[3];
+ float flLateReverbGain;
+ float flLateReverbDelay;
+ float flLateReverbPan[3];
+ float flEchoTime;
+ float flEchoDepth;
+ float flModulationTime;
+ float flModulationDepth;
+ float flAirAbsorptionGainHF;
+ float flHFReference;
+ float flLFReference;
+ float flRoomRolloffFactor;
+ int iDecayHFLimit;
+} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES;
+#endif
+
+#ifndef EAXOBSTRUCTIONPROPERTIES_DEFINED
+#define EAXOBSTRUCTIONPROPERTIES_DEFINED
+typedef struct _EAXOBSTRUCTIONPROPERTIES
+{
+ long lObstruction;
+ float flObstructionLFRatio;
+} EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
+#endif
+
+#ifndef EAXOCCLUSIONPROPERTIES_DEFINED
+#define EAXOCCLUSIONPROPERTIES_DEFINED
+typedef struct _EAXOCCLUSIONPROPERTIES
+{
+ long lOcclusion;
+ float flOcclusionLFRatio;
+ float flOcclusionRoomRatio;
+ float flOcclusionDirectRatio;
+} EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
+#endif
+
+#ifndef EAXEXCLUSIONPROPERTIES_DEFINED
+#define EAXEXCLUSIONPROPERTIES_DEFINED
+typedef struct _EAXEXCLUSIONPROPERTIES
+{
+ long lExclusion;
+ float flExclusionLFRatio;
+} EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
+#endif
+
+#ifndef EFXLOWPASSFILTER_DEFINED
+#define EFXLOWPASSFILTER_DEFINED
+typedef struct _EFXLOWPASSFILTER
+{
+ float flGain;
+ float flGainHF;
+} EFXLOWPASSFILTER, *LPEFXLOWPASSFILTER;
+#endif
+
+#ifdef EFXUTILDLL_EXPORTS
+ #define EFX_API __declspec(dllexport)
+#else
+ #define EFX_API
+#endif
+
+EFX_API void __cdecl ConvertReverbParameters(EAXREVERBPROPERTIES *pEAXProp, EFXEAXREVERBPROPERTIES *pEFXEAXReverb);
+EFX_API void __cdecl ConvertObstructionParameters(EAXOBSTRUCTIONPROPERTIES *pObProp, EFXLOWPASSFILTER *pDirectLowPassFilter);
+EFX_API void __cdecl ConvertExclusionParameters(EAXEXCLUSIONPROPERTIES *pExProp, EFXLOWPASSFILTER *pSendLowPassFilter);
+EFX_API void __cdecl ConvertOcclusionParameters(EAXOCCLUSIONPROPERTIES *pOcProp, EFXLOWPASSFILTER *pDirectLowPassFilter, EFXLOWPASSFILTER *pSendLowPassFilter);
+EFX_API void __cdecl AdjustEnvironmentSize(EAXREVERBPROPERTIES *pEAXProp, float flEnvironmentSize);
+
+/***********************************************************************************************\
+*
+* EAX Reverb Presets in legacy format - use ConvertReverbParameters() to convert to
+* EFX EAX Reverb Presets for use with the OpenAL Effects Extension.
+*
+************************************************************************************************/
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_GENERIC \
+ {0, 7.5f, 1.000f, -1000, -100, 0, 1.49f, 0.83f, 1.00f, -2602, 0.007f, 0.00f,0.00f,0.00f, 200, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_PADDEDCELL \
+ {1, 1.4f, 1.000f, -1000, -6000, 0, 0.17f, 0.10f, 1.00f, -1204, 0.001f, 0.00f,0.00f,0.00f, 207, 0.002f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_ROOM \
+ {2, 1.9f, 1.000f, -1000, -454, 0, 0.40f, 0.83f, 1.00f, -1646, 0.002f, 0.00f,0.00f,0.00f, 53, 0.003f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_BATHROOM \
+ {3, 1.4f, 1.000f, -1000, -1200, 0, 1.49f, 0.54f, 1.00f, -370, 0.007f, 0.00f,0.00f,0.00f, 1030, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_LIVINGROOM \
+ {4, 2.5f, 1.000f, -1000, -6000, 0, 0.50f, 0.10f, 1.00f, -1376, 0.003f, 0.00f,0.00f,0.00f, -1104, 0.004f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_STONEROOM \
+ {5, 11.6f, 1.000f, -1000, -300, 0, 2.31f, 0.64f, 1.00f, -711, 0.012f, 0.00f,0.00f,0.00f, 83, 0.017f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_AUDITORIUM \
+ {6, 21.6f, 1.000f, -1000, -476, 0, 4.32f, 0.59f, 1.00f, -789, 0.020f, 0.00f,0.00f,0.00f, -289, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_CONCERTHALL \
+ {7, 19.6f, 1.000f, -1000, -500, 0, 3.92f, 0.70f, 1.00f, -1230, 0.020f, 0.00f,0.00f,0.00f, -02, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_CAVE \
+ {8, 14.6f, 1.000f, -1000, 0, 0, 2.91f, 1.30f, 1.00f, -602, 0.015f, 0.00f,0.00f,0.00f, -302, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_ARENA \
+ {9, 36.2f, 1.000f, -1000, -698, 0, 7.24f, 0.33f, 1.00f, -1166, 0.020f, 0.00f,0.00f,0.00f, 16, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_HANGAR \
+ {10, 50.3f, 1.000f, -1000, -1000, 0, 10.05f, 0.23f, 1.00f, -602, 0.020f, 0.00f,0.00f,0.00f, 198, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_CARPETTEDHALLWAY \
+ {11, 1.9f, 1.000f, -1000, -4000, 0, 0.30f, 0.10f, 1.00f, -1831, 0.002f, 0.00f,0.00f,0.00f, -1630, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_HALLWAY \
+ {12, 1.8f, 1.000f, -1000, -300, 0, 1.49f, 0.59f, 1.00f, -1219, 0.007f, 0.00f,0.00f,0.00f, 441, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_STONECORRIDOR \
+ {13, 13.5f, 1.000f, -1000, -237, 0, 2.70f, 0.79f, 1.00f, -1214, 0.013f, 0.00f,0.00f,0.00f, 395, 0.020f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_ALLEY \
+ {14, 7.5f, 0.300f, -1000, -270, 0, 1.49f, 0.86f, 1.00f, -1204, 0.007f, 0.00f,0.00f,0.00f, -4, 0.011f, 0.00f,0.00f,0.00f, 0.125f, 0.950f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_FOREST \
+ {15, 38.0f, 0.300f, -1000, -3300, 0, 1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f,0.00f,0.00f, -229, 0.088f, 0.00f,0.00f,0.00f, 0.125f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_CITY \
+ {16, 7.5f, 0.500f, -1000, -800, 0, 1.49f, 0.67f, 1.00f, -2273, 0.007f, 0.00f,0.00f,0.00f, -1691, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_MOUNTAINS \
+ {17, 100.0f, 0.270f, -1000, -2500, 0, 1.49f, 0.21f, 1.00f, -2780, 0.300f, 0.00f,0.00f,0.00f, -1434, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_QUARRY \
+ {18, 17.5f, 1.000f, -1000, -1000, 0, 1.49f, 0.83f, 1.00f, -10000, 0.061f, 0.00f,0.00f,0.00f, 500, 0.025f, 0.00f,0.00f,0.00f, 0.125f, 0.700f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_PLAIN \
+ {19, 42.5f, 0.210f, -1000, -2000, 0, 1.49f, 0.50f, 1.00f, -2466, 0.179f, 0.00f,0.00f,0.00f, -1926, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_PARKINGLOT \
+ {20, 8.3f, 1.000f, -1000, 0, 0, 1.65f, 1.50f, 1.00f, -1363, 0.008f, 0.00f,0.00f,0.00f, -1153, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_SEWERPIPE \
+ {21, 1.7f, 0.800f, -1000, -1000, 0, 2.81f, 0.14f, 1.00f, 429, 0.014f, 0.00f,0.00f,0.00f, 1023, 0.021f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_UNDERWATER \
+ {22, 1.8f, 1.000f, -1000, -4000, 0, 1.49f, 0.10f, 1.00f, -449, 0.007f, 0.00f,0.00f,0.00f, 1700, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 1.180f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_DRUGGED \
+ {23, 1.9f, 0.500f, -1000, 0, 0, 8.39f, 1.39f, 1.00f, -115, 0.002f, 0.00f,0.00f,0.00f, 985, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_DIZZY \
+ {24, 1.8f, 0.600f, -1000, -400, 0, 17.23f, 0.56f, 1.00f, -1713, 0.020f, 0.00f,0.00f,0.00f, -613, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.810f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_PSYCHOTIC \
+ {25, 1.0f, 0.500f, -1000, -151, 0, 7.56f, 0.91f, 1.00f, -626, 0.020f, 0.00f,0.00f,0.00f, 774, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 4.000f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+
+
+// CASTLE PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_CASTLE_SMALLROOM \
+ { 26, 8.3f, 0.890f, -1000, -800, -2000, 1.22f, 0.83f, 0.31f, -100, 0.022f, 0.00f,0.00f,0.00f, 600, 0.011f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_SHORTPASSAGE \
+ { 26, 8.3f, 0.890f, -1000, -1000, -2000, 2.32f, 0.83f, 0.31f, -100, 0.007f, 0.00f,0.00f,0.00f, 200, 0.023f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_MEDIUMROOM \
+ { 26, 8.3f, 0.930f, -1000, -1100, -2000, 2.04f, 0.83f, 0.46f, -400, 0.022f, 0.00f,0.00f,0.00f, 400, 0.011f, 0.00f,0.00f,0.00f, 0.155f, 0.030f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_LONGPASSAGE \
+ { 26, 8.3f, 0.890f, -1000, -800, -2000, 3.42f, 0.83f, 0.31f, -100, 0.007f, 0.00f,0.00f,0.00f, 300, 0.023f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_LARGEROOM \
+ { 26, 8.3f, 0.820f, -1000, -1100, -1800, 2.53f, 0.83f, 0.50f, -700, 0.034f, 0.00f,0.00f,0.00f, 200, 0.016f, 0.00f,0.00f,0.00f, 0.185f, 0.070f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_HALL \
+ { 26, 8.3f, 0.810f, -1000, -1100, -1500, 3.14f, 0.79f, 0.62f, -1500, 0.056f, 0.00f,0.00f,0.00f, 100, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_CUPBOARD \
+ { 26, 8.3f, 0.890f, -1000, -1100, -2000, 0.67f, 0.87f, 0.31f, 300, 0.010f, 0.00f,0.00f,0.00f, 1100, 0.007f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_CASTLE_COURTYARD \
+ { 26, 8.3f, 0.420f, -1000, -700, -1400, 2.13f, 0.61f, 0.23f, -1300, 0.160f, 0.00f,0.00f,0.00f, -300, 0.036f, 0.00f,0.00f,0.00f, 0.250f, 0.370f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_CASTLE_ALCOVE \
+ { 26, 8.3f, 0.890f, -1000, -600, -2000, 1.64f, 0.87f, 0.31f, 00, 0.007f, 0.00f,0.00f,0.00f, 300, 0.034f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
+
+
+// FACTORY PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_FACTORY_ALCOVE \
+ { 26, 1.8f, 0.590f, -1200, -200, -600, 3.14f, 0.65f, 1.31f, 300, 0.010f, 0.00f,0.00f,0.00f, 000, 0.038f, 0.00f,0.00f,0.00f, 0.114f, 0.100f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_SHORTPASSAGE \
+ { 26, 1.8f, 0.640f, -1200, -200, -600, 2.53f, 0.65f, 1.31f, 0, 0.010f, 0.00f,0.00f,0.00f, 200, 0.038f, 0.00f,0.00f,0.00f, 0.135f, 0.230f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_MEDIUMROOM \
+ { 26, 1.9f, 0.820f, -1200, -200, -600, 2.76f, 0.65f, 1.31f, -1100, 0.022f, 0.00f,0.00f,0.00f, 300, 0.023f, 0.00f,0.00f,0.00f, 0.174f, 0.070f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_LONGPASSAGE \
+ { 26, 1.8f, 0.640f, -1200, -200, -600, 4.06f, 0.65f, 1.31f, 0, 0.020f, 0.00f,0.00f,0.00f, 200, 0.037f, 0.00f,0.00f,0.00f, 0.135f, 0.230f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_LARGEROOM \
+ { 26, 1.9f, 0.750f, -1200, -300, -400, 4.24f, 0.51f, 1.31f, -1500, 0.039f, 0.00f,0.00f,0.00f, 100, 0.023f, 0.00f,0.00f,0.00f, 0.231f, 0.070f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_HALL \
+ { 26, 1.9f, 0.750f, -1000, -300, -400, 7.43f, 0.51f, 1.31f, -2400, 0.073f, 0.00f,0.00f,0.00f, -100, 0.027f, 0.00f,0.00f,0.00f, 0.250f, 0.070f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_CUPBOARD \
+ { 26, 1.7f, 0.630f, -1200, -200, -600, 0.49f, 0.65f, 1.31f, 200, 0.010f, 0.00f,0.00f,0.00f, 600, 0.032f, 0.00f,0.00f,0.00f, 0.107f, 0.070f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_COURTYARD \
+ { 26, 1.7f, 0.570f, -1000, -1000, -400, 2.32f, 0.29f, 0.56f, -1300, 0.140f, 0.00f,0.00f,0.00f, -800, 0.039f, 0.00f,0.00f,0.00f, 0.250f, 0.290f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+#define REVERB_PRESET_FACTORY_SMALLROOM \
+ { 26, 1.8f, 0.820f, -1000, -200, -600, 1.72f, 0.65f, 1.31f, -300, 0.010f, 0.00f,0.00f,0.00f, 500, 0.024f, 0.00f,0.00f,0.00f, 0.119f, 0.070f, 0.250f, 0.000f, -5.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
+
+
+// ICE PALACE PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_ICEPALACE_ALCOVE \
+ { 26, 2.7f, 0.840f, -1000, -500, -1100, 2.76f, 1.46f, 0.28f, 100, 0.010f, 0.00f,0.00f,0.00f, -100, 0.030f, 0.00f,0.00f,0.00f, 0.161f, 0.090f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_SHORTPASSAGE \
+ { 26, 2.7f, 0.750f, -1000, -500, -1100, 1.79f, 1.46f, 0.28f, -600, 0.010f, 0.00f,0.00f,0.00f, 100, 0.019f, 0.00f,0.00f,0.00f, 0.177f, 0.090f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_MEDIUMROOM \
+ { 26, 2.7f, 0.870f, -1000, -500, -700, 2.22f, 1.53f, 0.32f, -800, 0.039f, 0.00f,0.00f,0.00f, 100, 0.027f, 0.00f,0.00f,0.00f, 0.186f, 0.120f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_LONGPASSAGE \
+ { 26, 2.7f, 0.770f, -1000, -500, -800, 3.01f, 1.46f, 0.28f, -200, 0.012f, 0.00f,0.00f,0.00f, 200, 0.025f, 0.00f,0.00f,0.00f, 0.186f, 0.040f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_LARGEROOM \
+ { 26, 2.9f, 0.810f, -1000, -500, -700, 3.14f, 1.53f, 0.32f, -1200, 0.039f, 0.00f,0.00f,0.00f, 000, 0.027f, 0.00f,0.00f,0.00f, 0.214f, 0.110f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_HALL \
+ { 26, 2.9f, 0.760f, -1000, -700, -500, 5.49f, 1.53f, 0.38f, -1900, 0.054f, 0.00f,0.00f,0.00f, -400, 0.052f, 0.00f,0.00f,0.00f, 0.226f, 0.110f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_CUPBOARD \
+ { 26, 2.7f, 0.830f, -1000, -600, -1300, 0.76f, 1.53f, 0.26f, 100, 0.012f, 0.00f,0.00f,0.00f, 600, 0.016f, 0.00f,0.00f,0.00f, 0.143f, 0.080f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_COURTYARD \
+ { 26, 2.9f, 0.590f, -1000, -1100, -1000, 2.04f, 1.20f, 0.38f, -1000, 0.173f, 0.00f,0.00f,0.00f, -1000, 0.043f, 0.00f,0.00f,0.00f, 0.235f, 0.480f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+#define REVERB_PRESET_ICEPALACE_SMALLROOM \
+ { 26, 2.7f, 0.840f, -1000, -500, -1100, 1.51f, 1.53f, 0.27f, -100, 0.010f, 0.00f,0.00f,0.00f, 300, 0.011f, 0.00f,0.00f,0.00f, 0.164f, 0.140f, 0.250f, 0.000f, -5.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
+
+
+// SPACE STATION PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_SPACESTATION_ALCOVE \
+ { 26, 1.5f, 0.780f, -1000, -300, -100, 1.16f, 0.81f, 0.55f, 300, 0.007f, 0.00f,0.00f,0.00f, 000, 0.018f, 0.00f,0.00f,0.00f, 0.192f, 0.210f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_MEDIUMROOM \
+ { 26, 1.5f, 0.750f, -1000, -400, -100, 3.01f, 0.50f, 0.55f, -800, 0.034f, 0.00f,0.00f,0.00f, 100, 0.035f, 0.00f,0.00f,0.00f, 0.209f, 0.310f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_SHORTPASSAGE \
+ { 26, 1.5f, 0.870f, -1000, -400, -100, 3.57f, 0.50f, 0.55f, 0, 0.012f, 0.00f,0.00f,0.00f, 100, 0.016f, 0.00f,0.00f,0.00f, 0.172f, 0.200f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_LONGPASSAGE \
+ { 26, 1.9f, 0.820f, -1000, -400, -100, 4.62f, 0.62f, 0.55f, 0, 0.012f, 0.00f,0.00f,0.00f, 200, 0.031f, 0.00f,0.00f,0.00f, 0.250f, 0.230f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_LARGEROOM \
+ { 26, 1.8f, 0.810f, -1000, -400, -100, 3.89f, 0.38f, 0.61f, -1000, 0.056f, 0.00f,0.00f,0.00f, -100, 0.035f, 0.00f,0.00f,0.00f, 0.233f, 0.280f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_HALL \
+ { 26, 1.9f, 0.870f, -1000, -400, -100, 7.11f, 0.38f, 0.61f, -1500, 0.100f, 0.00f,0.00f,0.00f, -400, 0.047f, 0.00f,0.00f,0.00f, 0.250f, 0.250f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_CUPBOARD \
+ { 26, 1.4f, 0.560f, -1000, -300, -100, 0.79f, 0.81f, 0.55f, 300, 0.007f, 0.00f,0.00f,0.00f, 500, 0.018f, 0.00f,0.00f,0.00f, 0.181f, 0.310f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPACESTATION_SMALLROOM \
+ { 26, 1.5f, 0.700f, -1000, -300, -100, 1.72f, 0.82f, 0.55f, -200, 0.007f, 0.00f,0.00f,0.00f, 300, 0.013f, 0.00f,0.00f,0.00f, 0.188f, 0.260f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
+
+
+// WOODEN GALLEON PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_WOODEN_ALCOVE \
+ { 26, 7.5f, 1.000f, -1000, -1800, -1000, 1.22f, 0.62f, 0.91f, 100, 0.012f, 0.00f,0.00f,0.00f, -300, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_SHORTPASSAGE \
+ { 26, 7.5f, 1.000f, -1000, -1800, -1000, 1.75f, 0.50f, 0.87f, -100, 0.012f, 0.00f,0.00f,0.00f, -400, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_MEDIUMROOM \
+ { 26, 7.5f, 1.000f, -1000, -2000, -1100, 1.47f, 0.42f, 0.82f, -100, 0.049f, 0.00f,0.00f,0.00f, -100, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_LONGPASSAGE \
+ { 26, 7.5f, 1.000f, -1000, -2000, -1000, 1.99f, 0.40f, 0.79f, 000, 0.020f, 0.00f,0.00f,0.00f, -700, 0.036f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_LARGEROOM \
+ { 26, 7.5f, 1.000f, -1000, -2100, -1100, 2.65f, 0.33f, 0.82f, -100, 0.066f, 0.00f,0.00f,0.00f, -200, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_HALL \
+ { 26, 7.5f, 1.000f, -1000, -2200, -1100, 3.45f, 0.30f, 0.82f, -100, 0.088f, 0.00f,0.00f,0.00f, -200, 0.063f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_CUPBOARD \
+ { 26, 7.5f, 1.000f, -1000, -1700, -1000, 0.56f, 0.46f, 0.91f, 100, 0.012f, 0.00f,0.00f,0.00f, 100, 0.028f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_SMALLROOM \
+ { 26, 7.5f, 1.000f, -1000, -1900, -1000, 0.79f, 0.32f, 0.87f, 00, 0.032f, 0.00f,0.00f,0.00f, -100, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+#define REVERB_PRESET_WOODEN_COURTYARD \
+ { 26, 7.5f, 0.650f, -1000, -2200, -1000, 1.79f, 0.35f, 0.79f, -500, 0.123f, 0.00f,0.00f,0.00f, -2000, 0.032f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
+
+
+// SPORTS PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_SPORT_EMPTYSTADIUM \
+ { 26, 7.2f, 1.000f, -1000, -700, -200, 6.26f, 0.51f, 1.10f, -2400, 0.183f, 0.00f,0.00f,0.00f, -800, 0.038f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPORT_SQUASHCOURT \
+ { 26, 7.5f, 0.750f, -1000, -1000, -200, 2.22f, 0.91f, 1.16f, -700, 0.007f, 0.00f,0.00f,0.00f, -200, 0.011f, 0.00f,0.00f,0.00f, 0.126f, 0.190f, 0.250f, 0.000f, -5.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \
+ { 26, 36.2f, 0.700f, -1000, -200, -100, 2.76f, 1.25f, 1.14f, -400, 0.020f, 0.00f,0.00f,0.00f, -200, 0.030f, 0.00f,0.00f,0.00f, 0.179f, 0.150f, 0.895f, 0.190f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
+#define REVERB_PRESET_SPORT_LARGESWIMMINGPOOL\
+ { 26, 36.2f, 0.820f, -1000, -200, 0, 5.49f, 1.31f, 1.14f, -700, 0.039f, 0.00f,0.00f,0.00f, -600, 0.049f, 0.00f,0.00f,0.00f, 0.222f, 0.550f, 1.159f, 0.210f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
+#define REVERB_PRESET_SPORT_GYMNASIUM \
+ { 26, 7.5f, 0.810f, -1000, -700, -100, 3.14f, 1.06f, 1.35f, -800, 0.029f, 0.00f,0.00f,0.00f, -500, 0.045f, 0.00f,0.00f,0.00f, 0.146f, 0.140f, 0.250f, 0.000f, -5.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPORT_FULLSTADIUM \
+ { 26, 7.2f, 1.000f, -1000, -2300, -200, 5.25f, 0.17f, 0.80f, -2000, 0.188f, 0.00f,0.00f,0.00f, -1100, 0.038f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_SPORT_STADIUMTANNOY \
+ { 26, 3.0f, 0.780f, -1000, -500, -600, 2.53f, 0.88f, 0.68f, -1100, 0.230f, 0.00f,0.00f,0.00f, -600, 0.063f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+
+
+// PREFAB PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_PREFAB_WORKSHOP \
+ { 26, 1.9f, 1.000f, -1000, -1700, -800, 0.76f, 1.00f, 1.00f, 0, 0.012f, 0.00f,0.00f,0.00f, 100, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
+#define REVERB_PRESET_PREFAB_SCHOOLROOM \
+ { 26, 1.86f, 0.690f, -1000, -400, -600, 0.98f, 0.45f, 0.18f, 300, 0.017f, 0.00f,0.00f,0.00f, 300, 0.015f, 0.00f,0.00f,0.00f, 0.095f, 0.140f, 0.250f, 0.000f, -5.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_PREFAB_PRACTISEROOM \
+ { 26, 1.86f, 0.870f, -1000, -800, -600, 1.12f, 0.56f, 0.18f, 200, 0.010f, 0.00f,0.00f,0.00f, 300, 0.011f, 0.00f,0.00f,0.00f, 0.095f, 0.140f, 0.250f, 0.000f, -5.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
+#define REVERB_PRESET_PREFAB_OUTHOUSE \
+ { 26, 80.3f, 0.820f, -1000, -1900, -1600, 1.38f, 0.38f, 0.35f, -100, 0.024f, 0.00f,0.00f,-0.00f, -400, 0.044f, 0.00f,0.00f,0.00f, 0.121f, 0.170f, 0.250f, 0.000f, -5.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
+#define REVERB_PRESET_PREFAB_CARAVAN \
+ { 26, 8.3f, 1.000f, -1000, -2100, -1800, 0.43f, 1.50f, 1.00f, 0, 0.012f, 0.00f,0.00f,0.00f, 600, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
+ // for US developers, a caravan is the same as a trailer =o)
+
+
+// DOME AND PIPE PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_DOME_TOMB \
+ { 26, 51.8f, 0.790f, -1000, -900, -1300, 4.18f, 0.21f, 0.10f, -825, 0.030f, 0.00f,0.00f,0.00f, 450, 0.022f, 0.00f,0.00f,0.00f, 0.177f, 0.190f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 }
+#define REVERB_PRESET_PIPE_SMALL \
+ { 26, 50.3f, 1.000f, -1000, -900, -1300, 5.04f, 0.10f, 0.10f, -600, 0.032f, 0.00f,0.00f,0.00f, 800, 0.015f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_DOME_SAINTPAULS \
+ { 26, 50.3f, 0.870f, -1000, -900, -1300, 10.48f, 0.19f, 0.10f, -1500, 0.090f, 0.00f,0.00f,0.00f, 200, 0.042f, 0.00f,0.00f,0.00f, 0.250f, 0.120f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_PIPE_LONGTHIN \
+ { 26, 1.6f, 0.910f, -1000, -700, -1100, 9.21f, 0.18f, 0.10f, -300, 0.010f, 0.00f,0.00f,0.00f, -300, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 }
+#define REVERB_PRESET_PIPE_LARGE \
+ { 26, 50.3f, 1.000f, -1000, -900, -1300, 8.45f, 0.10f, 0.10f, -800, 0.046f, 0.00f,0.00f,0.00f, 400, 0.032f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_PIPE_RESONANT \
+ { 26, 1.3f, 0.910f, -1000, -700, -1100, 6.81f, 0.18f, 0.10f, -300, 0.010f, 0.00f,0.00f,0.00f, 00, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 }
+
+
+// OUTDOORS PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_OUTDOORS_BACKYARD \
+ { 26, 80.3f, 0.450f, -1000, -1200, -600, 1.12f, 0.34f, 0.46f, -700, 0.069f, 0.00f,0.00f,-0.00f, -300, 0.023f, 0.00f,0.00f,0.00f, 0.218f, 0.340f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
+#define REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \
+ { 26, 80.3f, 0.000f, -1000, -3900, -400, 2.13f, 0.21f, 0.46f, -1500, 0.300f, 0.00f,0.00f,-0.00f, -700, 0.019f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
+#define REVERB_PRESET_OUTDOORS_DEEPCANYON \
+ { 26, 80.3f, 0.740f, -1000, -1500, -400, 3.89f, 0.21f, 0.46f, -1000, 0.223f, 0.00f,0.00f,-0.00f, -900, 0.019f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
+#define REVERB_PRESET_OUTDOORS_CREEK \
+ { 26, 80.3f, 0.350f, -1000, -1500, -600, 2.13f, 0.21f, 0.46f, -800, 0.115f, 0.00f,0.00f,-0.00f, -1400, 0.031f, 0.00f,0.00f,0.00f, 0.218f, 0.340f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
+#define REVERB_PRESET_OUTDOORS_VALLEY \
+ { 26, 80.3f, 0.280f, -1000, -3100, -1600, 2.88f, 0.26f, 0.35f, -1700, 0.263f, 0.00f,0.00f,-0.00f, -800, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 0.340f, 0.250f, 0.000f, -5.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
+
+
+// MOOD PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_MOOD_HEAVEN \
+ { 26, 19.6f, 0.940f, -1000, -200, -700, 5.04f, 1.12f, 0.56f, -1230, 0.020f, 0.00f,0.00f,0.00f, 200, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.080f, 2.742f, 0.050f, -2.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_MOOD_HELL \
+ { 26, 100.0f, 0.570f, -1000, -900, -700, 3.57f, 0.49f, 2.00f, -10000, 0.020f, 0.00f,0.00f,0.00f, 300, 0.030f, 0.00f,0.00f,0.00f, 0.110f, 0.040f, 2.109f, 0.520f, -5.0f, 5000.0f, 139.5f, 0.00f, 0x40 }
+#define REVERB_PRESET_MOOD_MEMORY \
+ { 26, 8.0f, 0.850f, -1000, -400, -900, 4.06f, 0.82f, 0.56f, -2800, 0.000f, 0.00f,0.00f,0.00f, 100, 0.000f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.474f, 0.450f, -10.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
+
+
+// DRIVING SIMULATION PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_DRIVING_COMMENTATOR \
+ { 26, 3.0f, 0.000f, -1000, -500, -600, 2.42f, 0.88f, 0.68f, -1400, 0.093f, 0.00f,0.00f,0.00f, -1200, 0.017f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -10.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_DRIVING_PITGARAGE \
+ { 26, 1.9f, 0.590f, -1000, -300, -500, 1.72f, 0.93f, 0.87f, -500, 0.000f, 0.00f,0.00f,0.00f, 200, 0.016f, 0.00f,0.00f,0.00f, 0.250f, 0.110f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
+#define REVERB_PRESET_DRIVING_INCAR_RACER \
+ { 26, 1.1f, 0.800f, -1000, 0, -200, 0.17f, 2.00f, 0.41f, 500, 0.007f, 0.00f,0.00f,0.00f, -300, 0.015f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10268.2f, 251.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_DRIVING_INCAR_SPORTS \
+ { 26, 1.1f, 0.800f, -1000, -400, 0, 0.17f, 0.75f, 0.41f, 0, 0.010f, 0.00f,0.00f,0.00f, -500, 0.000f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10268.2f, 251.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_DRIVING_INCAR_LUXURY \
+ { 26, 1.6f, 1.000f, -1000, -2000, -600, 0.13f, 0.41f, 0.46f, -200, 0.010f, 0.00f,0.00f,0.00f, 400, 0.010f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10268.2f, 251.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_DRIVING_FULLGRANDSTAND \
+ { 26, 8.3f, 1.000f, -1000, -1100, -400, 3.01f, 1.37f, 1.28f, -900, 0.090f, 0.00f,0.00f,0.00f, -1500, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10420.2f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \
+ { 26, 8.3f, 1.000f, -1000, 0, -200, 4.62f, 1.75f, 1.40f, -1363, 0.090f, 0.00f,0.00f,0.00f, -1200, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10420.2f, 250.0f, 0.00f, 0x1f }
+#define REVERB_PRESET_DRIVING_TUNNEL \
+ { 26, 3.1f, 0.810f, -1000, -800, -100, 3.42f, 0.94f, 1.31f, -300, 0.051f, 0.00f,0.00f,0.00f, -300, 0.047f, 0.00f,0.00f,0.00f, 0.214f, 0.050f, 0.250f, 0.000f, -5.0f, 5000.0f, 155.3f, 0.00f, 0x20 }
+
+
+// CITY PRESETS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_CITY_STREETS \
+ { 26, 3.0f, 0.780f, -1000, -300, -100, 1.79f, 1.12f, 0.91f, -1100, 0.046f, 0.00f,0.00f,0.00f, -1400, 0.028f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_CITY_SUBWAY \
+ { 26, 3.0f, 0.740f, -1000, -300, -100, 3.01f, 1.23f, 0.91f, -300, 0.046f, 0.00f,0.00f,0.00f, 200, 0.028f, 0.00f,0.00f,0.00f, 0.125f, 0.210f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_CITY_MUSEUM \
+ { 26, 80.3f, 0.820f, -1000, -1500, -1500, 3.28f, 1.40f, 0.57f, -1200, 0.039f, 0.00f,0.00f,-0.00f, -100, 0.034f, 0.00f,0.00f,0.00f, 0.130f, 0.170f, 0.250f, 0.000f, -5.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
+#define REVERB_PRESET_CITY_LIBRARY \
+ { 26, 80.3f, 0.820f, -1000, -1100, -2100, 2.76f, 0.89f, 0.41f, -900, 0.029f, 0.00f,0.00f,-0.00f, -100, 0.020f, 0.00f,0.00f,0.00f, 0.130f, 0.170f, 0.250f, 0.000f, -5.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
+#define REVERB_PRESET_CITY_UNDERPASS \
+ { 26, 3.0f, 0.820f, -1000, -700, -100, 3.57f, 1.12f, 0.91f, -800, 0.059f, 0.00f,0.00f,0.00f, -100, 0.037f, 0.00f,0.00f,0.00f, 0.250f, 0.140f, 0.250f, 0.000f, -7.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+#define REVERB_PRESET_CITY_ABANDONED \
+ { 26, 3.0f, 0.690f, -1000, -200, -100, 3.28f, 1.17f, 0.91f, -700, 0.044f, 0.00f,0.00f,0.00f, -1100, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -3.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
+
+
+// MISC ROOMS
+
+// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
+#define REVERB_PRESET_DUSTYROOM \
+ { 26, 1.8f, 0.560f, -1000, -200, -300, 1.79f, 0.38f, 0.21f, -600, 0.002f, 0.00f,0.00f,0.00f, 200, 0.006f, 0.00f,0.00f,0.00f, 0.202f, 0.050f, 0.250f, 0.000f, -10.0f, 13046.0f, 163.3f, 0.00f, 0x20 }
+#define REVERB_PRESET_CHAPEL \
+ { 26, 19.6f, 0.840f, -1000, -500, 0, 4.62f, 0.64f, 1.23f, -700, 0.032f, 0.00f,0.00f,0.00f, -200, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.110f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
+#define REVERB_PRESET_SMALLWATERROOM \
+ { 26, 36.2f, 0.700f, -1000, -698, 0, 1.51f, 1.25f, 1.14f, -100, 0.020f, 0.00f,0.00f,0.00f, 300, 0.030f, 0.00f,0.00f,0.00f, 0.179f, 0.150f, 0.895f, 0.190f, -7.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
+
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+#endif // EFX-UTIL_H_INCLUDED
\ No newline at end of file
diff --git a/openAL/include/al.h b/openAL/include/al.h
new file mode 100644
index 0000000..1c2f95b
--- /dev/null
+++ b/openAL/include/al.h
@@ -0,0 +1,732 @@
+#ifndef AL_AL_H
+#define AL_AL_H
+
+
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#if defined(_WIN32) && !defined(_XBOX)
+ /* _OPENAL32LIB is deprecated */
+ #if defined(AL_BUILD_LIBRARY) || defined (_OPENAL32LIB)
+ #define AL_API __declspec(dllexport)
+ #else
+ #define AL_API __declspec(dllimport)
+ #endif
+#else
+ #define AL_API extern
+#endif
+
+#if defined(_WIN32)
+ #define AL_APIENTRY __cdecl
+#else
+ #define AL_APIENTRY
+#endif
+
+#if TARGET_OS_MAC
+ #pragma export on
+#endif
+
+/* The OPENAL, ALAPI, and ALAPIENTRY macros are deprecated, but are included for applications porting code
+ from AL 1.0 */
+#define OPENAL
+#define ALAPI AL_API
+#define ALAPIENTRY AL_APIENTRY
+
+#define AL_VERSION_1_0
+#define AL_VERSION_1_1
+
+
+/** 8-bit boolean */
+typedef char ALboolean;
+
+/** character */
+typedef char ALchar;
+
+/** signed 8-bit 2's complement integer */
+typedef char ALbyte;
+
+/** unsigned 8-bit integer */
+typedef unsigned char ALubyte;
+
+/** signed 16-bit 2's complement integer */
+typedef short ALshort;
+
+/** unsigned 16-bit integer */
+typedef unsigned short ALushort;
+
+/** signed 32-bit 2's complement integer */
+typedef int ALint;
+
+/** unsigned 32-bit integer */
+typedef unsigned int ALuint;
+
+/** non-negative 32-bit binary integer size */
+typedef int ALsizei;
+
+/** enumerated 32-bit value */
+typedef int ALenum;
+
+/** 32-bit IEEE754 floating-point */
+typedef float ALfloat;
+
+/** 64-bit IEEE754 floating-point */
+typedef double ALdouble;
+
+/** void type (for opaque pointers only) */
+typedef void ALvoid;
+
+
+/* Enumerant values begin at column 50. No tabs. */
+
+/* bad value */
+#define AL_INVALID -1
+
+#define AL_NONE 0
+
+/* Boolean False. */
+#define AL_FALSE 0
+
+/** Boolean True. */
+#define AL_TRUE 1
+
+/** Indicate Source has relative coordinates. */
+#define AL_SOURCE_RELATIVE 0x202
+
+
+
+/**
+ * Directional source, inner cone angle, in degrees.
+ * Range: [0-360]
+ * Default: 360
+ */
+#define AL_CONE_INNER_ANGLE 0x1001
+
+/**
+ * Directional source, outer cone angle, in degrees.
+ * Range: [0-360]
+ * Default: 360
+ */
+#define AL_CONE_OUTER_ANGLE 0x1002
+
+/**
+ * Specify the pitch to be applied, either at source,
+ * or on mixer results, at listener.
+ * Range: [0.5-2.0]
+ * Default: 1.0
+ */
+#define AL_PITCH 0x1003
+
+/**
+ * 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.
+ */
+#define AL_POSITION 0x1004
+
+/** Specify the current direction. */
+#define AL_DIRECTION 0x1005
+
+/** Specify the current velocity in three dimensional space. */
+#define AL_VELOCITY 0x1006
+
+/**
+ * Indicate whether source is looping.
+ * Type: ALboolean?
+ * Range: [AL_TRUE, AL_FALSE]
+ * Default: FALSE.
+ */
+#define AL_LOOPING 0x1007
+
+/**
+ * Indicate the buffer to provide sound samples.
+ * Type: ALuint.
+ * Range: any valid Buffer id.
+ */
+#define AL_BUFFER 0x1009
+
+/**
+ * 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.
+ */
+#define AL_GAIN 0x100A
+
+/*
+ * Indicate minimum source attenuation
+ * Type: ALfloat
+ * Range: [0.0 - 1.0]
+ *
+ * Logarthmic
+ */
+#define AL_MIN_GAIN 0x100D
+
+/**
+ * Indicate maximum source attenuation
+ * Type: ALfloat
+ * Range: [0.0 - 1.0]
+ *
+ * Logarthmic
+ */
+#define AL_MAX_GAIN 0x100E
+
+/**
+ * Indicate listener orientation.
+ *
+ * at/up
+ */
+#define AL_ORIENTATION 0x100F
+
+/**
+ * Specify the channel mask. (Creative)
+ * Type: ALuint
+ * Range: [0 - 255]
+ */
+#define AL_CHANNEL_MASK 0x3000
+
+
+/**
+ * Source state information.
+ */
+#define AL_SOURCE_STATE 0x1010
+#define AL_INITIAL 0x1011
+#define AL_PLAYING 0x1012
+#define AL_PAUSED 0x1013
+#define AL_STOPPED 0x1014
+
+/**
+ * Buffer Queue params
+ */
+#define AL_BUFFERS_QUEUED 0x1015
+#define AL_BUFFERS_PROCESSED 0x1016
+
+/**
+ * Source buffer position information
+ */
+#define AL_SEC_OFFSET 0x1024
+#define AL_SAMPLE_OFFSET 0x1025
+#define AL_BYTE_OFFSET 0x1026
+
+/*
+ * 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
+ */
+#define AL_SOURCE_TYPE 0x1027
+#define AL_STATIC 0x1028
+#define AL_STREAMING 0x1029
+#define AL_UNDETERMINED 0x1030
+
+/** Sound samples: format specifier. */
+#define AL_FORMAT_MONO8 0x1100
+#define AL_FORMAT_MONO16 0x1101
+#define AL_FORMAT_STEREO8 0x1102
+#define AL_FORMAT_STEREO16 0x1103
+
+/**
+ * source specific reference distance
+ * Type: ALfloat
+ * Range: 0.0 - +inf
+ *
+ * At 0.0, no distance attenuation occurs. Default is
+ * 1.0.
+ */
+#define AL_REFERENCE_DISTANCE 0x1020
+
+/**
+ * source specific rolloff factor
+ * Type: ALfloat
+ * Range: 0.0 - +inf
+ *
+ */
+#define AL_ROLLOFF_FACTOR 0x1021
+
+/**
+ * Directional source, outer cone gain.
+ *
+ * Default: 0.0
+ * Range: [0.0 - 1.0]
+ * Logarithmic
+ */
+#define AL_CONE_OUTER_GAIN 0x1022
+
+/**
+ * Indicate distance above which sources are not
+ * attenuated using the inverse clamped distance model.
+ *
+ * Default: +inf
+ * Type: ALfloat
+ * Range: 0.0 - +inf
+ */
+#define AL_MAX_DISTANCE 0x1023
+
+/**
+ * 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.
+ */
+#define AL_FREQUENCY 0x2001
+#define AL_BITS 0x2002
+#define AL_CHANNELS 0x2003
+#define AL_SIZE 0x2004
+
+/**
+ * Buffer state.
+ *
+ * Not supported for public use (yet).
+ */
+#define AL_UNUSED 0x2010
+#define AL_PENDING 0x2011
+#define AL_PROCESSED 0x2012
+
+
+/** Errors: No Error. */
+#define AL_NO_ERROR AL_FALSE
+
+/**
+ * Invalid Name paramater passed to AL call.
+ */
+#define AL_INVALID_NAME 0xA001
+
+/**
+ * Invalid parameter passed to AL call.
+ */
+#define AL_ILLEGAL_ENUM 0xA002
+#define AL_INVALID_ENUM 0xA002
+
+/**
+ * Invalid enum parameter value.
+ */
+#define AL_INVALID_VALUE 0xA003
+
+/**
+ * Illegal call.
+ */
+#define AL_ILLEGAL_COMMAND 0xA004
+#define AL_INVALID_OPERATION 0xA004
+
+
+/**
+ * No mojo.
+ */
+#define AL_OUT_OF_MEMORY 0xA005
+
+
+/** Context strings: Vendor Name. */
+#define AL_VENDOR 0xB001
+#define AL_VERSION 0xB002
+#define AL_RENDERER 0xB003
+#define AL_EXTENSIONS 0xB004
+
+/** Global tweakage. */
+
+/**
+ * Doppler scale. Default 1.0
+ */
+#define AL_DOPPLER_FACTOR 0xC000
+
+/**
+ * Tweaks speed of propagation.
+ */
+#define AL_DOPPLER_VELOCITY 0xC001
+
+/**
+ * Speed of Sound in units per second
+ */
+#define AL_SPEED_OF_SOUND 0xC003
+
+/**
+ * Distance models
+ *
+ * used in conjunction with DistanceModel
+ *
+ * implicit: NONE, which disances distance attenuation.
+ */
+#define AL_DISTANCE_MODEL 0xD000
+#define AL_INVERSE_DISTANCE 0xD001
+#define AL_INVERSE_DISTANCE_CLAMPED 0xD002
+#define AL_LINEAR_DISTANCE 0xD003
+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004
+#define AL_EXPONENT_DISTANCE 0xD005
+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
+
+
+#if !defined(AL_NO_PROTOTYPES)
+
+/*
+ * Renderer State management
+ */
+AL_API void AL_APIENTRY alEnable( ALenum capability );
+
+AL_API void AL_APIENTRY alDisable( ALenum capability );
+
+AL_API ALboolean AL_APIENTRY alIsEnabled( ALenum capability );
+
+
+/*
+ * State retrieval
+ */
+AL_API const ALchar* AL_APIENTRY alGetString( ALenum param );
+
+AL_API void AL_APIENTRY alGetBooleanv( ALenum param, ALboolean* data );
+
+AL_API void AL_APIENTRY alGetIntegerv( ALenum param, ALint* data );
+
+AL_API void AL_APIENTRY alGetFloatv( ALenum param, ALfloat* data );
+
+AL_API void AL_APIENTRY alGetDoublev( ALenum param, ALdouble* data );
+
+AL_API ALboolean AL_APIENTRY alGetBoolean( ALenum param );
+
+AL_API ALint AL_APIENTRY alGetInteger( ALenum param );
+
+AL_API ALfloat AL_APIENTRY alGetFloat( ALenum param );
+
+AL_API ALdouble AL_APIENTRY alGetDouble( ALenum param );
+
+
+/*
+ * Error support.
+ * Obtain the most recent error generated in the AL state machine.
+ */
+AL_API ALenum AL_APIENTRY alGetError( void );
+
+
+/*
+ * Extension support.
+ * Query for the presence of an extension, and obtain any appropriate
+ * function pointers and enum values.
+ */
+AL_API ALboolean AL_APIENTRY alIsExtensionPresent( const ALchar* extname );
+
+AL_API void* AL_APIENTRY alGetProcAddress( const ALchar* fname );
+
+AL_API ALenum AL_APIENTRY alGetEnumValue( const ALchar* ename );
+
+
+/*
+ * LISTENER
+ * Listener represents the location and orientation of the
+ * 'user' in 3D-space.
+ *
+ * Properties include: -
+ *
+ * Gain AL_GAIN ALfloat
+ * Position AL_POSITION ALfloat[3]
+ * Velocity AL_VELOCITY ALfloat[3]
+ * Orientation AL_ORIENTATION ALfloat[6] (Forward then Up vectors)
+*/
+
+/*
+ * Set Listener parameters
+ */
+AL_API void AL_APIENTRY alListenerf( ALenum param, ALfloat value );
+
+AL_API void AL_APIENTRY alListener3f( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+
+AL_API void AL_APIENTRY alListenerfv( ALenum param, const ALfloat* values );
+
+AL_API void AL_APIENTRY alListeneri( ALenum param, ALint value );
+
+AL_API void AL_APIENTRY alListener3i( ALenum param, ALint value1, ALint value2, ALint value3 );
+
+AL_API void AL_APIENTRY alListeneriv( ALenum param, const ALint* values );
+
+/*
+ * Get Listener parameters
+ */
+AL_API void AL_APIENTRY alGetListenerf( ALenum param, ALfloat* value );
+
+AL_API void AL_APIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
+
+AL_API void AL_APIENTRY alGetListenerfv( ALenum param, ALfloat* values );
+
+AL_API void AL_APIENTRY alGetListeneri( ALenum param, ALint* value );
+
+AL_API void AL_APIENTRY alGetListener3i( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
+
+AL_API void AL_APIENTRY alGetListeneriv( ALenum param, ALint* values );
+
+
+/**
+ * SOURCE
+ * Sources represent individual sound objects in 3D-space.
+ * 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.
+ *
+ * Properties include: -
+ *
+ * Gain AL_GAIN ALfloat
+ * Min Gain AL_MIN_GAIN ALfloat
+ * Max Gain AL_MAX_GAIN ALfloat
+ * Position AL_POSITION ALfloat[3]
+ * Velocity AL_VELOCITY ALfloat[3]
+ * Direction AL_DIRECTION ALfloat[3]
+ * Head Relative Mode AL_SOURCE_RELATIVE ALint (AL_TRUE or AL_FALSE)
+ * Reference Distance AL_REFERENCE_DISTANCE ALfloat
+ * Max Distance AL_MAX_DISTANCE ALfloat
+ * RollOff Factor AL_ROLLOFF_FACTOR ALfloat
+ * Inner Angle AL_CONE_INNER_ANGLE ALint or ALfloat
+ * Outer Angle AL_CONE_OUTER_ANGLE ALint or ALfloat
+ * Cone Outer Gain AL_CONE_OUTER_GAIN ALint or ALfloat
+ * Pitch AL_PITCH ALfloat
+ * Looping AL_LOOPING ALint (AL_TRUE or AL_FALSE)
+ * MS Offset AL_MSEC_OFFSET ALint or ALfloat
+ * Byte Offset AL_BYTE_OFFSET ALint or ALfloat
+ * Sample Offset AL_SAMPLE_OFFSET ALint or ALfloat
+ * Attached Buffer AL_BUFFER ALint
+ * State (Query only) AL_SOURCE_STATE ALint
+ * Buffers Queued (Query only) AL_BUFFERS_QUEUED ALint
+ * Buffers Processed (Query only) AL_BUFFERS_PROCESSED ALint
+ */
+
+/* Create Source objects */
+AL_API void AL_APIENTRY alGenSources( ALsizei n, ALuint* sources );
+
+/* Delete Source objects */
+AL_API void AL_APIENTRY alDeleteSources( ALsizei n, const ALuint* sources );
+
+/* Verify a handle is a valid Source */
+AL_API ALboolean AL_APIENTRY alIsSource( ALuint sid );
+
+/*
+ * Set Source parameters
+ */
+AL_API void AL_APIENTRY alSourcef( ALuint sid, ALenum param, ALfloat value );
+
+AL_API void AL_APIENTRY alSource3f( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+
+AL_API void AL_APIENTRY alSourcefv( ALuint sid, ALenum param, const ALfloat* values );
+
+AL_API void AL_APIENTRY alSourcei( ALuint sid, ALenum param, ALint value );
+
+AL_API void AL_APIENTRY alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
+
+AL_API void AL_APIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values );
+
+/*
+ * Get Source parameters
+ */
+AL_API void AL_APIENTRY alGetSourcef( ALuint sid, ALenum param, ALfloat* value );
+
+AL_API void AL_APIENTRY alGetSource3f( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+
+AL_API void AL_APIENTRY alGetSourcefv( ALuint sid, ALenum param, ALfloat* values );
+
+AL_API void AL_APIENTRY alGetSourcei( ALuint sid, ALenum param, ALint* value );
+
+AL_API void AL_APIENTRY alGetSource3i( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+
+AL_API void AL_APIENTRY alGetSourceiv( ALuint sid, ALenum param, ALint* values );
+
+
+/*
+ * Source vector based playback calls
+ */
+
+/* Play, replay, or resume (if paused) a list of Sources */
+AL_API void AL_APIENTRY alSourcePlayv( ALsizei ns, const ALuint *sids );
+
+/* Stop a list of Sources */
+AL_API void AL_APIENTRY alSourceStopv( ALsizei ns, const ALuint *sids );
+
+/* Rewind a list of Sources */
+AL_API void AL_APIENTRY alSourceRewindv( ALsizei ns, const ALuint *sids );
+
+/* Pause a list of Sources */
+AL_API void AL_APIENTRY alSourcePausev( ALsizei ns, const ALuint *sids );
+
+/*
+ * Source based playback calls
+ */
+
+/* Play, replay, or resume a Source */
+AL_API void AL_APIENTRY alSourcePlay( ALuint sid );
+
+/* Stop a Source */
+AL_API void AL_APIENTRY alSourceStop( ALuint sid );
+
+/* Rewind a Source (set playback postiton to beginning) */
+AL_API void AL_APIENTRY alSourceRewind( ALuint sid );
+
+/* Pause a Source */
+AL_API void AL_APIENTRY alSourcePause( ALuint sid );
+
+/*
+ * Source Queuing
+ */
+AL_API void AL_APIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, const ALuint *bids );
+
+AL_API void AL_APIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids );
+
+
+/**
+ * BUFFER
+ * Buffer objects are storage space for sample data.
+ * Buffers are referred to by Sources. One Buffer can be used
+ * by multiple Sources.
+ *
+ * Properties include: -
+ *
+ * Frequency (Query only) AL_FREQUENCY ALint
+ * Size (Query only) AL_SIZE ALint
+ * Bits (Query only) AL_BITS ALint
+ * Channels (Query only) AL_CHANNELS ALint
+ */
+
+/* Create Buffer objects */
+AL_API void AL_APIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
+
+/* Delete Buffer objects */
+AL_API void AL_APIENTRY alDeleteBuffers( ALsizei n, const ALuint* buffers );
+
+/* Verify a handle is a valid Buffer */
+AL_API ALboolean AL_APIENTRY alIsBuffer( ALuint bid );
+
+/* Specify the data to be copied into a buffer */
+AL_API void AL_APIENTRY alBufferData( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
+
+/*
+ * Set Buffer parameters
+ */
+AL_API void AL_APIENTRY alBufferf( ALuint bid, ALenum param, ALfloat value );
+
+AL_API void AL_APIENTRY alBuffer3f( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+
+AL_API void AL_APIENTRY alBufferfv( ALuint bid, ALenum param, const ALfloat* values );
+
+AL_API void AL_APIENTRY alBufferi( ALuint bid, ALenum param, ALint value );
+
+AL_API void AL_APIENTRY alBuffer3i( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
+
+AL_API void AL_APIENTRY alBufferiv( ALuint bid, ALenum param, const ALint* values );
+
+/*
+ * Get Buffer parameters
+ */
+AL_API void AL_APIENTRY alGetBufferf( ALuint bid, ALenum param, ALfloat* value );
+
+AL_API void AL_APIENTRY alGetBuffer3f( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+
+AL_API void AL_APIENTRY alGetBufferfv( ALuint bid, ALenum param, ALfloat* values );
+
+AL_API void AL_APIENTRY alGetBufferi( ALuint bid, ALenum param, ALint* value );
+
+AL_API void AL_APIENTRY alGetBuffer3i( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+
+AL_API void AL_APIENTRY alGetBufferiv( ALuint bid, ALenum param, ALint* values );
+
+
+/*
+ * Global Parameters
+ */
+AL_API void AL_APIENTRY alDopplerFactor( ALfloat value );
+
+AL_API void AL_APIENTRY alDopplerVelocity( ALfloat value );
+
+AL_API void AL_APIENTRY alSpeedOfSound( ALfloat value );
+
+AL_API void AL_APIENTRY alDistanceModel( ALenum distanceModel );
+
+#else /* AL_NO_PROTOTYPES */
+
+typedef void (AL_APIENTRY *LPALENABLE)( ALenum capability );
+typedef void (AL_APIENTRY *LPALDISABLE)( ALenum capability );
+typedef ALboolean (AL_APIENTRY *LPALISENABLED)( ALenum capability );
+typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)( ALenum param );
+typedef void (AL_APIENTRY *LPALGETBOOLEANV)( ALenum param, ALboolean* data );
+typedef void (AL_APIENTRY *LPALGETINTEGERV)( ALenum param, ALint* data );
+typedef void (AL_APIENTRY *LPALGETFLOATV)( ALenum param, ALfloat* data );
+typedef void (AL_APIENTRY *LPALGETDOUBLEV)( ALenum param, ALdouble* data );
+typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)( ALenum param );
+typedef ALint (AL_APIENTRY *LPALGETINTEGER)( ALenum param );
+typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)( ALenum param );
+typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)( ALenum param );
+typedef ALenum (AL_APIENTRY *LPALGETERROR)( void );
+typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar* extname );
+typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)( const ALchar* fname );
+typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)( const ALchar* ename );
+typedef void (AL_APIENTRY *LPALLISTENERF)( ALenum param, ALfloat value );
+typedef void (AL_APIENTRY *LPALLISTENER3F)( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+typedef void (AL_APIENTRY *LPALLISTENERFV)( ALenum param, const ALfloat* values );
+typedef void (AL_APIENTRY *LPALLISTENERI)( ALenum param, ALint value );
+typedef void (AL_APIENTRY *LPALLISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 );
+typedef void (AL_APIENTRY *LPALLISTENERIV)( ALenum param, const ALint* values );
+typedef void (AL_APIENTRY *LPALGETLISTENERF)( ALenum param, ALfloat* value );
+typedef void (AL_APIENTRY *LPALGETLISTENER3F)( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
+typedef void (AL_APIENTRY *LPALGETLISTENERFV)( ALenum param, ALfloat* values );
+typedef void (AL_APIENTRY *LPALGETLISTENERI)( ALenum param, ALint* value );
+typedef void (AL_APIENTRY *LPALGETLISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
+typedef void (AL_APIENTRY *LPALGETLISTENERIV)( ALenum param, ALint* values );
+typedef void (AL_APIENTRY *LPALGENSOURCES)( ALsizei n, ALuint* sources );
+typedef void (AL_APIENTRY *LPALDELETESOURCES)( ALsizei n, const ALuint* sources );
+typedef ALboolean (AL_APIENTRY *LPALISSOURCE)( ALuint sid );
+typedef void (AL_APIENTRY *LPALSOURCEF)( ALuint sid, ALenum param, ALfloat value);
+typedef void (AL_APIENTRY *LPALSOURCE3F)( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+typedef void (AL_APIENTRY *LPALSOURCEFV)( ALuint sid, ALenum param, const ALfloat* values );
+typedef void (AL_APIENTRY *LPALSOURCEI)( ALuint sid, ALenum param, ALint value);
+typedef void (AL_APIENTRY *LPALSOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
+typedef void (AL_APIENTRY *LPALSOURCEIV)( ALuint sid, ALenum param, const ALint* values );
+typedef void (AL_APIENTRY *LPALGETSOURCEF)( ALuint sid, ALenum param, ALfloat* value );
+typedef void (AL_APIENTRY *LPALGETSOURCE3F)( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+typedef void (AL_APIENTRY *LPALGETSOURCEFV)( ALuint sid, ALenum param, ALfloat* values );
+typedef void (AL_APIENTRY *LPALGETSOURCEI)( ALuint sid, ALenum param, ALint* value );
+typedef void (AL_APIENTRY *LPALGETSOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+typedef void (AL_APIENTRY *LPALGETSOURCEIV)( ALuint sid, ALenum param, ALint* values );
+typedef void (AL_APIENTRY *LPALSOURCEPLAYV)( ALsizei ns, const ALuint *sids );
+typedef void (AL_APIENTRY *LPALSOURCESTOPV)( ALsizei ns, const ALuint *sids );
+typedef void (AL_APIENTRY *LPALSOURCEREWINDV)( ALsizei ns, const ALuint *sids );
+typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)( ALsizei ns, const ALuint *sids );
+typedef void (AL_APIENTRY *LPALSOURCEPLAY)( ALuint sid );
+typedef void (AL_APIENTRY *LPALSOURCESTOP)( ALuint sid );
+typedef void (AL_APIENTRY *LPALSOURCEREWIND)( ALuint sid );
+typedef void (AL_APIENTRY *LPALSOURCEPAUSE)( ALuint sid );
+typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, const ALuint *bids );
+typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, ALuint *bids );
+typedef void (AL_APIENTRY *LPALGENBUFFERS)( ALsizei n, ALuint* buffers );
+typedef void (AL_APIENTRY *LPALDELETEBUFFERS)( ALsizei n, const ALuint* buffers );
+typedef ALboolean (AL_APIENTRY *LPALISBUFFER)( ALuint bid );
+typedef void (AL_APIENTRY *LPALBUFFERDATA)( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
+typedef void (AL_APIENTRY *LPALBUFFERF)( ALuint bid, ALenum param, ALfloat value);
+typedef void (AL_APIENTRY *LPALBUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+typedef void (AL_APIENTRY *LPALBUFFERFV)( ALuint bid, ALenum param, const ALfloat* values );
+typedef void (AL_APIENTRY *LPALBUFFERI)( ALuint bid, ALenum param, ALint value);
+typedef void (AL_APIENTRY *LPALBUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
+typedef void (AL_APIENTRY *LPALBUFFERIV)( ALuint bid, ALenum param, const ALint* values );
+typedef void (AL_APIENTRY *LPALGETBUFFERF)( ALuint bid, ALenum param, ALfloat* value );
+typedef void (AL_APIENTRY *LPALGETBUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+typedef void (AL_APIENTRY *LPALGETBUFFERFV)( ALuint bid, ALenum param, ALfloat* values );
+typedef void (AL_APIENTRY *LPALGETBUFFERI)( ALuint bid, ALenum param, ALint* value );
+typedef void (AL_APIENTRY *LPALGETBUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+typedef void (AL_APIENTRY *LPALGETBUFFERIV)( ALuint bid, ALenum param, ALint* values );
+typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)( ALfloat value );
+typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)( ALfloat value );
+typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)( ALfloat value );
+typedef void (AL_APIENTRY *LPALDISTANCEMODEL)( ALenum distanceModel );
+
+#endif /* AL_NO_PROTOTYPES */
+
+#if TARGET_OS_MAC
+ #pragma export off
+#endif
+
+#if defined(__cplusplus)
+} /* extern "C" */
+#endif
+
+#endif /* AL_AL_H */
diff --git a/openAL/include/alc.h b/openAL/include/alc.h
new file mode 100644
index 0000000..b0bbfbe
--- /dev/null
+++ b/openAL/include/alc.h
@@ -0,0 +1,281 @@
+#ifndef AL_ALC_H
+#define AL_ALC_H
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#if defined(_WIN32) && !defined(_XBOX)
+ /* _OPENAL32LIB is deprecated */
+ #if defined(AL_BUILD_LIBRARY) || defined (_OPENAL32LIB)
+ #define ALC_API __declspec(dllexport)
+ #else
+ #define ALC_API __declspec(dllimport)
+ #endif
+#else
+ #if defined(AL_BUILD_LIBRARY) && defined(HAVE_GCC_VISIBILITY)
+ #define ALC_API __attribute__((visibility("default")))
+ #else
+ #define ALC_API extern
+ #endif
+#endif
+
+#if defined(_WIN32)
+ #define ALC_APIENTRY __cdecl
+#else
+ #define ALC_APIENTRY
+#endif
+
+#if defined(TARGET_OS_MAC) && TARGET_OS_MAC
+ #pragma export on
+#endif
+
+/*
+ * The ALCAPI, ALCAPIENTRY, and ALC_INVALID macros are deprecated, but are
+ * included for applications porting code from AL 1.0
+ */
+#define ALCAPI ALC_API
+#define ALCAPIENTRY ALC_APIENTRY
+#define ALC_INVALID 0
+
+
+#define ALC_VERSION_0_1 1
+
+typedef struct ALCdevice_struct ALCdevice;
+typedef struct ALCcontext_struct ALCcontext;
+
+
+/** 8-bit boolean */
+typedef char ALCboolean;
+
+/** character */
+typedef char ALCchar;
+
+/** signed 8-bit 2's complement integer */
+typedef char ALCbyte;
+
+/** unsigned 8-bit integer */
+typedef unsigned char ALCubyte;
+
+/** signed 16-bit 2's complement integer */
+typedef short ALCshort;
+
+/** unsigned 16-bit integer */
+typedef unsigned short ALCushort;
+
+/** signed 32-bit 2's complement integer */
+typedef int ALCint;
+
+/** unsigned 32-bit integer */
+typedef unsigned int ALCuint;
+
+/** non-negative 32-bit binary integer size */
+typedef int ALCsizei;
+
+/** enumerated 32-bit value */
+typedef int ALCenum;
+
+/** 32-bit IEEE754 floating-point */
+typedef float ALCfloat;
+
+/** 64-bit IEEE754 floating-point */
+typedef double ALCdouble;
+
+/** void type (for opaque pointers only) */
+typedef void ALCvoid;
+
+
+/* Enumerant values begin at column 50. No tabs. */
+
+/* Boolean False. */
+#define ALC_FALSE 0
+
+/* Boolean True. */
+#define ALC_TRUE 1
+
+/**
+ * followed by Hz
+ */
+#define ALC_FREQUENCY 0x1007
+
+/**
+ * followed by Hz
+ */
+#define ALC_REFRESH 0x1008
+
+/**
+ * followed by AL_TRUE, AL_FALSE
+ */
+#define ALC_SYNC 0x1009
+
+/**
+ * followed by Num of requested Mono (3D) Sources
+ */
+#define ALC_MONO_SOURCES 0x1010
+
+/**
+ * followed by Num of requested Stereo Sources
+ */
+#define ALC_STEREO_SOURCES 0x1011
+
+/**
+ * errors
+ */
+
+/**
+ * No error
+ */
+#define ALC_NO_ERROR ALC_FALSE
+
+/**
+ * No device
+ */
+#define ALC_INVALID_DEVICE 0xA001
+
+/**
+ * invalid context ID
+ */
+#define ALC_INVALID_CONTEXT 0xA002
+
+/**
+ * bad enum
+ */
+#define ALC_INVALID_ENUM 0xA003
+
+/**
+ * bad value
+ */
+#define ALC_INVALID_VALUE 0xA004
+
+/**
+ * Out of memory.
+ */
+#define ALC_OUT_OF_MEMORY 0xA005
+
+
+/**
+ * The Specifier string for default device
+ */
+#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004
+#define ALC_DEVICE_SPECIFIER 0x1005
+#define ALC_EXTENSIONS 0x1006
+
+#define ALC_MAJOR_VERSION 0x1000
+#define ALC_MINOR_VERSION 0x1001
+
+#define ALC_ATTRIBUTES_SIZE 0x1002
+#define ALC_ALL_ATTRIBUTES 0x1003
+
+/**
+ * ALC_ENUMERATE_ALL_EXT enums
+ */
+#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012
+#define ALC_ALL_DEVICES_SPECIFIER 0x1013
+
+/**
+ * Capture extension
+ */
+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310
+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311
+#define ALC_CAPTURE_SAMPLES 0x312
+
+
+/*
+ * Context Management
+ */
+ALC_API ALCcontext * ALC_APIENTRY alcCreateContext( ALCdevice *device, const ALCint* attrlist );
+
+ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent( ALCcontext *context );
+
+ALC_API void ALC_APIENTRY alcProcessContext( ALCcontext *context );
+
+ALC_API void ALC_APIENTRY alcSuspendContext( ALCcontext *context );
+
+ALC_API void ALC_APIENTRY alcDestroyContext( ALCcontext *context );
+
+ALC_API ALCcontext * ALC_APIENTRY alcGetCurrentContext( void );
+
+ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice( ALCcontext *context );
+
+
+/*
+ * Device Management
+ */
+ALC_API ALCdevice * ALC_APIENTRY alcOpenDevice( const ALCchar *devicename );
+
+ALC_API ALCboolean ALC_APIENTRY alcCloseDevice( ALCdevice *device );
+
+
+/*
+ * Error support.
+ * Obtain the most recent Context error
+ */
+ALC_API ALCenum ALC_APIENTRY alcGetError( ALCdevice *device );
+
+
+/*
+ * Extension support.
+ * Query for the presence of an extension, and obtain any appropriate
+ * function pointers and enum values.
+ */
+ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent( ALCdevice *device, const ALCchar *extname );
+
+ALC_API void * ALC_APIENTRY alcGetProcAddress( ALCdevice *device, const ALCchar *funcname );
+
+ALC_API ALCenum ALC_APIENTRY alcGetEnumValue( ALCdevice *device, const ALCchar *enumname );
+
+
+/*
+ * Query functions
+ */
+ALC_API const ALCchar * ALC_APIENTRY alcGetString( ALCdevice *device, ALCenum param );
+
+ALC_API void ALC_APIENTRY alcGetIntegerv( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *data );
+
+
+/*
+ * Capture functions
+ */
+ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
+
+ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice( ALCdevice *device );
+
+ALC_API void ALC_APIENTRY alcCaptureStart( ALCdevice *device );
+
+ALC_API void ALC_APIENTRY alcCaptureStop( ALCdevice *device );
+
+ALC_API void ALC_APIENTRY alcCaptureSamples( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
+
+/*
+ * Pointer-to-function types, useful for dynamically getting ALC entry points.
+ */
+typedef ALCcontext * (ALC_APIENTRY *LPALCCREATECONTEXT) (ALCdevice *device, const ALCint *attrlist);
+typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)( ALCcontext *context );
+typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)( ALCcontext *context );
+typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)( ALCcontext *context );
+typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)( ALCcontext *context );
+typedef ALCcontext * (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)( void );
+typedef ALCdevice * (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)( ALCcontext *context );
+typedef ALCdevice * (ALC_APIENTRY *LPALCOPENDEVICE)( const ALCchar *devicename );
+typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)( ALCdevice *device );
+typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)( ALCdevice *device );
+typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)( ALCdevice *device, const ALCchar *extname );
+typedef void * (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname );
+typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname );
+typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)( ALCdevice *device, ALCenum param );
+typedef void (ALC_APIENTRY *LPALCGETINTEGERV)( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *dest );
+typedef ALCdevice * (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
+typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)( ALCdevice *device );
+typedef void (ALC_APIENTRY *LPALCCAPTURESTART)( ALCdevice *device );
+typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)( ALCdevice *device );
+typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
+
+#if defined(TARGET_OS_MAC) && TARGET_OS_MAC
+ #pragma export off
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* AL_ALC_H */
diff --git a/openAL/include/efx-creative.h b/openAL/include/efx-creative.h
new file mode 100644
index 0000000..4ea9da6
--- /dev/null
+++ b/openAL/include/efx-creative.h
@@ -0,0 +1,151 @@
+#ifndef __efxcreative_h_
+#define __efxcreative_h_
+
+/**
+ * efx-creative.h - Environmental Audio Extensions
+ * for OpenAL Effects Extension.
+ *
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * 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. */
+#define AL_EAXREVERB_DENSITY 0x0001
+#define AL_EAXREVERB_DIFFUSION 0x0002
+#define AL_EAXREVERB_GAIN 0x0003
+#define AL_EAXREVERB_GAINHF 0x0004
+#define AL_EAXREVERB_GAINLF 0x0005
+#define AL_EAXREVERB_DECAY_TIME 0x0006
+#define AL_EAXREVERB_DECAY_HFRATIO 0x0007
+#define AL_EAXREVERB_DECAY_LFRATIO 0x0008
+#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009
+#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A
+#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B
+#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C
+#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D
+#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E
+#define AL_EAXREVERB_ECHO_TIME 0x000F
+#define AL_EAXREVERB_ECHO_DEPTH 0x0010
+#define AL_EAXREVERB_MODULATION_TIME 0x0011
+#define AL_EAXREVERB_MODULATION_DEPTH 0x0012
+#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013
+#define AL_EAXREVERB_HFREFERENCE 0x0014
+#define AL_EAXREVERB_LFREFERENCE 0x0015
+#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016
+#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017
+
+/* Effect type definitions to be used with AL_EFFECT_TYPE. */
+#define AL_EFFECT_EAXREVERB 0x8000
+
+
+
+ /**********************************************************
+ * Effect parameter structures, value definitions, ranges and defaults.
+ */
+
+/**
+ * AL reverb effect parameter ranges and defaults
+ */
+#define AL_EAXREVERB_MIN_DENSITY 0.0f
+#define AL_EAXREVERB_MAX_DENSITY 1.0f
+#define AL_EAXREVERB_DEFAULT_DENSITY 1.0f
+
+#define AL_EAXREVERB_MIN_DIFFUSION 0.0f
+#define AL_EAXREVERB_MAX_DIFFUSION 1.0f
+#define AL_EAXREVERB_DEFAULT_DIFFUSION 1.0f
+
+#define AL_EAXREVERB_MIN_GAIN 0.0f
+#define AL_EAXREVERB_MAX_GAIN 1.0f
+#define AL_EAXREVERB_DEFAULT_GAIN 0.32f
+
+#define AL_EAXREVERB_MIN_GAINHF 0.0f
+#define AL_EAXREVERB_MAX_GAINHF 1.0f
+#define AL_EAXREVERB_DEFAULT_GAINHF 0.89f
+
+#define AL_EAXREVERB_MIN_GAINLF 0.0f
+#define AL_EAXREVERB_MAX_GAINLF 1.0f
+#define AL_EAXREVERB_DEFAULT_GAINLF 1.0f
+
+#define AL_EAXREVERB_MIN_DECAY_TIME 0.1f
+#define AL_EAXREVERB_MAX_DECAY_TIME 20.0f
+#define AL_EAXREVERB_DEFAULT_DECAY_TIME 1.49f
+
+#define AL_EAXREVERB_MIN_DECAY_HFRATIO 0.1f
+#define AL_EAXREVERB_MAX_DECAY_HFRATIO 2.0f
+#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO 0.83f
+
+#define AL_EAXREVERB_MIN_DECAY_LFRATIO 0.1f
+#define AL_EAXREVERB_MAX_DECAY_LFRATIO 2.0f
+#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO 1.0f
+
+#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN 0.0f
+#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN 3.16f
+#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN 0.05f
+
+#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY 0.0f
+#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY 0.3f
+#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY 0.007f
+
+#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN {0.0f, 0.0f, 0.0f}
+
+#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN 0.0f
+#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN 10.0f
+#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN 1.26f
+
+#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY 0.0f
+#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY 0.1f
+#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY 0.011f
+
+#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN {0.0f, 0.0f, 0.0f}
+
+#define AL_EAXREVERB_MIN_ECHO_TIME 0.075f
+#define AL_EAXREVERB_MAX_ECHO_TIME 0.25f
+#define AL_EAXREVERB_DEFAULT_ECHO_TIME 0.25f
+
+#define AL_EAXREVERB_MIN_ECHO_DEPTH 0.0f
+#define AL_EAXREVERB_MAX_ECHO_DEPTH 1.0f
+#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH 0.0f
+
+#define AL_EAXREVERB_MIN_MODULATION_TIME 0.04f
+#define AL_EAXREVERB_MAX_MODULATION_TIME 4.0f
+#define AL_EAXREVERB_DEFAULT_MODULATION_TIME 0.25f
+
+#define AL_EAXREVERB_MIN_MODULATION_DEPTH 0.0f
+#define AL_EAXREVERB_MAX_MODULATION_DEPTH 1.0f
+#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH 0.0f
+
+#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF 0.892f
+#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF 1.0f
+#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF 0.994f
+
+#define AL_EAXREVERB_MIN_HFREFERENCE 1000.0f
+#define AL_EAXREVERB_MAX_HFREFERENCE 20000.0f
+#define AL_EAXREVERB_DEFAULT_HFREFERENCE 5000.0f
+
+#define AL_EAXREVERB_MIN_LFREFERENCE 20.0f
+#define AL_EAXREVERB_MAX_LFREFERENCE 1000.0f
+#define AL_EAXREVERB_DEFAULT_LFREFERENCE 250.0f
+
+#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR 0.0f
+#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR 10.0f
+#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR 0.0f
+
+#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE
+#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE
+#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __efxcreative_h_ */
diff --git a/openAL/include/efx.h b/openAL/include/efx.h
new file mode 100644
index 0000000..fece160
--- /dev/null
+++ b/openAL/include/efx.h
@@ -0,0 +1,737 @@
+#ifndef __efx_h_
+#define __efx_h_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define 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.
+ */
+#define ALC_EFX_MAJOR_VERSION 0x20001
+#define ALC_EFX_MINOR_VERSION 0x20002
+#define ALC_MAX_AUXILIARY_SENDS 0x20003
+
+
+
+
+/**
+ * Listener definitions to be used with alListener functions.
+ * These values must be unique and not conflict with other
+ * al listener values.
+ */
+#define AL_METERS_PER_UNIT 0x20004
+
+
+
+
+/**
+ * Source definitions to be used with alSource functions.
+ * These values must be unique and not conflict with other
+ * al source values.
+ */
+#define AL_DIRECT_FILTER 0x20005
+#define AL_AUXILIARY_SEND_FILTER 0x20006
+#define AL_AIR_ABSORPTION_FACTOR 0x20007
+#define AL_ROOM_ROLLOFF_FACTOR 0x20008
+#define AL_CONE_OUTER_GAINHF 0x20009
+#define AL_DIRECT_FILTER_GAINHF_AUTO 0x2000A
+#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B
+#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C
+
+
+
+
+/**
+ * Effect object definitions to be used with alEffect functions.
+ *
+ * Effect parameter value definitions, ranges, and defaults
+ * appear farther down in this file.
+ */
+
+/* Reverb Parameters */
+#define AL_REVERB_DENSITY 0x0001
+#define AL_REVERB_DIFFUSION 0x0002
+#define AL_REVERB_GAIN 0x0003
+#define AL_REVERB_GAINHF 0x0004
+#define AL_REVERB_DECAY_TIME 0x0005
+#define AL_REVERB_DECAY_HFRATIO 0x0006
+#define AL_REVERB_REFLECTIONS_GAIN 0x0007
+#define AL_REVERB_REFLECTIONS_DELAY 0x0008
+#define AL_REVERB_LATE_REVERB_GAIN 0x0009
+#define AL_REVERB_LATE_REVERB_DELAY 0x000A
+#define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B
+#define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C
+#define AL_REVERB_DECAY_HFLIMIT 0x000D
+
+/* Chorus Parameters */
+#define AL_CHORUS_WAVEFORM 0x0001
+#define AL_CHORUS_PHASE 0x0002
+#define AL_CHORUS_RATE 0x0003
+#define AL_CHORUS_DEPTH 0x0004
+#define AL_CHORUS_FEEDBACK 0x0005
+#define AL_CHORUS_DELAY 0x0006
+
+/* Distortion Parameters */
+#define AL_DISTORTION_EDGE 0x0001
+#define AL_DISTORTION_GAIN 0x0002
+#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003
+#define AL_DISTORTION_EQCENTER 0x0004
+#define AL_DISTORTION_EQBANDWIDTH 0x0005
+
+/* Echo Parameters */
+#define AL_ECHO_DELAY 0x0001
+#define AL_ECHO_LRDELAY 0x0002
+#define AL_ECHO_DAMPING 0x0003
+#define AL_ECHO_FEEDBACK 0x0004
+#define AL_ECHO_SPREAD 0x0005
+
+/* Flanger Parameters */
+#define AL_FLANGER_WAVEFORM 0x0001
+#define AL_FLANGER_PHASE 0x0002
+#define AL_FLANGER_RATE 0x0003
+#define AL_FLANGER_DEPTH 0x0004
+#define AL_FLANGER_FEEDBACK 0x0005
+#define AL_FLANGER_DELAY 0x0006
+
+/* Frequencyshifter Parameters */
+#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001
+#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002
+#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003
+
+/* Vocalmorpher Parameters */
+#define AL_VOCAL_MORPHER_PHONEMEA 0x0001
+#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002
+#define AL_VOCAL_MORPHER_PHONEMEB 0x0003
+#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004
+#define AL_VOCAL_MORPHER_WAVEFORM 0x0005
+#define AL_VOCAL_MORPHER_RATE 0x0006
+
+/* Pitchshifter Parameters */
+#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001
+#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002
+
+/* Ringmodulator Parameters */
+#define AL_RING_MODULATOR_FREQUENCY 0x0001
+#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002
+#define AL_RING_MODULATOR_WAVEFORM 0x0003
+
+/* Autowah Parameters */
+#define AL_AUTOWAH_ATTACK_TIME 0x0001
+#define AL_AUTOWAH_RELEASE_TIME 0x0002
+#define AL_AUTOWAH_RESONANCE 0x0003
+#define AL_AUTOWAH_PEAK_GAIN 0x0004
+
+/* Compressor Parameters */
+#define AL_COMPRESSOR_ONOFF 0x0001
+
+/* Equalizer Parameters */
+#define AL_EQUALIZER_LOW_GAIN 0x0001
+#define AL_EQUALIZER_LOW_CUTOFF 0x0002
+#define AL_EQUALIZER_MID1_GAIN 0x0003
+#define AL_EQUALIZER_MID1_CENTER 0x0004
+#define AL_EQUALIZER_MID1_WIDTH 0x0005
+#define AL_EQUALIZER_MID2_GAIN 0x0006
+#define AL_EQUALIZER_MID2_CENTER 0x0007
+#define AL_EQUALIZER_MID2_WIDTH 0x0008
+#define AL_EQUALIZER_HIGH_GAIN 0x0009
+#define AL_EQUALIZER_HIGH_CUTOFF 0x000A
+
+/* Effect type */
+#define AL_EFFECT_FIRST_PARAMETER 0x0000
+#define AL_EFFECT_LAST_PARAMETER 0x8000
+#define AL_EFFECT_TYPE 0x8001
+
+/* Effect type definitions to be used with AL_EFFECT_TYPE. */
+#define AL_EFFECT_NULL 0x0000 /* Can also be used as an Effect Object ID */
+#define AL_EFFECT_REVERB 0x0001
+#define AL_EFFECT_CHORUS 0x0002
+#define AL_EFFECT_DISTORTION 0x0003
+#define AL_EFFECT_ECHO 0x0004
+#define AL_EFFECT_FLANGER 0x0005
+#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
+#define AL_EFFECT_VOCAL_MORPHER 0x0007
+#define AL_EFFECT_PITCH_SHIFTER 0x0008
+#define AL_EFFECT_RING_MODULATOR 0x0009
+#define AL_EFFECT_AUTOWAH 0x000A
+#define AL_EFFECT_COMPRESSOR 0x000B
+#define AL_EFFECT_EQUALIZER 0x000C
+
+/**
+ * Auxiliary Slot object definitions to be used with alAuxiliaryEffectSlot functions.
+ */
+#define AL_EFFECTSLOT_EFFECT 0x0001
+#define AL_EFFECTSLOT_GAIN 0x0002
+#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
+
+/**
+ * Value to be used as an Auxiliary Slot ID to disable a source send..
+ */
+#define AL_EFFECTSLOT_NULL 0x0000
+
+
+
+/**
+ * Filter object definitions to be used with alFilter functions.
+ */
+
+/* Lowpass parameters. */
+#define AL_LOWPASS_GAIN 0x0001
+#define AL_LOWPASS_GAINHF 0x0002
+
+/* Highpass Parameters */
+#define AL_HIGHPASS_GAIN 0x0001
+#define AL_HIGHPASS_GAINLF 0x0002
+
+/* Bandpass Parameters */
+#define AL_BANDPASS_GAIN 0x0001
+#define AL_BANDPASS_GAINLF 0x0002
+#define AL_BANDPASS_GAINHF 0x0003
+
+/* Filter type */
+#define AL_FILTER_FIRST_PARAMETER 0x0000
+#define AL_FILTER_LAST_PARAMETER 0x8000
+#define AL_FILTER_TYPE 0x8001
+
+/* Filter type definitions to be used with AL_FILTER_TYPE. */
+#define AL_FILTER_NULL 0x0000 /* Can also be used as a Filter Object ID */
+#define AL_FILTER_LOWPASS 0x0001
+#define AL_FILTER_HIGHPASS 0x0002
+#define AL_FILTER_BANDPASS 0x0003
+
+
+/**
+ * Effect object functions.
+ */
+
+/* Create Effect objects. */
+typedef void (__cdecl *LPALGENEFFECTS)( ALsizei n, ALuint* effects );
+
+/* Delete Effect objects. */
+typedef void (__cdecl *LPALDELETEEFFECTS)( ALsizei n, ALuint* effects );
+
+/* Verify a handle is a valid Effect. */
+typedef ALboolean (__cdecl *LPALISEFFECT)( ALuint eid );
+
+/* Set an integer parameter for an Effect object. */
+typedef void (__cdecl *LPALEFFECTI)( ALuint eid, ALenum param, ALint value);
+typedef void (__cdecl *LPALEFFECTIV)( ALuint eid, ALenum param, ALint* values );
+
+/* Set a floating point parameter for an Effect object. */
+typedef void (__cdecl *LPALEFFECTF)( ALuint eid, ALenum param, ALfloat value);
+typedef void (__cdecl *LPALEFFECTFV)( ALuint eid, ALenum param, ALfloat* values );
+
+/* Get an integer parameter for an Effect object. */
+typedef void (__cdecl *LPALGETEFFECTI)( ALuint eid, ALenum pname, ALint* value );
+typedef void (__cdecl *LPALGETEFFECTIV)( ALuint eid, ALenum pname, ALint* values );
+
+/* Get a floating point parameter for an Effect object. */
+typedef void (__cdecl *LPALGETEFFECTF)( ALuint eid, ALenum pname, ALfloat* value );
+typedef void (__cdecl *LPALGETEFFECTFV)( ALuint eid, ALenum pname, ALfloat* values );
+
+
+/**
+ * Filter object functions
+ */
+
+/* Create Filter objects. */
+typedef void (__cdecl *LPALGENFILTERS)( ALsizei n, ALuint* filters );
+
+/* Delete Filter objects. */
+typedef void (__cdecl *LPALDELETEFILTERS)( ALsizei n, ALuint* filters );
+
+/* Verify a handle is a valid Filter. */
+typedef ALboolean (__cdecl *LPALISFILTER)( ALuint fid );
+
+/* Set an integer parameter for a Filter object. */
+typedef void (__cdecl *LPALFILTERI)( ALuint fid, ALenum param, ALint value );
+typedef void (__cdecl *LPALFILTERIV)( ALuint fid, ALenum param, ALint* values );
+
+/* Set a floating point parameter for an Filter object. */
+typedef void (__cdecl *LPALFILTERF)( ALuint fid, ALenum param, ALfloat value);
+typedef void (__cdecl *LPALFILTERFV)( ALuint fid, ALenum param, ALfloat* values );
+
+/* Get an integer parameter for a Filter object. */
+typedef void (__cdecl *LPALGETFILTERI)( ALuint fid, ALenum pname, ALint* value );
+typedef void (__cdecl *LPALGETFILTERIV)( ALuint fid, ALenum pname, ALint* values );
+
+/* Get a floating point parameter for a Filter object. */
+typedef void (__cdecl *LPALGETFILTERF)( ALuint fid, ALenum pname, ALfloat* value );
+typedef void (__cdecl *LPALGETFILTERFV)( ALuint fid, ALenum pname, ALfloat* values );
+
+
+/**
+ * Auxiliary Slot object functions
+ */
+
+/* Create Auxiliary Slot objects. */
+typedef void (__cdecl *LPALGENAUXILIARYEFFECTSLOTS)( ALsizei n, ALuint* slots );
+
+/* Delete Auxiliary Slot objects. */
+typedef void (__cdecl *LPALDELETEAUXILIARYEFFECTSLOTS)( ALsizei n, ALuint* slots );
+
+/* Verify a handle is a valid Auxiliary Slot. */
+typedef ALboolean (__cdecl *LPALISAUXILIARYEFFECTSLOT)( ALuint slot );
+
+/* Set an integer parameter for a Auxiliary Slot object. */
+typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTI)( ALuint asid, ALenum param, ALint value );
+typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTIV)( ALuint asid, ALenum param, ALint* values );
+
+/* Set a floating point parameter for an Auxiliary Slot object. */
+typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTF)( ALuint asid, ALenum param, ALfloat value );
+typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTFV)( ALuint asid, ALenum param, ALfloat* values );
+
+/* Get an integer parameter for a Auxiliary Slot object. */
+typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTI)( ALuint asid, ALenum pname, ALint* value );
+typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTIV)( ALuint asid, ALenum pname, ALint* values );
+
+/* Get a floating point parameter for a Auxiliary Slot object. */
+typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTF)( ALuint asid, ALenum pname, ALfloat* value );
+typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTFV)( ALuint asid, ALenum pname, ALfloat* values );
+
+
+
+
+/**********************************************************
+ * Filter ranges and defaults.
+ */
+
+/**
+ * Lowpass filter
+ */
+
+#define LOWPASS_MIN_GAIN 0.0f
+#define LOWPASS_MAX_GAIN 1.0f
+#define LOWPASS_DEFAULT_GAIN 1.0f
+
+#define LOWPASS_MIN_GAINHF 0.0f
+#define LOWPASS_MAX_GAINHF 1.0f
+#define LOWPASS_DEFAULT_GAINHF 1.0f
+
+/**
+ * Highpass filter
+ */
+
+#define HIGHPASS_MIN_GAIN 0.0f
+#define HIGHPASS_MAX_GAIN 1.0f
+#define HIGHPASS_DEFAULT_GAIN 1.0f
+
+#define HIGHPASS_MIN_GAINLF 0.0f
+#define HIGHPASS_MAX_GAINLF 1.0f
+#define HIGHPASS_DEFAULT_GAINLF 1.0f
+
+/**
+ * Bandpass filter
+ */
+
+#define BANDPASS_MIN_GAIN 0.0f
+#define BANDPASS_MAX_GAIN 1.0f
+#define BANDPASS_DEFAULT_GAIN 1.0f
+
+#define BANDPASS_MIN_GAINHF 0.0f
+#define BANDPASS_MAX_GAINHF 1.0f
+#define BANDPASS_DEFAULT_GAINHF 1.0f
+
+#define BANDPASS_MIN_GAINLF 0.0f
+#define BANDPASS_MAX_GAINLF 1.0f
+#define BANDPASS_DEFAULT_GAINLF 1.0f
+
+
+
+
+ /**********************************************************
+ * Effect parameter structures, value definitions, ranges and defaults.
+ */
+
+/**
+ * AL reverb effect parameter ranges and defaults
+ */
+#define AL_REVERB_MIN_DENSITY 0.0f
+#define AL_REVERB_MAX_DENSITY 1.0f
+#define AL_REVERB_DEFAULT_DENSITY 1.0f
+
+#define AL_REVERB_MIN_DIFFUSION 0.0f
+#define AL_REVERB_MAX_DIFFUSION 1.0f
+#define AL_REVERB_DEFAULT_DIFFUSION 1.0f
+
+#define AL_REVERB_MIN_GAIN 0.0f
+#define AL_REVERB_MAX_GAIN 1.0f
+#define AL_REVERB_DEFAULT_GAIN 0.32f
+
+#define AL_REVERB_MIN_GAINHF 0.0f
+#define AL_REVERB_MAX_GAINHF 1.0f
+#define AL_REVERB_DEFAULT_GAINHF 0.89f
+
+#define AL_REVERB_MIN_DECAY_TIME 0.1f
+#define AL_REVERB_MAX_DECAY_TIME 20.0f
+#define AL_REVERB_DEFAULT_DECAY_TIME 1.49f
+
+#define AL_REVERB_MIN_DECAY_HFRATIO 0.1f
+#define AL_REVERB_MAX_DECAY_HFRATIO 2.0f
+#define AL_REVERB_DEFAULT_DECAY_HFRATIO 0.83f
+
+#define AL_REVERB_MIN_REFLECTIONS_GAIN 0.0f
+#define AL_REVERB_MAX_REFLECTIONS_GAIN 3.16f
+#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN 0.05f
+
+#define AL_REVERB_MIN_REFLECTIONS_DELAY 0.0f
+#define AL_REVERB_MAX_REFLECTIONS_DELAY 0.3f
+#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY 0.007f
+
+#define AL_REVERB_MIN_LATE_REVERB_GAIN 0.0f
+#define AL_REVERB_MAX_LATE_REVERB_GAIN 10.0f
+#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN 1.26f
+
+#define AL_REVERB_MIN_LATE_REVERB_DELAY 0.0f
+#define AL_REVERB_MAX_LATE_REVERB_DELAY 0.1f
+#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY 0.011f
+
+#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF 0.892f
+#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF 1.0f
+#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF 0.994f
+
+#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR 0.0f
+#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR 10.0f
+#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR 0.0f
+
+#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE
+#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE
+#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
+
+/**
+ * AL chorus effect parameter ranges and defaults
+ */
+#define AL_CHORUS_MIN_WAVEFORM 0
+#define AL_CHORUS_MAX_WAVEFORM 1
+#define AL_CHORUS_DEFAULT_WAVEFORM 1
+
+#define AL_CHORUS_WAVEFORM_SINUSOID 0
+#define AL_CHORUS_WAVEFORM_TRIANGLE 1
+
+#define AL_CHORUS_MIN_PHASE (-180)
+#define AL_CHORUS_MAX_PHASE 180
+#define AL_CHORUS_DEFAULT_PHASE 90
+
+#define AL_CHORUS_MIN_RATE 0.0f
+#define AL_CHORUS_MAX_RATE 10.0f
+#define AL_CHORUS_DEFAULT_RATE 1.1f
+
+#define AL_CHORUS_MIN_DEPTH 0.0f
+#define AL_CHORUS_MAX_DEPTH 1.0f
+#define AL_CHORUS_DEFAULT_DEPTH 0.1f
+
+#define AL_CHORUS_MIN_FEEDBACK (-1.0f)
+#define AL_CHORUS_MAX_FEEDBACK 1.0f
+#define AL_CHORUS_DEFAULT_FEEDBACK 0.25f
+
+#define AL_CHORUS_MIN_DELAY 0.0f
+#define AL_CHORUS_MAX_DELAY 0.016f
+#define AL_CHORUS_DEFAULT_DELAY 0.016f
+
+/**
+ * AL distortion effect parameter ranges and defaults
+ */
+#define AL_DISTORTION_MIN_EDGE 0.0f
+#define AL_DISTORTION_MAX_EDGE 1.0f
+#define AL_DISTORTION_DEFAULT_EDGE 0.2f
+
+#define AL_DISTORTION_MIN_GAIN 0.01f
+#define AL_DISTORTION_MAX_GAIN 1.0f
+#define AL_DISTORTION_DEFAULT_GAIN 0.05f
+
+#define AL_DISTORTION_MIN_LOWPASS_CUTOFF 80.0f
+#define AL_DISTORTION_MAX_LOWPASS_CUTOFF 24000.0f
+#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF 8000.0f
+
+#define AL_DISTORTION_MIN_EQCENTER 80.0f
+#define AL_DISTORTION_MAX_EQCENTER 24000.0f
+#define AL_DISTORTION_DEFAULT_EQCENTER 3600.0f
+
+#define AL_DISTORTION_MIN_EQBANDWIDTH 80.0f
+#define AL_DISTORTION_MAX_EQBANDWIDTH 24000.0f
+#define AL_DISTORTION_DEFAULT_EQBANDWIDTH 3600.0f
+
+/**
+ * AL echo effect parameter ranges and defaults
+ */
+#define AL_ECHO_MIN_DELAY 0.0f
+#define AL_ECHO_MAX_DELAY 0.207f
+#define AL_ECHO_DEFAULT_DELAY 0.1f
+
+#define AL_ECHO_MIN_LRDELAY 0.0f
+#define AL_ECHO_MAX_LRDELAY 0.404f
+#define AL_ECHO_DEFAULT_LRDELAY 0.1f
+
+#define AL_ECHO_MIN_DAMPING 0.0f
+#define AL_ECHO_MAX_DAMPING 0.99f
+#define AL_ECHO_DEFAULT_DAMPING 0.5f
+
+#define AL_ECHO_MIN_FEEDBACK 0.0f
+#define AL_ECHO_MAX_FEEDBACK 1.0f
+#define AL_ECHO_DEFAULT_FEEDBACK 0.5f
+
+#define AL_ECHO_MIN_SPREAD (-1.0f)
+#define AL_ECHO_MAX_SPREAD 1.0f
+#define AL_ECHO_DEFAULT_SPREAD (-1.0f)
+
+/**
+ * AL flanger effect parameter ranges and defaults
+ */
+#define AL_FLANGER_MIN_WAVEFORM 0
+#define AL_FLANGER_MAX_WAVEFORM 1
+#define AL_FLANGER_DEFAULT_WAVEFORM 1
+
+#define AL_FLANGER_WAVEFORM_SINUSOID 0
+#define AL_FLANGER_WAVEFORM_TRIANGLE 1
+
+#define AL_FLANGER_MIN_PHASE (-180)
+#define AL_FLANGER_MAX_PHASE 180
+#define AL_FLANGER_DEFAULT_PHASE 0
+
+#define AL_FLANGER_MIN_RATE 0.0f
+#define AL_FLANGER_MAX_RATE 10.0f
+#define AL_FLANGER_DEFAULT_RATE 0.27f
+
+#define AL_FLANGER_MIN_DEPTH 0.0f
+#define AL_FLANGER_MAX_DEPTH 1.0f
+#define AL_FLANGER_DEFAULT_DEPTH 1.0f
+
+#define AL_FLANGER_MIN_FEEDBACK (-1.0f)
+#define AL_FLANGER_MAX_FEEDBACK 1.0f
+#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f)
+
+#define AL_FLANGER_MIN_DELAY 0.0f
+#define AL_FLANGER_MAX_DELAY 0.004f
+#define AL_FLANGER_DEFAULT_DELAY 0.002f
+
+/**
+ * AL frequency shifter effect parameter ranges and defaults
+ */
+#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY 0.0f
+#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY 24000.0f
+#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY 0.0f
+
+#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION 0
+#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION 2
+#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION 0
+
+#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION 0
+#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION 2
+#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION 0
+
+#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN 0
+#define AL_FREQUENCY_SHIFTER_DIRECTION_UP 1
+#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF 2
+
+/**
+ * AL vocal morpher effect parameter ranges and defaults
+ */
+#define AL_VOCAL_MORPHER_MIN_PHONEMEA 0
+#define AL_VOCAL_MORPHER_MAX_PHONEMEA 29
+#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA 0
+
+#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
+#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING 24
+#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING 0
+
+#define AL_VOCAL_MORPHER_MIN_PHONEMEB 0
+#define AL_VOCAL_MORPHER_MAX_PHONEMEB 29
+#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB 10
+
+#define AL_VOCAL_MORPHER_PHONEME_A 0
+#define AL_VOCAL_MORPHER_PHONEME_E 1
+#define AL_VOCAL_MORPHER_PHONEME_I 2
+#define AL_VOCAL_MORPHER_PHONEME_O 3
+#define AL_VOCAL_MORPHER_PHONEME_U 4
+#define AL_VOCAL_MORPHER_PHONEME_AA 5
+#define AL_VOCAL_MORPHER_PHONEME_AE 6
+#define AL_VOCAL_MORPHER_PHONEME_AH 7
+#define AL_VOCAL_MORPHER_PHONEME_AO 8
+#define AL_VOCAL_MORPHER_PHONEME_EH 9
+#define AL_VOCAL_MORPHER_PHONEME_ER 10
+#define AL_VOCAL_MORPHER_PHONEME_IH 11
+#define AL_VOCAL_MORPHER_PHONEME_IY 12
+#define AL_VOCAL_MORPHER_PHONEME_UH 13
+#define AL_VOCAL_MORPHER_PHONEME_UW 14
+#define AL_VOCAL_MORPHER_PHONEME_B 15
+#define AL_VOCAL_MORPHER_PHONEME_D 16
+#define AL_VOCAL_MORPHER_PHONEME_F 17
+#define AL_VOCAL_MORPHER_PHONEME_G 18
+#define AL_VOCAL_MORPHER_PHONEME_J 19
+#define AL_VOCAL_MORPHER_PHONEME_K 20
+#define AL_VOCAL_MORPHER_PHONEME_L 21
+#define AL_VOCAL_MORPHER_PHONEME_M 22
+#define AL_VOCAL_MORPHER_PHONEME_N 23
+#define AL_VOCAL_MORPHER_PHONEME_P 24
+#define AL_VOCAL_MORPHER_PHONEME_R 25
+#define AL_VOCAL_MORPHER_PHONEME_S 26
+#define AL_VOCAL_MORPHER_PHONEME_T 27
+#define AL_VOCAL_MORPHER_PHONEME_V 28
+#define AL_VOCAL_MORPHER_PHONEME_Z 29
+
+#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
+#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING 24
+#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING 0
+
+#define AL_VOCAL_MORPHER_MIN_WAVEFORM 0
+#define AL_VOCAL_MORPHER_MAX_WAVEFORM 2
+#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM 0
+
+#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID 0
+#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE 1
+#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH 2
+
+#define AL_VOCAL_MORPHER_MIN_RATE 0.0f
+#define AL_VOCAL_MORPHER_MAX_RATE 10.0f
+#define AL_VOCAL_MORPHER_DEFAULT_RATE 1.41f
+
+/**
+ * AL pitch shifter effect parameter ranges and defaults
+ */
+#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12)
+#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE 12
+#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE 12
+
+#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50)
+#define AL_PITCH_SHIFTER_MAX_FINE_TUNE 50
+#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE 0
+
+/**
+ * AL ring modulator effect parameter ranges and defaults
+ */
+#define AL_RING_MODULATOR_MIN_FREQUENCY 0.0f
+#define AL_RING_MODULATOR_MAX_FREQUENCY 8000.0f
+#define AL_RING_MODULATOR_DEFAULT_FREQUENCY 440.0f
+
+#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF 0.0f
+#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF 24000.0f
+#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF 800.0f
+
+#define AL_RING_MODULATOR_MIN_WAVEFORM 0
+#define AL_RING_MODULATOR_MAX_WAVEFORM 2
+#define AL_RING_MODULATOR_DEFAULT_WAVEFORM 0
+
+#define AL_RING_MODULATOR_SINUSOID 0
+#define AL_RING_MODULATOR_SAWTOOTH 1
+#define AL_RING_MODULATOR_SQUARE 2
+
+/**
+ * AL autowah effect parameter ranges and defaults
+ */
+#define AL_AUTOWAH_MIN_ATTACK_TIME 0.0001f
+#define AL_AUTOWAH_MAX_ATTACK_TIME 1.0f
+#define AL_AUTOWAH_DEFAULT_ATTACK_TIME 0.06f
+
+#define AL_AUTOWAH_MIN_RELEASE_TIME 0.0001f
+#define AL_AUTOWAH_MAX_RELEASE_TIME 1.0f
+#define AL_AUTOWAH_DEFAULT_RELEASE_TIME 0.06f
+
+#define AL_AUTOWAH_MIN_RESONANCE 2.0f
+#define AL_AUTOWAH_MAX_RESONANCE 1000.0f
+#define AL_AUTOWAH_DEFAULT_RESONANCE 1000.0f
+
+#define AL_AUTOWAH_MIN_PEAK_GAIN 0.00003f
+#define AL_AUTOWAH_MAX_PEAK_GAIN 31621.0f
+#define AL_AUTOWAH_DEFAULT_PEAK_GAIN 11.22f
+
+/**
+ * AL compressor effect parameter ranges and defaults
+ */
+#define AL_COMPRESSOR_MIN_ONOFF 0
+#define AL_COMPRESSOR_MAX_ONOFF 1
+#define AL_COMPRESSOR_DEFAULT_ONOFF 1
+
+/**
+ * AL equalizer effect parameter ranges and defaults
+ */
+#define AL_EQUALIZER_MIN_LOW_GAIN 0.126f
+#define AL_EQUALIZER_MAX_LOW_GAIN 7.943f
+#define AL_EQUALIZER_DEFAULT_LOW_GAIN 1.0f
+
+#define AL_EQUALIZER_MIN_LOW_CUTOFF 50.0f
+#define AL_EQUALIZER_MAX_LOW_CUTOFF 800.0f
+#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF 200.0f
+
+#define AL_EQUALIZER_MIN_MID1_GAIN 0.126f
+#define AL_EQUALIZER_MAX_MID1_GAIN 7.943f
+#define AL_EQUALIZER_DEFAULT_MID1_GAIN 1.0f
+
+#define AL_EQUALIZER_MIN_MID1_CENTER 200.0f
+#define AL_EQUALIZER_MAX_MID1_CENTER 3000.0f
+#define AL_EQUALIZER_DEFAULT_MID1_CENTER 500.0f
+
+#define AL_EQUALIZER_MIN_MID1_WIDTH 0.01f
+#define AL_EQUALIZER_MAX_MID1_WIDTH 1.0f
+#define AL_EQUALIZER_DEFAULT_MID1_WIDTH 1.0f
+
+#define AL_EQUALIZER_MIN_MID2_GAIN 0.126f
+#define AL_EQUALIZER_MAX_MID2_GAIN 7.943f
+#define AL_EQUALIZER_DEFAULT_MID2_GAIN 1.0f
+
+#define AL_EQUALIZER_MIN_MID2_CENTER 1000.0f
+#define AL_EQUALIZER_MAX_MID2_CENTER 8000.0f
+#define AL_EQUALIZER_DEFAULT_MID2_CENTER 3000.0f
+
+#define AL_EQUALIZER_MIN_MID2_WIDTH 0.01f
+#define AL_EQUALIZER_MAX_MID2_WIDTH 1.0f
+#define AL_EQUALIZER_DEFAULT_MID2_WIDTH 1.0f
+
+#define AL_EQUALIZER_MIN_HIGH_GAIN 0.126f
+#define AL_EQUALIZER_MAX_HIGH_GAIN 7.943f
+#define AL_EQUALIZER_DEFAULT_HIGH_GAIN 1.0f
+
+#define AL_EQUALIZER_MIN_HIGH_CUTOFF 4000.0f
+#define AL_EQUALIZER_MAX_HIGH_CUTOFF 16000.0f
+#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF 6000.0f
+
+
+
+
+/**********************************************************
+ * Source parameter value definitions, ranges and defaults.
+ */
+#define AL_MIN_AIR_ABSORPTION_FACTOR 0.0f
+#define AL_MAX_AIR_ABSORPTION_FACTOR 10.0f
+#define AL_DEFAULT_AIR_ABSORPTION_FACTOR 0.0f
+
+#define AL_MIN_ROOM_ROLLOFF_FACTOR 0.0f
+#define AL_MAX_ROOM_ROLLOFF_FACTOR 10.0f
+#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR 0.0f
+
+#define AL_MIN_CONE_OUTER_GAINHF 0.0f
+#define AL_MAX_CONE_OUTER_GAINHF 1.0f
+#define AL_DEFAULT_CONE_OUTER_GAINHF 1.0f
+
+#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE
+#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
+#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
+
+#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE
+#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
+#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
+
+#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
+#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
+#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
+
+
+
+
+/**********************************************************
+ * Listener parameter value definitions, ranges and defaults.
+ */
+#define AL_MIN_METERS_PER_UNIT FLT_MIN
+#define AL_MAX_METERS_PER_UNIT FLT_MAX
+#define AL_DEFAULT_METERS_PER_UNIT 1.0f
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __efx_h_ */
diff --git a/openAL/include/xram.h b/openAL/include/xram.h
new file mode 100644
index 0000000..5d83662
--- /dev/null
+++ b/openAL/include/xram.h
@@ -0,0 +1,94 @@
+#include
+
+// X-RAM Function pointer definitions
+typedef ALboolean (__cdecl *EAXSetBufferMode)(ALsizei n, ALuint *buffers, ALint value);
+typedef ALenum (__cdecl *EAXGetBufferMode)(ALuint buffer, ALint *value);
+
+//////////////////////////////////////////////////////////////////////////////
+// Query for X-RAM extension
+//
+// if (alIsExtensionPresent("EAX-RAM") == AL_TRUE)
+// X-RAM Extension found
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// X-RAM enum names
+//
+// "AL_EAX_RAM_SIZE"
+// "AL_EAX_RAM_FREE"
+// "AL_STORAGE_AUTOMATIC"
+// "AL_STORAGE_HARDWARE"
+// "AL_STORAGE_ACCESSIBLE"
+//
+// Query enum values using alGetEnumValue, for example
+//
+// long lRamSizeEnum = alGetEnumValue("AL_EAX_RAM_SIZE")
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Query total amount of X-RAM
+//
+// long lTotalSize = alGetInteger(alGetEnumValue("AL_EAX_RAM_SIZE")
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Query free X-RAM available
+//
+// long lFreeSize = alGetInteger(alGetEnumValue("AL_EAX_RAM_FREE")
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Query X-RAM Function pointers
+//
+// Use typedefs defined above to get the X-RAM function pointers using
+// alGetProcAddress
+//
+// EAXSetBufferMode eaxSetBufferMode;
+// EAXGetBufferMode eaxGetBufferMode;
+//
+// eaxSetBufferMode = (EAXSetBufferMode)alGetProcAddress("EAXSetBufferMode");
+// eaxGetBufferMode = (EAXGetBufferMode)alGetProcAddress("EAXGetBufferMode");
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Force an Open AL Buffer into X-RAM (good for non-streaming buffers)
+//
+// ALuint uiBuffer;
+// alGenBuffers(1, &uiBuffer);
+// eaxSetBufferMode(1, &uiBuffer, alGetEnumValue("AL_STORAGE_HARDWARE"));
+// alBufferData(...);
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Force an Open AL Buffer into 'accessible' (currently host) RAM (good for streaming buffers)
+//
+// ALuint uiBuffer;
+// alGenBuffers(1, &uiBuffer);
+// eaxSetBufferMode(1, &uiBuffer, alGetEnumValue("AL_STORAGE_ACCESSIBLE"));
+// alBufferData(...);
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Put an Open AL Buffer into X-RAM if memory is available, otherwise use
+// host RAM. This is the default mode.
+//
+// ALuint uiBuffer;
+// alGenBuffers(1, &uiBuffer);
+// eaxSetBufferMode(1, &uiBuffer, alGetEnumValue("AL_STORAGE_AUTOMATIC"));
+// alBufferData(...);
+//
+//////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/openAL/libs/Win32/EFX-Util_MT/EFX-Util.lib b/openAL/libs/Win32/EFX-Util_MT/EFX-Util.lib
new file mode 100644
index 0000000..f984bc7
Binary files /dev/null and b/openAL/libs/Win32/EFX-Util_MT/EFX-Util.lib differ
diff --git a/openAL/libs/Win32/EFX-Util_MTDLL/EFX-Util.lib b/openAL/libs/Win32/EFX-Util_MTDLL/EFX-Util.lib
new file mode 100644
index 0000000..e2e22c3
Binary files /dev/null and b/openAL/libs/Win32/EFX-Util_MTDLL/EFX-Util.lib differ
diff --git a/openAL/libs/Win32/OpenAL32.lib b/openAL/libs/Win32/OpenAL32.lib
new file mode 100644
index 0000000..d635de9
Binary files /dev/null and b/openAL/libs/Win32/OpenAL32.lib differ
diff --git a/openAL/libs/Win64/EFX-Util_MT/EFX-Util.lib b/openAL/libs/Win64/EFX-Util_MT/EFX-Util.lib
new file mode 100644
index 0000000..d4fcc8a
Binary files /dev/null and b/openAL/libs/Win64/EFX-Util_MT/EFX-Util.lib differ
diff --git a/openAL/libs/Win64/EFX-Util_MTDLL/EFX-Util.lib b/openAL/libs/Win64/EFX-Util_MTDLL/EFX-Util.lib
new file mode 100644
index 0000000..8a926e5
Binary files /dev/null and b/openAL/libs/Win64/EFX-Util_MTDLL/EFX-Util.lib differ
diff --git a/openAL/libs/Win64/OpenAL32.lib b/openAL/libs/Win64/OpenAL32.lib
new file mode 100644
index 0000000..17663e0
Binary files /dev/null and b/openAL/libs/Win64/OpenAL32.lib differ
diff --git a/worlds/small.json b/worlds/small.json
index 116df8e..42e51a8 100644
--- a/worlds/small.json
+++ b/worlds/small.json
@@ -8,7 +8,8 @@
"file": "models/boom/Boom.obj",
"collision": true
}
- ]
+ ],
+ "music": "WAVE/bond.wav"
},
"player": {
"startposition": [ 20, 5, 20 ]