diff --git a/make/build.xml b/make/build.xml
index 9cac7f5..e2526b8 100755
--- a/make/build.xml
+++ b/make/build.xml
@@ -172,6 +172,8 @@
+
+
@@ -273,6 +275,25 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/make/joal-alext-constants.cfg b/make/joal-alext-constants.cfg
new file mode 100644
index 0000000..e645bb8
--- /dev/null
+++ b/make/joal-alext-constants.cfg
@@ -0,0 +1,9 @@
+# This .cfg file is used to generate the ALCConstants interface.
+Include joal-common.cfg
+
+Style InterfaceOnly
+JavaClass ALExtConstants
+
+# Factor out the OpenAL constants into their own interface
+#IgnoreNot ^ALC_.+
+IgnoreNot ^AL.+
diff --git a/make/joal-alext.cfg b/make/joal-alext.cfg
new file mode 100644
index 0000000..4798f31
--- /dev/null
+++ b/make/joal-alext.cfg
@@ -0,0 +1,41 @@
+# This .cfg file is used to generate the JOAL interface.
+Include joal-common.cfg
+
+Style InterfaceAndImpl
+JavaClass ALExt
+ImplPackage jogamp.openal
+ImplJavaClass ALExtAbstractImpl
+AccessControl ALExtAbstractImpl PUBLIC_ABSTRACT
+Extends ALExt ALExtConstants
+
+EmitProcAddressTable true
+ProcAddressTableClassName ALExtProcAddressTable
+GetProcAddressTableExpr alExtProcAddressTable
+ProcAddressNameExpr LP $UPPERCASE({0})
+
+Import java.io.UnsupportedEncodingException
+Import java.util.*
+Import com.jogamp.openal.*
+Import jogamp.openal.*
+
+# Factor out the OpenAL constants into their own interface
+Ignore ^AL_.+
+Ignore ^ALC_.+
+
+IncludeAs CustomJavaCode ALExtAbstractImpl joal-alextabstract-CustomJavaCode.java
+
+# Mappings for data types
+Opaque boolean ALCboolean
+
+# These routines use or return strings
+ArgumentIsString alcLoopbackOpenDeviceSOFT 0
+
+# Provide #includes to native code
+CustomCCode #include "alext.h"
+
+# Indicate that the direct buffers for ALCcontext, etc. are "opaque",
+# i.e., the user shouldn't be poking around in them
+ReturnValueCapacity alcLoopbackOpenDeviceSOFT 0
+
+IncludeAs CustomCCode joal-common-CustomCCode.c
+
diff --git a/make/joal-alextabstract-CustomJavaCode.java b/make/joal-alextabstract-CustomJavaCode.java
new file mode 100644
index 0000000..e73dc60
--- /dev/null
+++ b/make/joal-alextabstract-CustomJavaCode.java
@@ -0,0 +1,12 @@
+private static final ALExtProcAddressTable alExtProcAddressTable;
+
+static {
+ alExtProcAddressTable = new ALExtProcAddressTable();
+ if(null==alExtProcAddressTable) {
+ throw new RuntimeException("Couldn't instantiate ALExtProcAddressTable");
+ }
+ alExtProcAddressTable.reset(ALImpl.alDynamicLookupHelper);
+}
+
+public static ALExtProcAddressTable getALExtProcAddressTable() { return alExtProcAddressTable; }
+
diff --git a/make/stub_includes/openal/al-types.h b/make/stub_includes/openal/al-types.h
new file mode 100644
index 0000000..6a609e5
--- /dev/null
+++ b/make/stub_includes/openal/al-types.h
@@ -0,0 +1,87 @@
+#ifndef AL_AL_TYPES_H
+#define AL_AL_TYPES_H
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef AL_API
+ #if defined(AL_LIBTYPE_STATIC)
+ #define AL_API
+ #elif defined(_WIN32)
+ #define AL_API __declspec(dllimport)
+ #else
+ #define AL_API extern
+ #endif
+#endif
+
+#if defined(_WIN32)
+ #define AL_APIENTRY __cdecl
+#else
+ #define AL_APIENTRY
+#endif
+
+#if defined(TARGET_OS_MAC) && TARGET_OS_MAC
+ #pragma export on
+#endif
+
+/*
+ * The OPENAL, ALAPI, ALAPIENTRY, AL_INVALID, AL_ILLEGAL_ENUM, and
+ * AL_ILLEGAL_COMMAND 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_INVALID (-1)
+#define AL_ILLEGAL_ENUM AL_INVALID_ENUM
+#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION
+
+#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 signed 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;
+
+#if defined(__cplusplus)
+} /* extern "C" */
+#endif
+
+#endif /* AL_AL_TYPES_H */
diff --git a/make/stub_includes/openal/al.h b/make/stub_includes/openal/al.h
index d73a1c0..67ece7a 100755
--- a/make/stub_includes/openal/al.h
+++ b/make/stub_includes/openal/al.h
@@ -1,108 +1,15 @@
#ifndef AL_AL_H
#define AL_AL_H
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
+#include "al-types.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;
-
-/** Function pointer type */
-typedef void* ALproc;
-
/* Enumerant values begin at column 50. No tabs. */
-/* bad value */
-#define AL_INVALID -1
-
+/* "no distance model" or "no buffer" */
#define AL_NONE 0
/* Boolean False. */
@@ -131,8 +38,7 @@ typedef void* ALproc;
#define AL_CONE_OUTER_ANGLE 0x1002
/**
- * Specify the pitch to be applied, either at source,
- * or on mixer results, at listener.
+ * Specify the pitch to be applied at source.
* Range: [0.5-2.0]
* Default: 1.0
*/
@@ -210,14 +116,6 @@ typedef void* ALproc;
#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
@@ -315,7 +213,7 @@ typedef void* ALproc;
/** Errors: No Error. */
-#define AL_NO_ERROR AL_FALSE
+#define AL_NO_ERROR 0
/**
* Invalid Name paramater passed to AL call.
@@ -325,7 +223,6 @@ typedef void* ALproc;
/**
* Invalid parameter passed to AL call.
*/
-#define AL_ILLEGAL_ENUM 0xA002
#define AL_INVALID_ENUM 0xA002
/**
@@ -336,7 +233,6 @@ typedef void* ALproc;
/**
* Illegal call.
*/
-#define AL_ILLEGAL_COMMAND 0xA004
#define AL_INVALID_OPERATION 0xA004
@@ -384,11 +280,6 @@ typedef void* ALproc;
#define AL_EXPONENT_DISTANCE 0xD005
#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
-
-/* FIXME: no way to parse both the prototypes and the function pointer typedefs. */
-/* GlueGen requires both in order to recognize a function as dynamically linked. */
-/* #if !defined(AL_NO_PROTOTYPES) */
-
/*
* Renderer State management
*/
@@ -435,7 +326,7 @@ AL_API ALenum AL_APIENTRY alGetError( void );
*/
AL_API ALboolean AL_APIENTRY alIsExtensionPresent( const ALchar* extname );
-AL_API ALproc AL_APIENTRY alGetProcAddress( const ALchar* fname );
+AL_API void* AL_APIENTRY alGetProcAddress( const ALchar* fname );
AL_API ALenum AL_APIENTRY alGetEnumValue( const ALchar* ename );
@@ -665,9 +556,9 @@ AL_API void AL_APIENTRY alSpeedOfSound( ALfloat value );
AL_API void AL_APIENTRY alDistanceModel( ALenum distanceModel );
-/* FIXME: see above */
-/* #else */ /* AL_NO_PROTOTYPES */
-
+/*
+ * Pointer-to-function types, useful for dynamically getting AL entry points.
+ */
typedef void (AL_APIENTRY *LPALENABLE)( ALenum capability );
typedef void (AL_APIENTRY *LPALDISABLE)( ALenum capability );
typedef ALboolean (AL_APIENTRY *LPALISENABLED)( ALenum capability );
@@ -742,10 +633,7 @@ typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)( ALfloat value );
typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)( ALfloat value );
typedef void (AL_APIENTRY *LPALDISTANCEMODEL)( ALenum distanceModel );
-/* FIXME: see above */
-/* #endif */ /* AL_NO_PROTOTYPES */
-
-#if TARGET_OS_MAC
+#if defined(TARGET_OS_MAC) && TARGET_OS_MAC
#pragma export off
#endif
diff --git a/make/stub_includes/openal/alc-types.h b/make/stub_includes/openal/alc-types.h
new file mode 100644
index 0000000..222a7a8
--- /dev/null
+++ b/make/stub_includes/openal/alc-types.h
@@ -0,0 +1,86 @@
+#ifndef AL_ALC_TYPES_H
+#define AL_ALC_TYPES_H
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef ALC_API
+ #if defined(AL_LIBTYPE_STATIC)
+ #define ALC_API
+ #elif defined(_WIN32)
+ #define ALC_API __declspec(dllimport)
+ #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 signed 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;
+
+#if defined(__cplusplus)
+} /* extern "C" */
+#endif
+
+#endif /* AL_ALC_TYPES_H */
diff --git a/make/stub_includes/openal/alc.h b/make/stub_includes/openal/alc.h
index 0c50a88..7b4e4af 100755
--- a/make/stub_includes/openal/alc.h
+++ b/make/stub_includes/openal/alc.h
@@ -1,87 +1,14 @@
#ifndef AL_ALC_H
#define AL_ALC_H
+#include "alc-types.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
- #define ALC_API extern
-#endif
-
-#if defined(_WIN32)
- #define ALC_APIENTRY __cdecl
-#else
- #define ALC_APIENTRY
-#endif
-
-#if TARGET_OS_MAC
- #pragma export on
-#endif
-
-/* The ALCAPI, and ALCAPIENTRY macros are deprecated, but are included for applications porting code
- from AL 1.0 */
-#define ALCAPI ALC_API
-#define ALCAPIENTRY ALC_APIENTRY
-
-#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. */
-/* bad value */
-#define ALC_INVALID 0
-
/* Boolean False. */
#define ALC_FALSE 0
@@ -120,7 +47,7 @@ typedef void ALCvoid;
/**
* No error
*/
-#define ALC_NO_ERROR ALC_FALSE
+#define ALC_NO_ERROR 0
/**
* No device
@@ -161,17 +88,23 @@ typedef void ALCvoid;
#define ALC_ATTRIBUTES_SIZE 0x1002
#define ALC_ALL_ATTRIBUTES 0x1003
+
/**
* Capture extension
*/
+#define ALC_EXT_CAPTURE 1
#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310
#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311
#define ALC_CAPTURE_SAMPLES 0x312
-/* FIXME: no way to parse both the prototypes and the function pointer typedefs. */
-/* GlueGen requires both in order to recognize a function as dynamically linked. */
-/* #if !defined(ALC_NO_PROTOTYPES) */
+/**
+ * ALC_ENUMERATE_ALL_EXT enums
+ */
+#define ALC_ENUMERATE_ALL_EXT 1
+#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012
+#define ALC_ALL_DEVICES_SPECIFIER 0x1013
+
/*
* Context Management
@@ -186,7 +119,7 @@ ALC_API void ALC_APIENTRY alcSuspendContext( ALCcontext *context );
ALC_API void ALC_APIENTRY alcDestroyContext( ALCcontext *context );
-ALC_API ALCcontext * ALC_APIENTRY alcGetCurrentContext( ALCvoid );
+ALC_API ALCcontext * ALC_APIENTRY alcGetCurrentContext( void );
ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice( ALCcontext *context );
@@ -239,15 +172,15 @@ ALC_API void ALC_APIENTRY alcCaptureStop( ALCdevice *device );
ALC_API void ALC_APIENTRY alcCaptureSamples( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
-/* FIXME: see above */
-/* #else */ /* ALC_NO_PROTOTYPES */
-
+/*
+ * 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)( ALCvoid );
+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 );
@@ -263,10 +196,7 @@ 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 );
-/* FIXME: see above */
-/* #endif */ /* ALC_NO_PROTOTYPES */
-
-#if TARGET_OS_MAC
+#if defined(TARGET_OS_MAC) && TARGET_OS_MAC
#pragma export off
#endif
diff --git a/make/stub_includes/openal/alext.h b/make/stub_includes/openal/alext.h
index 4549d3d..512a2b3 100644
--- a/make/stub_includes/openal/alext.h
+++ b/make/stub_includes/openal/alext.h
@@ -21,6 +21,14 @@
#ifndef AL_ALEXT_H
#define AL_ALEXT_H
+//#include
+
+// joal: define prototypes, and disable ext_foldback (requires custom callback code)
+#define AL_ALEXT_PROTOTYPES
+#define AL_EXT_FOLDBACK
+#include "al-types.h"
+#include "alc-types.h"
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -53,6 +61,24 @@ extern "C" {
#define AL_FORMAT_STEREO_FLOAT32 0x10011
#endif
+#ifndef AL_EXT_double
+#define AL_EXT_double 1
+#define AL_FORMAT_MONO_DOUBLE_EXT 0x10012
+#define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013
+#endif
+
+#ifndef AL_EXT_MULAW
+#define AL_EXT_MULAW 1
+#define AL_FORMAT_MONO_MULAW_EXT 0x10014
+#define AL_FORMAT_STEREO_MULAW_EXT 0x10015
+#endif
+
+#ifndef AL_EXT_ALAW
+#define AL_EXT_ALAW 1
+#define AL_FORMAT_MONO_ALAW_EXT 0x10016
+#define AL_FORMAT_STEREO_ALAW_EXT 0x10017
+#endif
+
#ifndef ALC_LOKI_audio_channel
#define ALC_LOKI_audio_channel 1
#define ALC_CHAN_MAIN_LOKI 0x500001
@@ -60,12 +86,6 @@ extern "C" {
#define ALC_CHAN_CD_LOKI 0x500003
#endif
-#ifndef ALC_ENUMERATE_ALL_EXT
-#define ALC_ENUMERATE_ALL_EXT 1
-#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012
-#define ALC_ALL_DEVICES_SPECIFIER 0x1013
-#endif
-
#ifndef AL_EXT_MCFORMATS
#define AL_EXT_MCFORMATS 1
#define AL_FORMAT_QUAD8 0x1204
@@ -85,18 +105,194 @@ extern "C" {
#define AL_FORMAT_71CHN32 0x1212
#endif
+#ifndef AL_EXT_MULAW_MCFORMATS
+#define AL_EXT_MULAW_MCFORMATS 1
+#define AL_FORMAT_MONO_MULAW 0x10014
+#define AL_FORMAT_STEREO_MULAW 0x10015
+#define AL_FORMAT_QUAD_MULAW 0x10021
+#define AL_FORMAT_REAR_MULAW 0x10022
+#define AL_FORMAT_51CHN_MULAW 0x10023
+#define AL_FORMAT_61CHN_MULAW 0x10024
+#define AL_FORMAT_71CHN_MULAW 0x10025
+#endif
+
#ifndef AL_EXT_IMA4
#define AL_EXT_IMA4 1
#define AL_FORMAT_MONO_IMA4 0x1300
#define AL_FORMAT_STEREO_IMA4 0x1301
#endif
-#ifndef AL_EXT_buffer_sub_data
-#define AL_EXT_buffer_sub_data 1
-#define AL_BYTE_RW_OFFSETS_EXT 0x1031
-#define AL_SAMPLE_RW_OFFSETS_EXT 0x1032
-#define AL_SEC_RW_OFFSETS_EXT 0x1033
-typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATAEXTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
+#ifndef AL_EXT_STATIC_BUFFER
+#define AL_EXT_STATIC_BUFFER 1
+typedef ALvoid (AL_APIENTRY*LPALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
+#ifdef AL_ALEXT_PROTOTYPES
+AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
+#endif
+#endif
+
+#ifndef ALC_EXT_EFX
+#define ALC_EXT_EFX 1
+#include "efx.h"
+#endif
+
+#ifndef ALC_EXT_disconnect
+#define ALC_EXT_disconnect 1
+#define ALC_CONNECTED 0x313
+#endif
+
+#ifndef ALC_EXT_thread_local_context
+#define ALC_EXT_thread_local_context 1
+typedef ALCboolean (ALC_APIENTRY*LPALCSETTHREADCONTEXTPROC)(ALCcontext *context);
+typedef ALCcontext* (ALC_APIENTRY*LPALCGETTHREADCONTEXTPROC)(void);
+#ifdef AL_ALEXT_PROTOTYPES
+ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
+ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
+#endif
+#endif
+
+#ifndef AL_EXT_source_distance_model
+#define AL_EXT_source_distance_model 1
+#define AL_SOURCE_DISTANCE_MODEL 0x200
+#endif
+
+#ifndef AL_SOFT_buffer_sub_data
+#define AL_SOFT_buffer_sub_data 1
+#define AL_BYTE_RW_OFFSETS_SOFT 0x1031
+#define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032
+typedef ALvoid (AL_APIENTRY*LPALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
+#ifdef AL_ALEXT_PROTOTYPES
+AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
+#endif
+#endif
+
+#ifndef AL_SOFT_loop_points
+#define AL_SOFT_loop_points 1
+#define AL_LOOP_POINTS_SOFT 0x2015
+#endif
+
+#ifndef AL_EXT_FOLDBACK
+#define AL_EXT_FOLDBACK 1
+#define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK"
+#define AL_FOLDBACK_EVENT_BLOCK 0x4112
+#define AL_FOLDBACK_EVENT_START 0x4111
+#define AL_FOLDBACK_EVENT_STOP 0x4113
+#define AL_FOLDBACK_MODE_MONO 0x4101
+#define AL_FOLDBACK_MODE_STEREO 0x4102
+typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
+typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
+typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
+#ifdef AL_ALEXT_PROTOTYPES
+AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
+AL_API void AL_APIENTRY alRequestFoldbackStop(void);
+#endif
+#endif
+
+#ifndef ALC_EXT_DEDICATED
+#define ALC_EXT_DEDICATED 1
+#define AL_DEDICATED_GAIN 0x0001
+#define AL_EFFECT_DEDICATED_DIALOGUE 0x9001
+#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
+#endif
+
+#ifndef AL_SOFT_buffer_samples
+#define AL_SOFT_buffer_samples 1
+/* Channel configurations */
+#define AL_MONO_SOFT 0x1500
+#define AL_STEREO_SOFT 0x1501
+#define AL_REAR_SOFT 0x1502
+#define AL_QUAD_SOFT 0x1503
+#define AL_5POINT1_SOFT 0x1504
+#define AL_6POINT1_SOFT 0x1505
+#define AL_7POINT1_SOFT 0x1506
+
+/* Sample types */
+#define AL_BYTE_SOFT 0x1400
+#define AL_UNSIGNED_BYTE_SOFT 0x1401
+#define AL_SHORT_SOFT 0x1402
+#define AL_UNSIGNED_SHORT_SOFT 0x1403
+#define AL_INT_SOFT 0x1404
+#define AL_UNSIGNED_INT_SOFT 0x1405
+#define AL_FLOAT_SOFT 0x1406
+#define AL_DOUBLE_SOFT 0x1407
+#define AL_BYTE3_SOFT 0x1408
+#define AL_UNSIGNED_BYTE3_SOFT 0x1409
+
+/* Storage formats */
+#define AL_MONO8_SOFT 0x1100
+#define AL_MONO16_SOFT 0x1101
+#define AL_MONO32F_SOFT 0x10010
+#define AL_STEREO8_SOFT 0x1102
+#define AL_STEREO16_SOFT 0x1103
+#define AL_STEREO32F_SOFT 0x10011
+#define AL_QUAD8_SOFT 0x1204
+#define AL_QUAD16_SOFT 0x1205
+#define AL_QUAD32F_SOFT 0x1206
+#define AL_REAR8_SOFT 0x1207
+#define AL_REAR16_SOFT 0x1208
+#define AL_REAR32F_SOFT 0x1209
+#define AL_5POINT1_8_SOFT 0x120A
+#define AL_5POINT1_16_SOFT 0x120B
+#define AL_5POINT1_32F_SOFT 0x120C
+#define AL_6POINT1_8_SOFT 0x120D
+#define AL_6POINT1_16_SOFT 0x120E
+#define AL_6POINT1_32F_SOFT 0x120F
+#define AL_7POINT1_8_SOFT 0x1210
+#define AL_7POINT1_16_SOFT 0x1211
+#define AL_7POINT1_32F_SOFT 0x1212
+
+/* Buffer attributes */
+#define AL_INTERNAL_FORMAT_SOFT 0x2008
+#define AL_BYTE_LENGTH_SOFT 0x2009
+#define AL_SAMPLE_LENGTH_SOFT 0x200A
+#define AL_SEC_LENGTH_SOFT 0x200B
+
+typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
+typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
+typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
+typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
+#ifdef AL_ALEXT_PROTOTYPES
+AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
+AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
+AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
+AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
+#endif
+#endif
+
+#ifndef AL_SOFT_direct_channels
+#define AL_SOFT_direct_channels 1
+#define AL_DIRECT_CHANNELS_SOFT 0x1033
+#endif
+
+#ifndef ALC_SOFT_loopback
+#define ALC_SOFT_loopback 1
+#define ALC_FORMAT_CHANNELS_SOFT 0x1990
+#define ALC_FORMAT_TYPE_SOFT 0x1991
+
+/* Sample types */
+#define ALC_BYTE_SOFT 0x1400
+#define ALC_UNSIGNED_BYTE_SOFT 0x1401
+#define ALC_SHORT_SOFT 0x1402
+#define ALC_UNSIGNED_SHORT_SOFT 0x1403
+#define ALC_INT_SOFT 0x1404
+#define ALC_UNSIGNED_INT_SOFT 0x1405
+#define ALC_FLOAT_SOFT 0x1406
+
+/* Channel configurations */
+#define ALC_MONO_SOFT 0x1500
+#define ALC_STEREO_SOFT 0x1501
+#define ALC_QUAD_SOFT 0x1503
+#define ALC_5POINT1_SOFT 0x1504
+#define ALC_6POINT1_SOFT 0x1505
+#define ALC_7POINT1_SOFT 0x1506
+
+typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
+typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
+typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
+#ifdef AL_ALEXT_PROTOTYPES
+ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
+ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
+ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
+#endif
#endif
#ifdef __cplusplus
diff --git a/make/stub_includes/openal/efx.h b/make/stub_includes/openal/efx.h
index b7f5108..978f64a 100755
--- a/make/stub_includes/openal/efx.h
+++ b/make/stub_includes/openal/efx.h
@@ -1,748 +1,758 @@
-#ifndef __efx_h_
-#define __efx_h_
-
-/**
- * OpenAL cross platform effects extension audio library
- * Copyright (C) 2005-2006 by authors.
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
+#ifndef AL_EFX_H
+#define AL_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
+#define ALC_EXT_EFX_NAME "ALC_EXT_EFX"
+
+#define ALC_EFX_MAJOR_VERSION 0x20001
+#define ALC_EFX_MINOR_VERSION 0x20002
+#define ALC_MAX_AUXILIARY_SENDS 0x20003
+
+
+/* Listener properties. */
+#define AL_METERS_PER_UNIT 0x20004
+
+/* Source properties. */
+#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 properties. */
+
+/* Reverb effect 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
+
+/* EAX Reverb 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
+
+/* Chorus effect 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 effect 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 effect 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 effect 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
+
+/* Frequency shifter effect parameters */
+#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001
+#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002
+#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003
+
+/* Vocal morpher effect 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 effect parameters */
+#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001
+#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002
+
+/* Ringmodulator effect parameters */
+#define AL_RING_MODULATOR_FREQUENCY 0x0001
+#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002
+#define AL_RING_MODULATOR_WAVEFORM 0x0003
+
+/* Autowah effect 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 effect parameters */
+#define AL_COMPRESSOR_ONOFF 0x0001
+
+/* Equalizer effect 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
+#define AL_EFFECT_FIRST_PARAMETER 0x0000
+#define AL_EFFECT_LAST_PARAMETER 0x8000
+#define AL_EFFECT_TYPE 0x8001
+
+/* Effect types, used with the AL_EFFECT_TYPE property */
+#define AL_EFFECT_NULL 0x0000
+#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
+#define AL_EFFECT_EAXREVERB 0x8000
+
+/* Auxiliary Effect Slot properties. */
+#define AL_EFFECTSLOT_EFFECT 0x0001
+#define AL_EFFECTSLOT_GAIN 0x0002
+#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
+
+/* NULL Auxiliary Slot ID to disable a source send. */
+#define AL_EFFECTSLOT_NULL 0x0000
+
+
+/* Filter properties. */
+
+/* Lowpass filter parameters */
+#define AL_LOWPASS_GAIN 0x0001
+#define AL_LOWPASS_GAINHF 0x0002
+
+/* Highpass filter parameters */
+#define AL_HIGHPASS_GAIN 0x0001
+#define AL_HIGHPASS_GAINLF 0x0002
+
+/* Bandpass filter 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 );
-void alGenEffects( ALsizei n, ALuint* effects );
-
-/* Delete Effect objects. */
-typedef void (__cdecl *LPALDELETEEFFECTS)( ALsizei n, ALuint* effects );
-void alDeleteEffects( ALsizei n, ALuint* effects );
-
-/* Verify a handle is a valid Effect. */
-typedef ALboolean (__cdecl *LPALISEFFECT)( ALuint eid );
-ALboolean alIsEffect( ALuint eid );
-
-/* Set an integer parameter for an Effect object. */
-typedef void (__cdecl *LPALEFFECTI)( ALuint eid, ALenum param, ALint value);
-void alEffecti( ALuint eid, ALenum param, ALint value);
-typedef void (__cdecl *LPALEFFECTIV)( ALuint eid, ALenum param, ALint* values );
-void alEffectiv( 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);
-void alEffectf( ALuint eid, ALenum param, ALfloat value);
-typedef void (__cdecl *LPALEFFECTFV)( ALuint eid, ALenum param, ALfloat* values );
-void alEffectfv( ALuint eid, ALenum param, ALfloat* values );
-
-/* Get an integer parameter for an Effect object. */
-typedef void (__cdecl *LPALGETEFFECTI)( ALuint eid, ALenum pname, ALint* value );
-void alGetEffecti( ALuint eid, ALenum pname, ALint* value );
-typedef void (__cdecl *LPALGETEFFECTIV)( ALuint eid, ALenum pname, ALint* values );
-void alGetEffectiv( 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 );
-void alGetEffectf( ALuint eid, ALenum pname, ALfloat* value );
-typedef void (__cdecl *LPALGETEFFECTFV)( ALuint eid, ALenum pname, ALfloat* values );
-void alGetEffectfv( ALuint eid, ALenum pname, ALfloat* values );
-
-
-/**
- * Filter object functions
- */
-
-/* Create Filter objects. */
-typedef void (__cdecl *LPALGENFILTERS)( ALsizei n, ALuint* filters );
-void alGenFilters( ALsizei n, ALuint* filters );
-
-/* Delete Filter objects. */
-typedef void (__cdecl *LPALDELETEFILTERS)( ALsizei n, ALuint* filters );
-void alDeleteFilters( ALsizei n, ALuint* filters );
-
-/* Verify a handle is a valid Filter. */
-typedef ALboolean (__cdecl *LPALISFILTER)( ALuint fid );
-ALboolean alIsFilter( ALuint fid );
-
-/* Set an integer parameter for a Filter object. */
-typedef void (__cdecl *LPALFILTERI)( ALuint fid, ALenum param, ALint value );
-void alFilteri( ALuint fid, ALenum param, ALint value );
-typedef void (__cdecl *LPALFILTERIV)( ALuint fid, ALenum param, ALint* values );
-void alFilteriv( 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);
-void alFilterf( ALuint fid, ALenum param, ALfloat value);
-typedef void (__cdecl *LPALFILTERFV)( ALuint fid, ALenum param, ALfloat* values );
-void alFilterfv( ALuint fid, ALenum param, ALfloat* values );
-
-/* Get an integer parameter for a Filter object. */
-typedef void (__cdecl *LPALGETFILTERI)( ALuint fid, ALenum pname, ALint* value );
-void alGetFilteri( ALuint fid, ALenum pname, ALint* value );
-typedef void (__cdecl *LPALGETFILTERIV)( ALuint fid, ALenum pname, ALint* values );
-void alGetFilteriv( ALuint fid, ALenum pname, ALint* values );
+#define AL_FILTER_FIRST_PARAMETER 0x0000
+#define AL_FILTER_LAST_PARAMETER 0x8000
+#define AL_FILTER_TYPE 0x8001
+
+/* Filter types, used with the AL_FILTER_TYPE property */
+#define AL_FILTER_NULL 0x0000
+#define AL_FILTER_LOWPASS 0x0001
+#define AL_FILTER_HIGHPASS 0x0002
+#define AL_FILTER_BANDPASS 0x0003
+
+
+/* Effect object function types. */
+typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*);
+typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*);
+typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint);
+typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint);
+typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*);
+typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat);
+typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*);
+typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*);
+typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*);
+typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*);
+typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*);
+
+/* Filter object function types. */
+typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*);
+typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*);
+typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint);
+typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint);
+typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*);
+typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat);
+typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*);
+typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*);
+typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*);
+typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*);
+typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*);
+
+/* Auxiliary Effect Slot object function types. */
+typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*);
+typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*);
+typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint);
+typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint);
+typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*);
+typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat);
+typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*);
+typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*);
+typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*);
+typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*);
+typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*);
+
+#ifdef AL_ALEXT_PROTOTYPES
+AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
+AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects);
+AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
+AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
+AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues);
+AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
+AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues);
+AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
+AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
+AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
+AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
+
+AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters);
+AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters);
+AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter);
+AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue);
+AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues);
+AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue);
+AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues);
+AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue);
+AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues);
+AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
+AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);
+
+AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
+AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots);
+AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
+AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
+AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues);
+AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
+AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues);
+AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
+AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
+AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
+AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
+#endif
+
+/* Filter ranges and defaults. */
+
+/* Lowpass filter */
+#define AL_LOWPASS_MIN_GAIN (0.0f)
+#define AL_LOWPASS_MAX_GAIN (1.0f)
+#define AL_LOWPASS_DEFAULT_GAIN (1.0f)
+
+#define AL_LOWPASS_MIN_GAINHF (0.0f)
+#define AL_LOWPASS_MAX_GAINHF (1.0f)
+#define AL_LOWPASS_DEFAULT_GAINHF (1.0f)
+
+/* Highpass filter */
+#define AL_HIGHPASS_MIN_GAIN (0.0f)
+#define AL_HIGHPASS_MAX_GAIN (1.0f)
+#define AL_HIGHPASS_DEFAULT_GAIN (1.0f)
+
+#define AL_HIGHPASS_MIN_GAINLF (0.0f)
+#define AL_HIGHPASS_MAX_GAINLF (1.0f)
+#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f)
+
+/* Bandpass filter */
+#define AL_BANDPASS_MIN_GAIN (0.0f)
+#define AL_BANDPASS_MAX_GAIN (1.0f)
+#define AL_BANDPASS_DEFAULT_GAIN (1.0f)
+
+#define AL_BANDPASS_MIN_GAINHF (0.0f)
+#define AL_BANDPASS_MAX_GAINHF (1.0f)
+#define AL_BANDPASS_DEFAULT_GAINHF (1.0f)
+
+#define AL_BANDPASS_MIN_GAINLF (0.0f)
+#define AL_BANDPASS_MAX_GAINLF (1.0f)
+#define AL_BANDPASS_DEFAULT_GAINLF (1.0f)
+
+
+/* Effect parameter ranges and defaults. */
+
+/* Standard reverb effect */
+#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
+
+/* EAX reverb effect */
+#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)
-/* Get a floating point parameter for a Filter object. */
-typedef void (__cdecl *LPALGETFILTERF)( ALuint fid, ALenum pname, ALfloat* value );
-void alGetFilterf( ALuint fid, ALenum pname, ALfloat* value );
-typedef void (__cdecl *LPALGETFILTERFV)( ALuint fid, ALenum pname, ALfloat* values );
-void alGetFilterfv( ALuint fid, ALenum pname, ALfloat* values );
-
-
-/**
- * Auxiliary Slot object functions
- */
-
-/* Create Auxiliary Slot objects. */
-typedef void (__cdecl *LPALGENAUXILIARYEFFECTSLOTS)( ALsizei n, ALuint* slots );
-void alGenAuxiliaryEffectSlots( ALsizei n, ALuint* slots );
-
-/* Delete Auxiliary Slot objects. */
-typedef void (__cdecl *LPALDELETEAUXILIARYEFFECTSLOTS)( ALsizei n, ALuint* slots );
-void alDeleteAuxiliaryEffectSlots( ALsizei n, ALuint* slots );
-
-/* Verify a handle is a valid Auxiliary Slot. */
-typedef ALboolean (__cdecl *LPALISAUXILIARYEFFECTSLOT)( ALuint slot );
-ALboolean alIsAuxiliaryEffectSlot( ALuint slot );
+#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f)
-/* Set an integer parameter for a Auxiliary Slot object. */
-typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTI)( ALuint asid, ALenum param, ALint value );
-void alAuxiliaryEffectSloti( ALuint asid, ALenum param, ALint value );
-typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTIV)( ALuint asid, ALenum param, ALint* values );
-void alAuxiliaryEffectSlotiv( ALuint asid, ALenum param, ALint* values );
+#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)
-/* Set a floating point parameter for an Auxiliary Slot object. */
-typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTF)( ALuint asid, ALenum param, ALfloat value );
-void alAuxiliaryEffectSlotf( ALuint asid, ALenum param, ALfloat value );
-typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTFV)( ALuint asid, ALenum param, ALfloat* values );
-void alAuxiliaryEffectSlotfv( 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 );
-void alGetAuxiliaryEffectSloti( ALuint asid, ALenum pname, ALint* value );
-typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTIV)( ALuint asid, ALenum pname, ALint* values );
-void alGetAuxiliaryEffectSlotiv( ALuint asid, ALenum pname, ALint* values );
+#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)
-/* Get a floating point parameter for a Auxiliary Slot object. */
-typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTF)( ALuint asid, ALenum pname, ALfloat* value );
-void alGetAuxiliaryEffectSlotf( ALuint asid, ALenum pname, ALfloat* value );
-typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTFV)( ALuint asid, ALenum pname, ALfloat* values );
-void alGetAuxiliaryEffectSlotfv( ALuint asid, ALenum pname, ALfloat* values );
+#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (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)
-/**********************************************************
- * Filter ranges and defaults.
- */
+#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f)
+#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f)
+#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f)
-/**
- * Lowpass filter
- */
+#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 LOWPASS_MIN_GAIN 0.0f
-#define LOWPASS_MAX_GAIN 1.0f
-#define LOWPASS_DEFAULT_GAIN 1.0f
+#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f)
+#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f)
+#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f)
-#define LOWPASS_MIN_GAINHF 0.0f
-#define LOWPASS_MAX_GAINHF 1.0f
-#define LOWPASS_DEFAULT_GAINHF 1.0f
+#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f)
+#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f)
+#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f)
-/**
- * Highpass filter
- */
+#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 HIGHPASS_MIN_GAIN 0.0f
-#define HIGHPASS_MAX_GAIN 1.0f
-#define HIGHPASS_DEFAULT_GAIN 1.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
-#define HIGHPASS_MIN_GAINLF 0.0f
-#define HIGHPASS_MAX_GAINLF 1.0f
-#define HIGHPASS_DEFAULT_GAINLF 1.0f
+/* Chorus effect */
+#define AL_CHORUS_WAVEFORM_SINUSOID (0)
+#define AL_CHORUS_WAVEFORM_TRIANGLE (1)
-/**
- * Bandpass filter
- */
+#define AL_CHORUS_MIN_WAVEFORM (0)
+#define AL_CHORUS_MAX_WAVEFORM (1)
+#define AL_CHORUS_DEFAULT_WAVEFORM (1)
-#define BANDPASS_MIN_GAIN 0.0f
-#define BANDPASS_MAX_GAIN 1.0f
-#define BANDPASS_DEFAULT_GAIN 1.0f
+#define AL_CHORUS_MIN_PHASE (-180)
+#define AL_CHORUS_MAX_PHASE (180)
+#define AL_CHORUS_DEFAULT_PHASE (90)
-#define BANDPASS_MIN_GAINHF 0.0f
-#define BANDPASS_MAX_GAINHF 1.0f
-#define BANDPASS_DEFAULT_GAINHF 1.0f
+#define AL_CHORUS_MIN_RATE (0.0f)
+#define AL_CHORUS_MAX_RATE (10.0f)
+#define AL_CHORUS_DEFAULT_RATE (1.1f)
-#define BANDPASS_MIN_GAINLF 0.0f
-#define BANDPASS_MAX_GAINLF 1.0f
-#define BANDPASS_DEFAULT_GAINLF 1.0f
+#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)
+/* Distortion effect */
+#define AL_DISTORTION_MIN_EDGE (0.0f)
+#define AL_DISTORTION_MAX_EDGE (1.0f)
+#define AL_DISTORTION_DEFAULT_EDGE (0.2f)
- /**********************************************************
- * Effect parameter structures, value definitions, ranges and defaults.
- */
+#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)
+
+/* Echo effect */
+#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)
+
+/* Flanger effect */
+#define AL_FLANGER_WAVEFORM_SINUSOID (0)
+#define AL_FLANGER_WAVEFORM_TRIANGLE (1)
+
+#define AL_FLANGER_MIN_WAVEFORM (0)
+#define AL_FLANGER_MAX_WAVEFORM (1)
+#define AL_FLANGER_DEFAULT_WAVEFORM (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)
+
+/* Frequency shifter effect */
+#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_DIRECTION_DOWN (0)
+#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1)
+#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2)
+
+#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0)
+#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2)
+#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0)
+
+/* Vocal morpher effect */
+#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_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_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_WAVEFORM_SINUSOID (0)
+#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1)
+#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2)
+
+#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_MIN_RATE (0.0f)
+#define AL_VOCAL_MORPHER_MAX_RATE (10.0f)
+#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f)
+
+/* Pitch shifter effect */
+#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)
+
+/* Ring modulator effect */
+#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_SINUSOID (0)
+#define AL_RING_MODULATOR_SAWTOOTH (1)
+#define AL_RING_MODULATOR_SQUARE (2)
+
+#define AL_RING_MODULATOR_MIN_WAVEFORM (0)
+#define AL_RING_MODULATOR_MAX_WAVEFORM (2)
+#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0)
+
+/* Autowah effect */
+#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)
+
+/* Compressor effect */
+#define AL_COMPRESSOR_MIN_ONOFF (0)
+#define AL_COMPRESSOR_MAX_ONOFF (1)
+#define AL_COMPRESSOR_DEFAULT_ONOFF (1)
+
+/* Equalizer effect */
+#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)
-/**
- * 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_EQUALIZER_MIN_HIGH_GAIN (0.126f)
+#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f)
+#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (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_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f)
+#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f)
+#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.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
+/* Source parameter value 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_REVERB_MIN_DECAY_TIME 0.1f
-#define AL_REVERB_MAX_DECAY_TIME 20.0f
-#define AL_REVERB_DEFAULT_DECAY_TIME 1.49f
+#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_REVERB_MIN_DECAY_HFRATIO 0.1f
-#define AL_REVERB_MAX_DECAY_HFRATIO 2.0f
-#define AL_REVERB_DEFAULT_DECAY_HFRATIO 0.83f
+#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_REVERB_MIN_REFLECTIONS_GAIN 0.0f
-#define AL_REVERB_MAX_REFLECTIONS_GAIN 3.16f
-#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN 0.05f
+#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_REVERB_MIN_REFLECTIONS_DELAY 0.0f
-#define AL_REVERB_MAX_REFLECTIONS_DELAY 0.3f
-#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY 0.007f
+#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_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_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
-#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
+/* Listener parameter value 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)
-#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 90
-
-#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
#ifdef __cplusplus
} /* extern "C" */
#endif
-#endif /* __efx_h_ */
+#endif /* AL_EFX_H */
diff --git a/src/java/com/jogamp/openal/ALFactory.java b/src/java/com/jogamp/openal/ALFactory.java
index 29174ba..f442f00 100644
--- a/src/java/com/jogamp/openal/ALFactory.java
+++ b/src/java/com/jogamp/openal/ALFactory.java
@@ -36,6 +36,7 @@ package com.jogamp.openal;
import com.jogamp.common.os.Platform;
import com.jogamp.openal.AL;
import com.jogamp.openal.ALC;
+import com.jogamp.openal.ALExt;
import jogamp.openal.*;
/**
@@ -50,6 +51,7 @@ public class ALFactory {
private static boolean initialized = false;
private static AL al;
private static ALC alc;
+ private static ALExt alext;
private ALFactory() {}
@@ -97,4 +99,18 @@ public class ALFactory {
}
return alc;
}
+
+ /**
+ * Get the default ALExt object. This object is used to access most of the
+ * OpenAL extension functionality.
+ *
+ * @return the ALExt object
+ */
+ public static ALExt getALExt() throws ALException{
+ initialize();
+ if (alext == null) {
+ alext = new ALExtImpl();
+ }
+ return alext;
+ }
}
diff --git a/src/java/jogamp/openal/ALExtImpl.java b/src/java/jogamp/openal/ALExtImpl.java
new file mode 100644
index 0000000..23deab1
--- /dev/null
+++ b/src/java/jogamp/openal/ALExtImpl.java
@@ -0,0 +1,15 @@
+package jogamp.openal;
+
+import com.jogamp.common.nio.Buffers;
+import com.jogamp.openal.ALException;
+import com.jogamp.openal.ALCdevice;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+
+/**
+ * ALExt implementation.
+ */
+public class ALExtImpl extends ALExtAbstractImpl {
+
+}
diff --git a/src/java/jogamp/openal/Debug.java b/src/java/jogamp/openal/Debug.java
index e157f00..5387ae3 100644
--- a/src/java/jogamp/openal/Debug.java
+++ b/src/java/jogamp/openal/Debug.java
@@ -55,6 +55,10 @@ public class Debug extends PropertyAccess {
debugAll = isPropertyDefined("joal.debug", true);
}
+ public static final boolean isPropertyDefined(final String property, final boolean jnlpAlias) {
+ return PropertyAccess.isPropertyDefined(property, jnlpAlias, null);
+ }
+
public static boolean verbose() {
return verbose;
}
@@ -64,6 +68,6 @@ public class Debug extends PropertyAccess {
}
public static boolean debug(String subcomponent) {
- return debugAll() || isPropertyDefined("joal.debug." + subcomponent, true);
+ return debugAll() || isPropertyDefined("joal.debug." + subcomponent, true, null);
}
}
diff --git a/src/native/almisc.c b/src/native/almisc.c
index b850a9f..c77cb0e 100644
--- a/src/native/almisc.c
+++ b/src/native/almisc.c
@@ -31,7 +31,7 @@ JNIEXPORT jlong JNICALL
Java_jogamp_openal_ALImpl_dispatch_1alGetProcAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
LPALGETPROCADDRESS ptr_alGetProcAddress;
const char* _strchars_fname = NULL;
- ALproc _res;
+ void *_res;
if ( NULL != fname ) {
_strchars_fname = (*env)->GetStringUTFChars(env, fname, (jboolean*)NULL);
if ( NULL == _strchars_fname ) {
diff --git a/src/test/com/jogamp/openal/test/junit/ALTest.java b/src/test/com/jogamp/openal/test/junit/ALTest.java
index 33d7b0d..d911154 100644
--- a/src/test/com/jogamp/openal/test/junit/ALTest.java
+++ b/src/test/com/jogamp/openal/test/junit/ALTest.java
@@ -8,11 +8,13 @@ package com.jogamp.openal.test.junit;
import com.jogamp.openal.AL;
import com.jogamp.openal.ALC;
+import com.jogamp.openal.ALExt;
import com.jogamp.openal.ALCcontext;
import com.jogamp.openal.ALCdevice;
import com.jogamp.openal.ALFactory;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.ByteBuffer;
import javax.sound.sampled.UnsupportedAudioFileException;
@@ -33,6 +35,7 @@ public class ALTest {
private static AL al;
private static ALC alc;
+ private static ALExt alext;
private static ALCcontext context;
private static ALCdevice device;
private final static String TEST_FILE = "lewiscarroll.wav";
@@ -41,6 +44,7 @@ public class ALTest {
public static void setUp() {
al = ALFactory.getAL();
alc = ALFactory.getALC();
+ alext = ALFactory.getALExt();
device = alc.alcOpenDevice(null);
context = alc.alcCreateContext(device, null);
alc.alcMakeContextCurrent(context);
@@ -381,6 +385,80 @@ public class ALTest {
// assertNotNull(ex);
}
+ @Test
+ public void testAlCLoopbackDeviceSOFT() throws UnsupportedAudioFileException, IOException {
+ boolean have = alc.alcIsExtensionPresent(null, "ALC_SOFT_loopback");
+ ALCdevice dev;
+ Exception ex = null;
+
+ if (!have) {
+ System.out.println("No extension ALC_SOFT_loopback present");
+
+ try {
+ dev = alext.alcLoopbackOpenDeviceSOFT(null);
+ } catch (Exception x) {
+ ex = x;
+ }
+ assertNotNull(ex);
+
+ return;
+ }
+
+ System.out.println("begin testAlCLoopbackDeviceSOFT");
+
+ int[] buffers = new int[1];
+
+ dev = alext.alcLoopbackOpenDeviceSOFT(null);
+ assertNotNull(dev);
+
+ WAVData wd = null;
+ ALCcontext context = null;
+
+ try {
+ wd = loadTestWAV();
+ // for whatever reason the type codes differ for this stuff
+ context = alc.alcCreateContext(dev, new int[]{
+ ALExt.ALC_FORMAT_CHANNELS_SOFT,
+ ALExt.AL_MONO_SOFT,
+ ALExt.ALC_FORMAT_TYPE_SOFT,
+ ALExt.AL_UNSIGNED_BYTE_SOFT,
+ ALC.ALC_FREQUENCY,
+ wd.freq,
+ 0
+ }, 0);
+
+ boolean state = alc.alcMakeContextCurrent(context);
+ assertTrue(state);
+ } catch (Exception e) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ ex = null;
+
+ // queue the data
+ al.alGenBuffers(1, buffers, 0);
+ al.alBufferData(buffers[0], wd.format, wd.data, wd.size, wd.freq);
+
+ ByteBuffer bb = ByteBuffer.allocateDirect(wd.size).order(wd.data.order());
+
+ // render it to an output buffer
+ try {
+ alext.alcRenderSamplesSOFT(dev, wd.data, wd.size);
+ } catch (Exception e) {
+ ex = e;
+ }
+ assertNotNull(ex);
+
+ // should the samples be bit identical?
+ for (int i=0;i