mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-06 23:11:18 +12:00
SoundAPI: OpenAL support
This commit is contained in:
parent
ec2d7c086a
commit
b02bd6225b
16 changed files with 3874 additions and 0 deletions
|
@ -123,6 +123,7 @@ if (WIN32)
|
||||||
option(ENABLE_XAUDIO "Enables the xaudio backend" ON)
|
option(ENABLE_XAUDIO "Enables the xaudio backend" ON)
|
||||||
endif()
|
endif()
|
||||||
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
|
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
|
||||||
|
option(ENABLE_OPENAL "Enabled OpenAL backend" ON)
|
||||||
|
|
||||||
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
|
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
|
||||||
|
|
||||||
|
@ -220,6 +221,10 @@ if (ENABLE_CUBEB)
|
||||||
add_compile_definitions("HAS_CUBEB=1")
|
add_compile_definitions("HAS_CUBEB=1")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (ENABLE_OPENAL)
|
||||||
|
add_compile_definitions("HAS_OPENAL=1")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
|
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
find_package(ZArchive)
|
find_package(ZArchive)
|
||||||
|
|
707
src/audio/AL/al.h
Normal file
707
src/audio/AL/al.h
Normal file
|
@ -0,0 +1,707 @@
|
||||||
|
#ifndef AL_AL_H
|
||||||
|
#define AL_AL_H
|
||||||
|
|
||||||
|
/* NOLINTBEGIN */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
#ifdef _MSVC_LANG
|
||||||
|
#define AL_CPLUSPLUS _MSVC_LANG
|
||||||
|
#else
|
||||||
|
#define AL_CPLUSPLUS __cplusplus
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AL_DISABLE_NOEXCEPT
|
||||||
|
#if AL_CPLUSPLUS >= 201103L
|
||||||
|
#define AL_API_NOEXCEPT noexcept
|
||||||
|
#else
|
||||||
|
#define AL_API_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
#if AL_CPLUSPLUS >= 201703L
|
||||||
|
#define AL_API_NOEXCEPT17 noexcept
|
||||||
|
#else
|
||||||
|
#define AL_API_NOEXCEPT17
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else /* AL_DISABLE_NOEXCEPT */
|
||||||
|
|
||||||
|
#define AL_API_NOEXCEPT
|
||||||
|
#define AL_API_NOEXCEPT17
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef AL_CPLUSPLUS
|
||||||
|
|
||||||
|
#else /* __cplusplus */
|
||||||
|
|
||||||
|
#define AL_API_NOEXCEPT
|
||||||
|
#define AL_API_NOEXCEPT17
|
||||||
|
#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
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define AL_APIENTRY __cdecl
|
||||||
|
#else
|
||||||
|
#define AL_APIENTRY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Deprecated macros. */
|
||||||
|
#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
|
||||||
|
|
||||||
|
/* Supported AL versions. */
|
||||||
|
#define AL_VERSION_1_0
|
||||||
|
#define AL_VERSION_1_1
|
||||||
|
|
||||||
|
/** 8-bit boolean */
|
||||||
|
typedef char ALboolean;
|
||||||
|
|
||||||
|
/** character */
|
||||||
|
typedef char ALchar;
|
||||||
|
|
||||||
|
/** signed 8-bit integer */
|
||||||
|
typedef signed char ALbyte;
|
||||||
|
|
||||||
|
/** unsigned 8-bit integer */
|
||||||
|
typedef unsigned char ALubyte;
|
||||||
|
|
||||||
|
/** signed 16-bit integer */
|
||||||
|
typedef short ALshort;
|
||||||
|
|
||||||
|
/** unsigned 16-bit integer */
|
||||||
|
typedef unsigned short ALushort;
|
||||||
|
|
||||||
|
/** signed 32-bit integer */
|
||||||
|
typedef int ALint;
|
||||||
|
|
||||||
|
/** unsigned 32-bit integer */
|
||||||
|
typedef unsigned int ALuint;
|
||||||
|
|
||||||
|
/** non-negative 32-bit integer size */
|
||||||
|
typedef int ALsizei;
|
||||||
|
|
||||||
|
/** 32-bit enumeration value */
|
||||||
|
typedef int ALenum;
|
||||||
|
|
||||||
|
/** 32-bit IEEE-754 floating-point */
|
||||||
|
typedef float ALfloat;
|
||||||
|
|
||||||
|
/** 64-bit IEEE-754 floating-point */
|
||||||
|
typedef double ALdouble;
|
||||||
|
|
||||||
|
/** void type (opaque pointers only) */
|
||||||
|
typedef void ALvoid;
|
||||||
|
|
||||||
|
|
||||||
|
/* Enumeration values begin at column 50. Do not use tabs. */
|
||||||
|
|
||||||
|
/** No distance model or no buffer */
|
||||||
|
#define AL_NONE 0
|
||||||
|
|
||||||
|
/** Boolean False. */
|
||||||
|
#define AL_FALSE 0
|
||||||
|
|
||||||
|
/** Boolean True. */
|
||||||
|
#define AL_TRUE 1
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Relative source.
|
||||||
|
* Type: ALboolean
|
||||||
|
* Range: [AL_FALSE, AL_TRUE]
|
||||||
|
* Default: AL_FALSE
|
||||||
|
*
|
||||||
|
* Specifies if the source uses relative coordinates.
|
||||||
|
*/
|
||||||
|
#define AL_SOURCE_RELATIVE 0x202
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inner cone angle, in degrees.
|
||||||
|
* Type: ALint, ALfloat
|
||||||
|
* Range: [0 - 360]
|
||||||
|
* Default: 360
|
||||||
|
*
|
||||||
|
* The angle covered by the inner cone, the area within which the source will
|
||||||
|
* not be attenuated by direction.
|
||||||
|
*/
|
||||||
|
#define AL_CONE_INNER_ANGLE 0x1001
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outer cone angle, in degrees.
|
||||||
|
* Range: [0 - 360]
|
||||||
|
* Default: 360
|
||||||
|
*
|
||||||
|
* The angle covered by the outer cone, the area outside of which the source
|
||||||
|
* will be fully attenuated by direction.
|
||||||
|
*/
|
||||||
|
#define AL_CONE_OUTER_ANGLE 0x1002
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source pitch.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.5 - 2.0]
|
||||||
|
* Default: 1.0
|
||||||
|
*
|
||||||
|
* A multiplier for the sample rate of the source's buffer.
|
||||||
|
*/
|
||||||
|
#define AL_PITCH 0x1003
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source or listener position.
|
||||||
|
* Type: ALfloat[3], ALint[3]
|
||||||
|
* Default: {0, 0, 0}
|
||||||
|
*
|
||||||
|
* The source or listener location in three dimensional space.
|
||||||
|
*
|
||||||
|
* OpenAL uses a right handed coordinate system, like OpenGL, where with a
|
||||||
|
* default view, X points right (thumb), Y points up (index finger), and Z
|
||||||
|
* points towards the viewer/camera (middle finger).
|
||||||
|
*
|
||||||
|
* To change from or to a left handed coordinate system, negate the Z
|
||||||
|
* component.
|
||||||
|
*/
|
||||||
|
#define AL_POSITION 0x1004
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source direction.
|
||||||
|
* Type: ALfloat[3], ALint[3]
|
||||||
|
* Default: {0, 0, 0}
|
||||||
|
*
|
||||||
|
* Specifies the current direction in local space. A zero-length vector
|
||||||
|
* specifies an omni-directional source (cone is ignored).
|
||||||
|
*
|
||||||
|
* To change from or to a left handed coordinate system, negate the Z
|
||||||
|
* component.
|
||||||
|
*/
|
||||||
|
#define AL_DIRECTION 0x1005
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source or listener velocity.
|
||||||
|
* Type: ALfloat[3], ALint[3]
|
||||||
|
* Default: {0, 0, 0}
|
||||||
|
*
|
||||||
|
* Specifies the current velocity, relative to the position.
|
||||||
|
*
|
||||||
|
* To change from or to a left handed coordinate system, negate the Z
|
||||||
|
* component.
|
||||||
|
*/
|
||||||
|
#define AL_VELOCITY 0x1006
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source looping.
|
||||||
|
* Type: ALboolean
|
||||||
|
* Range: [AL_FALSE, AL_TRUE]
|
||||||
|
* Default: AL_FALSE
|
||||||
|
*
|
||||||
|
* Specifies whether source playback loops.
|
||||||
|
*/
|
||||||
|
#define AL_LOOPING 0x1007
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source buffer.
|
||||||
|
* Type: ALuint
|
||||||
|
* Range: any valid Buffer ID
|
||||||
|
* Default: AL_NONE
|
||||||
|
*
|
||||||
|
* Specifies the buffer to provide sound samples for a source.
|
||||||
|
*/
|
||||||
|
#define AL_BUFFER 0x1009
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source or listener gain.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - ]
|
||||||
|
*
|
||||||
|
* For sources, an initial linear gain value (before attenuation is applied).
|
||||||
|
* For the listener, an output linear gain adjustment.
|
||||||
|
*
|
||||||
|
* A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
|
||||||
|
* of about -6dB. Each multiplication by 2 equals an amplification of about
|
||||||
|
* +6dB.
|
||||||
|
*/
|
||||||
|
#define AL_GAIN 0x100A
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minimum source gain.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - 1.0]
|
||||||
|
*
|
||||||
|
* The minimum gain allowed for a source, after distance and cone attenuation
|
||||||
|
* are applied (if applicable).
|
||||||
|
*/
|
||||||
|
#define AL_MIN_GAIN 0x100D
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum source gain.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - 1.0]
|
||||||
|
*
|
||||||
|
* The maximum gain allowed for a source, after distance and cone attenuation
|
||||||
|
* are applied (if applicable).
|
||||||
|
*/
|
||||||
|
#define AL_MAX_GAIN 0x100E
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener orientation.
|
||||||
|
* Type: ALfloat[6]
|
||||||
|
* Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
|
||||||
|
*
|
||||||
|
* Effectively two three dimensional vectors. The first vector is the front (or
|
||||||
|
* "at") and the second is the top (or "up"). Both vectors are relative to the
|
||||||
|
* listener position.
|
||||||
|
*
|
||||||
|
* To change from or to a left handed coordinate system, negate the Z
|
||||||
|
* component of both vectors.
|
||||||
|
*/
|
||||||
|
#define AL_ORIENTATION 0x100F
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source state (query only).
|
||||||
|
* Type: ALenum
|
||||||
|
* Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
|
||||||
|
*/
|
||||||
|
#define AL_SOURCE_STATE 0x1010
|
||||||
|
|
||||||
|
/* Source state values. */
|
||||||
|
#define AL_INITIAL 0x1011
|
||||||
|
#define AL_PLAYING 0x1012
|
||||||
|
#define AL_PAUSED 0x1013
|
||||||
|
#define AL_STOPPED 0x1014
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source Buffer Queue size (query only).
|
||||||
|
* Type: ALint
|
||||||
|
*
|
||||||
|
* The number of buffers queued using alSourceQueueBuffers, minus the buffers
|
||||||
|
* removed with alSourceUnqueueBuffers.
|
||||||
|
*/
|
||||||
|
#define AL_BUFFERS_QUEUED 0x1015
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source Buffer Queue processed count (query only).
|
||||||
|
* Type: ALint
|
||||||
|
*
|
||||||
|
* The number of queued buffers that have been fully processed, and can be
|
||||||
|
* removed with alSourceUnqueueBuffers.
|
||||||
|
*
|
||||||
|
* Looping sources will never fully process buffers because they will be set to
|
||||||
|
* play again for when the source loops.
|
||||||
|
*/
|
||||||
|
#define AL_BUFFERS_PROCESSED 0x1016
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source reference distance.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - ]
|
||||||
|
* Default: 1.0
|
||||||
|
*
|
||||||
|
* The distance in units that no distance attenuation occurs.
|
||||||
|
*
|
||||||
|
* At 0.0, no distance attenuation occurs with non-linear attenuation models.
|
||||||
|
*/
|
||||||
|
#define AL_REFERENCE_DISTANCE 0x1020
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source rolloff factor.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - ]
|
||||||
|
* Default: 1.0
|
||||||
|
*
|
||||||
|
* Multiplier to exaggerate or diminish distance attenuation.
|
||||||
|
*
|
||||||
|
* At 0.0, no distance attenuation ever occurs.
|
||||||
|
*/
|
||||||
|
#define AL_ROLLOFF_FACTOR 0x1021
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outer cone gain.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - 1.0]
|
||||||
|
* Default: 0.0
|
||||||
|
*
|
||||||
|
* The gain attenuation applied when the listener is outside of the source's
|
||||||
|
* outer cone angle.
|
||||||
|
*/
|
||||||
|
#define AL_CONE_OUTER_GAIN 0x1022
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source maximum distance.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - ]
|
||||||
|
* Default: FLT_MAX
|
||||||
|
*
|
||||||
|
* The distance above which the source is not attenuated any further with a
|
||||||
|
* clamped distance model, or where attenuation reaches 0.0 gain for linear
|
||||||
|
* distance models with a default rolloff factor.
|
||||||
|
*/
|
||||||
|
#define AL_MAX_DISTANCE 0x1023
|
||||||
|
|
||||||
|
/** Source buffer offset, in seconds */
|
||||||
|
#define AL_SEC_OFFSET 0x1024
|
||||||
|
/** Source buffer offset, in sample frames */
|
||||||
|
#define AL_SAMPLE_OFFSET 0x1025
|
||||||
|
/** Source buffer offset, in bytes */
|
||||||
|
#define AL_BYTE_OFFSET 0x1026
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source type (query only).
|
||||||
|
* Type: ALenum
|
||||||
|
* Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
|
||||||
|
*
|
||||||
|
* A Source is Static if a Buffer has been attached using AL_BUFFER.
|
||||||
|
*
|
||||||
|
* A Source is Streaming if one or more Buffers have been attached using
|
||||||
|
* alSourceQueueBuffers.
|
||||||
|
*
|
||||||
|
* A Source is Undetermined when it has the NULL buffer attached using
|
||||||
|
* AL_BUFFER.
|
||||||
|
*/
|
||||||
|
#define AL_SOURCE_TYPE 0x1027
|
||||||
|
|
||||||
|
/* Source type values. */
|
||||||
|
#define AL_STATIC 0x1028
|
||||||
|
#define AL_STREAMING 0x1029
|
||||||
|
#define AL_UNDETERMINED 0x1030
|
||||||
|
|
||||||
|
/** Unsigned 8-bit mono buffer format. */
|
||||||
|
#define AL_FORMAT_MONO8 0x1100
|
||||||
|
/** Signed 16-bit mono buffer format. */
|
||||||
|
#define AL_FORMAT_MONO16 0x1101
|
||||||
|
/** Unsigned 8-bit stereo buffer format. */
|
||||||
|
#define AL_FORMAT_STEREO8 0x1102
|
||||||
|
/** Signed 16-bit stereo buffer format. */
|
||||||
|
#define AL_FORMAT_STEREO16 0x1103
|
||||||
|
|
||||||
|
/** Buffer frequency/sample rate (query only). */
|
||||||
|
#define AL_FREQUENCY 0x2001
|
||||||
|
/** Buffer bits per sample (query only). */
|
||||||
|
#define AL_BITS 0x2002
|
||||||
|
/** Buffer channel count (query only). */
|
||||||
|
#define AL_CHANNELS 0x2003
|
||||||
|
/** Buffer data size in bytes (query only). */
|
||||||
|
#define AL_SIZE 0x2004
|
||||||
|
|
||||||
|
/* Buffer state. Not for public use. */
|
||||||
|
#define AL_UNUSED 0x2010
|
||||||
|
#define AL_PENDING 0x2011
|
||||||
|
#define AL_PROCESSED 0x2012
|
||||||
|
|
||||||
|
|
||||||
|
/** No error. */
|
||||||
|
#define AL_NO_ERROR 0
|
||||||
|
|
||||||
|
/** Invalid name (ID) passed to an AL call. */
|
||||||
|
#define AL_INVALID_NAME 0xA001
|
||||||
|
|
||||||
|
/** Invalid enumeration passed to AL call. */
|
||||||
|
#define AL_INVALID_ENUM 0xA002
|
||||||
|
|
||||||
|
/** Invalid value passed to AL call. */
|
||||||
|
#define AL_INVALID_VALUE 0xA003
|
||||||
|
|
||||||
|
/** Illegal AL call. */
|
||||||
|
#define AL_INVALID_OPERATION 0xA004
|
||||||
|
|
||||||
|
/** Not enough memory to execute the AL call. */
|
||||||
|
#define AL_OUT_OF_MEMORY 0xA005
|
||||||
|
|
||||||
|
|
||||||
|
/** Context string: Vendor name. */
|
||||||
|
#define AL_VENDOR 0xB001
|
||||||
|
/** Context string: Version. */
|
||||||
|
#define AL_VERSION 0xB002
|
||||||
|
/** Context string: Renderer name. */
|
||||||
|
#define AL_RENDERER 0xB003
|
||||||
|
/** Context string: Space-separated extension list. */
|
||||||
|
#define AL_EXTENSIONS 0xB004
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Doppler scale.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0 - ]
|
||||||
|
* Default: 1.0
|
||||||
|
*
|
||||||
|
* Scale for source and listener velocities.
|
||||||
|
*/
|
||||||
|
#define AL_DOPPLER_FACTOR 0xC000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Doppler velocity (deprecated).
|
||||||
|
*
|
||||||
|
* A multiplier applied to the Speed of Sound.
|
||||||
|
*/
|
||||||
|
#define AL_DOPPLER_VELOCITY 0xC001
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Speed of Sound, in units per second.
|
||||||
|
* Type: ALfloat
|
||||||
|
* Range: [0.0001 - ]
|
||||||
|
* Default: 343.3
|
||||||
|
*
|
||||||
|
* The speed at which sound waves are assumed to travel, when calculating the
|
||||||
|
* doppler effect from source and listener velocities.
|
||||||
|
*/
|
||||||
|
#define AL_SPEED_OF_SOUND 0xC003
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distance attenuation model.
|
||||||
|
* Type: ALenum
|
||||||
|
* Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
|
||||||
|
* AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
|
||||||
|
* AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
|
||||||
|
* Default: AL_INVERSE_DISTANCE_CLAMPED
|
||||||
|
*
|
||||||
|
* The model by which sources attenuate with distance.
|
||||||
|
*
|
||||||
|
* None - No distance attenuation.
|
||||||
|
* Inverse - Doubling the distance halves the source gain.
|
||||||
|
* Linear - Linear gain scaling between the reference and max distances.
|
||||||
|
* Exponent - Exponential gain dropoff.
|
||||||
|
*
|
||||||
|
* Clamped variations work like the non-clamped counterparts, except the
|
||||||
|
* distance calculated is clamped between the reference and max distances.
|
||||||
|
*/
|
||||||
|
#define AL_DISTANCE_MODEL 0xD000
|
||||||
|
|
||||||
|
/* Distance model values. */
|
||||||
|
#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
|
||||||
|
|
||||||
|
#ifndef AL_NO_PROTOTYPES
|
||||||
|
/* Renderer State management. */
|
||||||
|
AL_API void AL_APIENTRY alEnable(ALenum capability) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alDisable(ALenum capability) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Context state setting. */
|
||||||
|
AL_API void AL_APIENTRY alDopplerFactor(ALfloat value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Context state retrieval. */
|
||||||
|
AL_API const ALchar* AL_APIENTRY alGetString(ALenum param) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALint AL_APIENTRY alGetInteger(ALenum param) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtain the first error generated in the AL context since the last call to
|
||||||
|
* this function.
|
||||||
|
*/
|
||||||
|
AL_API ALenum AL_APIENTRY alGetError(void) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/** Query for the presence of an extension on the AL context. */
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname) AL_API_NOEXCEPT;
|
||||||
|
/**
|
||||||
|
* Retrieve the address of a function. The returned function may be context-
|
||||||
|
* specific.
|
||||||
|
*/
|
||||||
|
AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname) AL_API_NOEXCEPT;
|
||||||
|
/**
|
||||||
|
* Retrieve the value of an enum. The returned value may be context-specific.
|
||||||
|
*/
|
||||||
|
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
|
||||||
|
/* Set listener parameters. */
|
||||||
|
AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Get listener parameters. */
|
||||||
|
AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
|
||||||
|
/** Create source objects. */
|
||||||
|
AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources) AL_API_NOEXCEPT;
|
||||||
|
/** Delete source objects. */
|
||||||
|
AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT;
|
||||||
|
/** Verify an ID is for a valid source. */
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsSource(ALuint source) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Set source parameters. */
|
||||||
|
AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Get source parameters. */
|
||||||
|
AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
|
||||||
|
/** Play, restart, or resume a source, setting its state to AL_PLAYING. */
|
||||||
|
AL_API void AL_APIENTRY alSourcePlay(ALuint source) AL_API_NOEXCEPT;
|
||||||
|
/** Stop a source, setting its state to AL_STOPPED if playing or paused. */
|
||||||
|
AL_API void AL_APIENTRY alSourceStop(ALuint source) AL_API_NOEXCEPT;
|
||||||
|
/** Rewind a source, setting its state to AL_INITIAL. */
|
||||||
|
AL_API void AL_APIENTRY alSourceRewind(ALuint source) AL_API_NOEXCEPT;
|
||||||
|
/** Pause a source, setting its state to AL_PAUSED if playing. */
|
||||||
|
AL_API void AL_APIENTRY alSourcePause(ALuint source) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/** Play, restart, or resume a list of sources atomically. */
|
||||||
|
AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT;
|
||||||
|
/** Stop a list of sources atomically. */
|
||||||
|
AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT;
|
||||||
|
/** Rewind a list of sources atomically. */
|
||||||
|
AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT;
|
||||||
|
/** Pause a list of sources atomically. */
|
||||||
|
AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/** Queue buffers onto a source */
|
||||||
|
AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers) AL_API_NOEXCEPT;
|
||||||
|
/** Unqueue processed buffers from a source */
|
||||||
|
AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
|
||||||
|
/** Create buffer objects */
|
||||||
|
AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers) AL_API_NOEXCEPT;
|
||||||
|
/** Delete buffer objects */
|
||||||
|
AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers) AL_API_NOEXCEPT;
|
||||||
|
/** Verify an ID is a valid buffer (including the NULL buffer) */
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies data into the buffer, interpreting it using the specified format and
|
||||||
|
* samplerate.
|
||||||
|
*/
|
||||||
|
AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei samplerate) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Set buffer parameters. */
|
||||||
|
AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Get buffer parameters. */
|
||||||
|
AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values) AL_API_NOEXCEPT;
|
||||||
|
#endif /* AL_NO_PROTOTYPES */
|
||||||
|
|
||||||
|
/* Pointer-to-function types, useful for storing dynamically loaded AL entry
|
||||||
|
* points.
|
||||||
|
*/
|
||||||
|
typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability) AL_API_NOEXCEPT17;
|
||||||
|
typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALenum (AL_APIENTRY *LPALGETERROR)(void) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname) AL_API_NOEXCEPT17;
|
||||||
|
typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei samplerate) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel) AL_API_NOEXCEPT17;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
/* NOLINTEND */
|
||||||
|
|
||||||
|
#endif /* AL_AL_H */
|
307
src/audio/AL/alc.h
Normal file
307
src/audio/AL/alc.h
Normal file
|
@ -0,0 +1,307 @@
|
||||||
|
#ifndef AL_ALC_H
|
||||||
|
#define AL_ALC_H
|
||||||
|
|
||||||
|
/* NOLINTBEGIN */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
#ifdef _MSVC_LANG
|
||||||
|
#define ALC_CPLUSPLUS _MSVC_LANG
|
||||||
|
#else
|
||||||
|
#define ALC_CPLUSPLUS __cplusplus
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AL_DISABLE_NOEXCEPT
|
||||||
|
#if ALC_CPLUSPLUS >= 201103L
|
||||||
|
#define ALC_API_NOEXCEPT noexcept
|
||||||
|
#else
|
||||||
|
#define ALC_API_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
#if ALC_CPLUSPLUS >= 201703L
|
||||||
|
#define ALC_API_NOEXCEPT17 noexcept
|
||||||
|
#else
|
||||||
|
#define ALC_API_NOEXCEPT17
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else /* AL_DISABLE_NOEXCEPT */
|
||||||
|
|
||||||
|
#define ALC_API_NOEXCEPT
|
||||||
|
#define ALC_API_NOEXCEPT17
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef ALC_CPLUSPLUS
|
||||||
|
|
||||||
|
#else /* __cplusplus */
|
||||||
|
|
||||||
|
#define ALC_API_NOEXCEPT
|
||||||
|
#define ALC_API_NOEXCEPT17
|
||||||
|
#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
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define ALC_APIENTRY __cdecl
|
||||||
|
#else
|
||||||
|
#define ALC_APIENTRY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Deprecated macros. */
|
||||||
|
#define ALCAPI ALC_API
|
||||||
|
#define ALCAPIENTRY ALC_APIENTRY
|
||||||
|
#define ALC_INVALID 0
|
||||||
|
|
||||||
|
/** Supported ALC version? */
|
||||||
|
#define ALC_VERSION_0_1 1
|
||||||
|
|
||||||
|
/** Opaque device handle */
|
||||||
|
typedef struct ALCdevice ALCdevice;
|
||||||
|
/** Opaque context handle */
|
||||||
|
typedef struct ALCcontext ALCcontext;
|
||||||
|
|
||||||
|
/** 8-bit boolean */
|
||||||
|
typedef char ALCboolean;
|
||||||
|
|
||||||
|
/** character */
|
||||||
|
typedef char ALCchar;
|
||||||
|
|
||||||
|
/** signed 8-bit integer */
|
||||||
|
typedef signed char ALCbyte;
|
||||||
|
|
||||||
|
/** unsigned 8-bit integer */
|
||||||
|
typedef unsigned char ALCubyte;
|
||||||
|
|
||||||
|
/** signed 16-bit integer */
|
||||||
|
typedef short ALCshort;
|
||||||
|
|
||||||
|
/** unsigned 16-bit integer */
|
||||||
|
typedef unsigned short ALCushort;
|
||||||
|
|
||||||
|
/** signed 32-bit integer */
|
||||||
|
typedef int ALCint;
|
||||||
|
|
||||||
|
/** unsigned 32-bit integer */
|
||||||
|
typedef unsigned int ALCuint;
|
||||||
|
|
||||||
|
/** non-negative 32-bit integer size */
|
||||||
|
typedef int ALCsizei;
|
||||||
|
|
||||||
|
/** 32-bit enumeration value */
|
||||||
|
typedef int ALCenum;
|
||||||
|
|
||||||
|
/** 32-bit IEEE-754 floating-point */
|
||||||
|
typedef float ALCfloat;
|
||||||
|
|
||||||
|
/** 64-bit IEEE-754 floating-point */
|
||||||
|
typedef double ALCdouble;
|
||||||
|
|
||||||
|
/** void type (for opaque pointers only) */
|
||||||
|
typedef void ALCvoid;
|
||||||
|
|
||||||
|
|
||||||
|
/* Enumeration values begin at column 50. Do not use tabs. */
|
||||||
|
|
||||||
|
/** Boolean False. */
|
||||||
|
#define ALC_FALSE 0
|
||||||
|
|
||||||
|
/** Boolean True. */
|
||||||
|
#define ALC_TRUE 1
|
||||||
|
|
||||||
|
/** Context attribute: <int> Hz. */
|
||||||
|
#define ALC_FREQUENCY 0x1007
|
||||||
|
|
||||||
|
/** Context attribute: <int> Hz. */
|
||||||
|
#define ALC_REFRESH 0x1008
|
||||||
|
|
||||||
|
/** Context attribute: AL_TRUE or AL_FALSE synchronous context? */
|
||||||
|
#define ALC_SYNC 0x1009
|
||||||
|
|
||||||
|
/** Context attribute: <int> requested Mono (3D) Sources. */
|
||||||
|
#define ALC_MONO_SOURCES 0x1010
|
||||||
|
|
||||||
|
/** Context attribute: <int> requested Stereo Sources. */
|
||||||
|
#define ALC_STEREO_SOURCES 0x1011
|
||||||
|
|
||||||
|
/** No error. */
|
||||||
|
#define ALC_NO_ERROR 0
|
||||||
|
|
||||||
|
/** Invalid device handle. */
|
||||||
|
#define ALC_INVALID_DEVICE 0xA001
|
||||||
|
|
||||||
|
/** Invalid context handle. */
|
||||||
|
#define ALC_INVALID_CONTEXT 0xA002
|
||||||
|
|
||||||
|
/** Invalid enumeration passed to an ALC call. */
|
||||||
|
#define ALC_INVALID_ENUM 0xA003
|
||||||
|
|
||||||
|
/** Invalid value passed to an ALC call. */
|
||||||
|
#define ALC_INVALID_VALUE 0xA004
|
||||||
|
|
||||||
|
/** Out of memory. */
|
||||||
|
#define ALC_OUT_OF_MEMORY 0xA005
|
||||||
|
|
||||||
|
|
||||||
|
/** Runtime ALC major version. */
|
||||||
|
#define ALC_MAJOR_VERSION 0x1000
|
||||||
|
/** Runtime ALC minor version. */
|
||||||
|
#define ALC_MINOR_VERSION 0x1001
|
||||||
|
|
||||||
|
/** Context attribute list size. */
|
||||||
|
#define ALC_ATTRIBUTES_SIZE 0x1002
|
||||||
|
/** Context attribute list properties. */
|
||||||
|
#define ALC_ALL_ATTRIBUTES 0x1003
|
||||||
|
|
||||||
|
/** String for the default device specifier. */
|
||||||
|
#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004
|
||||||
|
/**
|
||||||
|
* Device specifier string.
|
||||||
|
*
|
||||||
|
* If device handle is NULL, it is instead a null-character separated list of
|
||||||
|
* strings of known device specifiers (list ends with an empty string).
|
||||||
|
*/
|
||||||
|
#define ALC_DEVICE_SPECIFIER 0x1005
|
||||||
|
/** String for space-separated list of ALC extensions. */
|
||||||
|
#define ALC_EXTENSIONS 0x1006
|
||||||
|
|
||||||
|
|
||||||
|
/** Capture extension */
|
||||||
|
#define ALC_EXT_CAPTURE 1
|
||||||
|
/**
|
||||||
|
* Capture device specifier string.
|
||||||
|
*
|
||||||
|
* If device handle is NULL, it is instead a null-character separated list of
|
||||||
|
* strings of known capture device specifiers (list ends with an empty string).
|
||||||
|
*/
|
||||||
|
#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310
|
||||||
|
/** String for the default capture device specifier. */
|
||||||
|
#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311
|
||||||
|
/** Number of sample frames available for capture. */
|
||||||
|
#define ALC_CAPTURE_SAMPLES 0x312
|
||||||
|
|
||||||
|
|
||||||
|
/** Enumerate All extension */
|
||||||
|
#define ALC_ENUMERATE_ALL_EXT 1
|
||||||
|
/** String for the default extended device specifier. */
|
||||||
|
#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012
|
||||||
|
/**
|
||||||
|
* Device's extended specifier string.
|
||||||
|
*
|
||||||
|
* If device handle is NULL, it is instead a null-character separated list of
|
||||||
|
* strings of known extended device specifiers (list ends with an empty string).
|
||||||
|
*/
|
||||||
|
#define ALC_ALL_DEVICES_SPECIFIER 0x1013
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ALC_NO_PROTOTYPES
|
||||||
|
/* Context management. */
|
||||||
|
|
||||||
|
/** Create and attach a context to the given device. */
|
||||||
|
ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint *attrlist) ALC_API_NOEXCEPT;
|
||||||
|
/**
|
||||||
|
* Makes the given context the active process-wide context. Passing NULL clears
|
||||||
|
* the active context.
|
||||||
|
*/
|
||||||
|
ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context) ALC_API_NOEXCEPT;
|
||||||
|
/** Resumes processing updates for the given context. */
|
||||||
|
ALC_API void ALC_APIENTRY alcProcessContext(ALCcontext *context) ALC_API_NOEXCEPT;
|
||||||
|
/** Suspends updates for the given context. */
|
||||||
|
ALC_API void ALC_APIENTRY alcSuspendContext(ALCcontext *context) ALC_API_NOEXCEPT;
|
||||||
|
/** Remove a context from its device and destroys it. */
|
||||||
|
ALC_API void ALC_APIENTRY alcDestroyContext(ALCcontext *context) ALC_API_NOEXCEPT;
|
||||||
|
/** Returns the currently active context. */
|
||||||
|
ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void) ALC_API_NOEXCEPT;
|
||||||
|
/** Returns the device that a particular context is attached to. */
|
||||||
|
ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *context) ALC_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Device management. */
|
||||||
|
|
||||||
|
/** Opens the named playback device. */
|
||||||
|
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename) ALC_API_NOEXCEPT;
|
||||||
|
/** Closes the given playback device. */
|
||||||
|
ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device) ALC_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Error support. */
|
||||||
|
|
||||||
|
/** Obtain the most recent Device error. */
|
||||||
|
ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device) ALC_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Extension support. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query for the presence of an extension on the device. Pass a NULL device to
|
||||||
|
* query a device-inspecific extension.
|
||||||
|
*/
|
||||||
|
ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname) ALC_API_NOEXCEPT;
|
||||||
|
/**
|
||||||
|
* Retrieve the address of a function. Given a non-NULL device, the returned
|
||||||
|
* function may be device-specific.
|
||||||
|
*/
|
||||||
|
ALC_API ALCvoid* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname) ALC_API_NOEXCEPT;
|
||||||
|
/**
|
||||||
|
* Retrieve the value of an enum. Given a non-NULL device, the returned value
|
||||||
|
* may be device-specific.
|
||||||
|
*/
|
||||||
|
ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname) ALC_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Query functions. */
|
||||||
|
|
||||||
|
/** Returns information about the device, and error strings. */
|
||||||
|
ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param) ALC_API_NOEXCEPT;
|
||||||
|
/** Returns information about the device and the version of OpenAL. */
|
||||||
|
ALC_API void ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values) ALC_API_NOEXCEPT;
|
||||||
|
|
||||||
|
/* Capture functions. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the named capture device with the given frequency, format, and buffer
|
||||||
|
* size.
|
||||||
|
*/
|
||||||
|
ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize) ALC_API_NOEXCEPT;
|
||||||
|
/** Closes the given capture device. */
|
||||||
|
ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device) ALC_API_NOEXCEPT;
|
||||||
|
/** Starts capturing samples into the device buffer. */
|
||||||
|
ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device) ALC_API_NOEXCEPT;
|
||||||
|
/** Stops capturing samples. Samples in the device buffer remain available. */
|
||||||
|
ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device) ALC_API_NOEXCEPT;
|
||||||
|
/** Reads samples from the device buffer. */
|
||||||
|
ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples) ALC_API_NOEXCEPT;
|
||||||
|
#endif /* ALC_NO_PROTOTYPES */
|
||||||
|
|
||||||
|
/* Pointer-to-function types, useful for storing dynamically loaded ALC entry
|
||||||
|
* points.
|
||||||
|
*/
|
||||||
|
typedef ALCcontext* (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCcontext* (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCdevice* (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCdevice* (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCvoid* (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname) ALC_API_NOEXCEPT17;
|
||||||
|
typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCdevice* (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize) ALC_API_NOEXCEPT17;
|
||||||
|
typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device) ALC_API_NOEXCEPT17;
|
||||||
|
typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples) ALC_API_NOEXCEPT17;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
/* NOLINTEND */
|
||||||
|
|
||||||
|
#endif /* AL_ALC_H */
|
1092
src/audio/AL/alext.h
Normal file
1092
src/audio/AL/alext.h
Normal file
File diff suppressed because it is too large
Load diff
3
src/audio/AL/efx-creative.h
Normal file
3
src/audio/AL/efx-creative.h
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/* The tokens that would be defined here are already defined in efx.h. This
|
||||||
|
* empty file is here to provide compatibility with Windows-based projects
|
||||||
|
* that would include it. */
|
404
src/audio/AL/efx-presets.h
Normal file
404
src/audio/AL/efx-presets.h
Normal file
|
@ -0,0 +1,404 @@
|
||||||
|
/* Reverb presets for EFX */
|
||||||
|
|
||||||
|
#ifndef EFX_PRESETS_H
|
||||||
|
#define EFX_PRESETS_H
|
||||||
|
/* NOLINTBEGIN */
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
/* Default Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_GENERIC \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PADDEDCELL \
|
||||||
|
{ 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ROOM \
|
||||||
|
{ 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_BATHROOM \
|
||||||
|
{ 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_LIVINGROOM \
|
||||||
|
{ 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_STONEROOM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_AUDITORIUM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CONCERTHALL \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CAVE \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ARENA \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_HANGAR \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CARPETEDHALLWAY \
|
||||||
|
{ 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_HALLWAY \
|
||||||
|
{ 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_STONECORRIDOR \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ALLEY \
|
||||||
|
{ 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FOREST \
|
||||||
|
{ 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY \
|
||||||
|
{ 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_MOUNTAINS \
|
||||||
|
{ 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_QUARRY \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PLAIN \
|
||||||
|
{ 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PARKINGLOT \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SEWERPIPE \
|
||||||
|
{ 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_UNDERWATER \
|
||||||
|
{ 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRUGGED \
|
||||||
|
{ 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DIZZY \
|
||||||
|
{ 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PSYCHOTIC \
|
||||||
|
{ 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
/* Castle Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \
|
||||||
|
{ 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \
|
||||||
|
{ 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \
|
||||||
|
{ 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \
|
||||||
|
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \
|
||||||
|
{ 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_HALL \
|
||||||
|
{ 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \
|
||||||
|
{ 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_COURTYARD \
|
||||||
|
{ 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CASTLE_ALCOVE \
|
||||||
|
{ 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Factory Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \
|
||||||
|
{ 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \
|
||||||
|
{ 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \
|
||||||
|
{ 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \
|
||||||
|
{ 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \
|
||||||
|
{ 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_HALL \
|
||||||
|
{ 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \
|
||||||
|
{ 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_COURTYARD \
|
||||||
|
{ 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_FACTORY_ALCOVE \
|
||||||
|
{ 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Ice Palace Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \
|
||||||
|
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \
|
||||||
|
{ 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \
|
||||||
|
{ 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \
|
||||||
|
{ 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \
|
||||||
|
{ 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_HALL \
|
||||||
|
{ 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \
|
||||||
|
{ 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \
|
||||||
|
{ 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \
|
||||||
|
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Space Station Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \
|
||||||
|
{ 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \
|
||||||
|
{ 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \
|
||||||
|
{ 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \
|
||||||
|
{ 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \
|
||||||
|
{ 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_HALL \
|
||||||
|
{ 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \
|
||||||
|
{ 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \
|
||||||
|
{ 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Wooden Galleon Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_HALL \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_COURTYARD \
|
||||||
|
{ 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_WOODEN_ALCOVE \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Sports Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \
|
||||||
|
{ 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \
|
||||||
|
{ 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \
|
||||||
|
{ 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \
|
||||||
|
{ 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \
|
||||||
|
{ 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Prefab Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \
|
||||||
|
{ 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \
|
||||||
|
{ 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \
|
||||||
|
{ 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \
|
||||||
|
{ 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PREFAB_CARAVAN \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
/* Dome and Pipe Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DOME_TOMB \
|
||||||
|
{ 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PIPE_SMALL \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DOME_SAINTPAULS \
|
||||||
|
{ 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PIPE_LONGTHIN \
|
||||||
|
{ 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PIPE_LARGE \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_PIPE_RESONANT \
|
||||||
|
{ 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
/* Outdoors Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \
|
||||||
|
{ 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \
|
||||||
|
{ 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \
|
||||||
|
{ 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_OUTDOORS_CREEK \
|
||||||
|
{ 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \
|
||||||
|
{ 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
/* Mood Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_MOOD_HEAVEN \
|
||||||
|
{ 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_MOOD_HELL \
|
||||||
|
{ 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_MOOD_MEMORY \
|
||||||
|
{ 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
/* Driving Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \
|
||||||
|
{ 1.0000f, 0.0000f, 0.3162f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \
|
||||||
|
{ 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \
|
||||||
|
{ 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \
|
||||||
|
{ 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \
|
||||||
|
{ 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \
|
||||||
|
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DRIVING_TUNNEL \
|
||||||
|
{ 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* City Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY_STREETS \
|
||||||
|
{ 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY_SUBWAY \
|
||||||
|
{ 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY_MUSEUM \
|
||||||
|
{ 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY_LIBRARY \
|
||||||
|
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY_UNDERPASS \
|
||||||
|
{ 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CITY_ABANDONED \
|
||||||
|
{ 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
/* Misc. Presets */
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_DUSTYROOM \
|
||||||
|
{ 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_CHAPEL \
|
||||||
|
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
|
||||||
|
|
||||||
|
#define EFX_REVERB_PRESET_SMALLWATERROOM \
|
||||||
|
{ 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
|
||||||
|
|
||||||
|
/* NOLINTEND */
|
||||||
|
#endif /* EFX_PRESETS_H */
|
764
src/audio/AL/efx.h
Normal file
764
src/audio/AL/efx.h
Normal file
|
@ -0,0 +1,764 @@
|
||||||
|
#ifndef AL_EFX_H
|
||||||
|
#define AL_EFX_H
|
||||||
|
|
||||||
|
/* NOLINTBEGIN */
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
|
#include "alc.h"
|
||||||
|
#include "al.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#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 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 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*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
|
||||||
|
/* Filter object function types. */
|
||||||
|
typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
|
||||||
|
/* Auxiliary Effect Slot object function types. */
|
||||||
|
typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*) AL_API_NOEXCEPT17;
|
||||||
|
|
||||||
|
#ifdef AL_ALEXT_PROTOTYPES
|
||||||
|
AL_API void AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
AL_API void AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues) AL_API_NOEXCEPT;
|
||||||
|
|
||||||
|
AL_API void AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots) AL_API_NOEXCEPT;
|
||||||
|
AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue) AL_API_NOEXCEPT;
|
||||||
|
AL_API void AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues) AL_API_NOEXCEPT;
|
||||||
|
#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)
|
||||||
|
|
||||||
|
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (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_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)
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
/* Chorus effect */
|
||||||
|
#define AL_CHORUS_WAVEFORM_SINUSOID (0)
|
||||||
|
#define AL_CHORUS_WAVEFORM_TRIANGLE (1)
|
||||||
|
|
||||||
|
#define AL_CHORUS_MIN_WAVEFORM (0)
|
||||||
|
#define AL_CHORUS_MAX_WAVEFORM (1)
|
||||||
|
#define AL_CHORUS_DEFAULT_WAVEFORM (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)
|
||||||
|
|
||||||
|
/* Distortion effect */
|
||||||
|
#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)
|
||||||
|
|
||||||
|
/* 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)
|
||||||
|
|
||||||
|
#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 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 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
|
||||||
|
/* NOLINTEND */
|
||||||
|
|
||||||
|
#endif /* AL_EFX_H */
|
|
@ -34,6 +34,15 @@ if(ENABLE_CUBEB)
|
||||||
#add_compile_definitions(HAS_CUBEB)
|
#add_compile_definitions(HAS_CUBEB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
IF(ENABLE_OPENAL)
|
||||||
|
target_sources(CemuAudio PRIVATE
|
||||||
|
OpenALAPI.cpp
|
||||||
|
OpenALAPI.h
|
||||||
|
OpenALLoader.cpp
|
||||||
|
OpenALLoader.h
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(CemuAudio PUBLIC "../")
|
target_include_directories(CemuAudio PUBLIC "../")
|
||||||
|
|
||||||
target_link_libraries(CemuAudio PRIVATE
|
target_link_libraries(CemuAudio PRIVATE
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
#if HAS_CUBEB
|
#if HAS_CUBEB
|
||||||
#include "CubebAPI.h"
|
#include "CubebAPI.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if HAS_OPENAL
|
||||||
|
#include "OpenALAPI.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
std::shared_mutex g_audioMutex;
|
std::shared_mutex g_audioMutex;
|
||||||
AudioAPIPtr g_tvAudio;
|
AudioAPIPtr g_tvAudio;
|
||||||
|
@ -36,6 +39,7 @@ void IAudioAPI::PrintLogging()
|
||||||
}
|
}
|
||||||
|
|
||||||
cemuLog_log(LogType::Force, "Cubeb: {}", s_availableApis[Cubeb] ? "available" : "not supported");
|
cemuLog_log(LogType::Force, "Cubeb: {}", s_availableApis[Cubeb] ? "available" : "not supported");
|
||||||
|
cemuLog_log(LogType::Force, "OpenAL: {}", s_availableApis[OpenAL] ? "available" : "not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
void IAudioAPI::InitWFX(sint32 samplerate, sint32 channels, sint32 bits_per_sample)
|
void IAudioAPI::InitWFX(sint32 samplerate, sint32 channels, sint32 bits_per_sample)
|
||||||
|
@ -86,6 +90,9 @@ void IAudioAPI::InitializeStatic()
|
||||||
#if HAS_CUBEB
|
#if HAS_CUBEB
|
||||||
s_availableApis[Cubeb] = CubebAPI::InitializeStatic();
|
s_availableApis[Cubeb] = CubebAPI::InitializeStatic();
|
||||||
#endif
|
#endif
|
||||||
|
#if HAS_OPENAL
|
||||||
|
s_availableApis[OpenAL] = OpenALAPI::InitializeStatic();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IAudioAPI::IsAudioAPIAvailable(AudioAPI api)
|
bool IAudioAPI::IsAudioAPIAvailable(AudioAPI api)
|
||||||
|
@ -162,6 +169,14 @@ AudioAPIPtr IAudioAPI::CreateDevice(AudioAPI api, const DeviceDescriptionPtr& de
|
||||||
const auto tmp = std::dynamic_pointer_cast<CubebAPI::CubebDeviceDescription>(device);
|
const auto tmp = std::dynamic_pointer_cast<CubebAPI::CubebDeviceDescription>(device);
|
||||||
return std::make_unique<CubebAPI>(tmp->GetDeviceId(), samplerate, channels, samples_per_block, bits_per_sample);
|
return std::make_unique<CubebAPI>(tmp->GetDeviceId(), samplerate, channels, samples_per_block, bits_per_sample);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if HAS_OPENAL
|
||||||
|
case OpenAL:
|
||||||
|
{
|
||||||
|
const auto tmp = std::dynamic_pointer_cast<OpenALAPI::OpenALDeviceDescription>(device);
|
||||||
|
return std::make_unique<OpenALAPI>(tmp->GetIdentifier(), samplerate, channels, samples_per_block, bits_per_sample);
|
||||||
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
throw std::runtime_error(fmt::format("invalid audio api: {}", api));
|
throw std::runtime_error(fmt::format("invalid audio api: {}", api));
|
||||||
|
@ -194,6 +209,12 @@ std::vector<IAudioAPI::DeviceDescriptionPtr> IAudioAPI::GetDevices(AudioAPI api)
|
||||||
{
|
{
|
||||||
return CubebAPI::GetDevices();
|
return CubebAPI::GetDevices();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if HAS_OPENAL
|
||||||
|
case OpenAL:
|
||||||
|
{
|
||||||
|
return OpenALAPI::GetDevices();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
throw std::runtime_error(fmt::format("invalid audio api: {}", api));
|
throw std::runtime_error(fmt::format("invalid audio api: {}", api));
|
||||||
|
|
|
@ -36,6 +36,7 @@ public:
|
||||||
XAudio27,
|
XAudio27,
|
||||||
XAudio2,
|
XAudio2,
|
||||||
Cubeb,
|
Cubeb,
|
||||||
|
OpenAL,
|
||||||
|
|
||||||
AudioAPIEnd,
|
AudioAPIEnd,
|
||||||
};
|
};
|
||||||
|
|
384
src/audio/OpenALAPI.cpp
Normal file
384
src/audio/OpenALAPI.cpp
Normal file
|
@ -0,0 +1,384 @@
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#include <boost/thread.hpp>
|
||||||
|
|
||||||
|
#include "AL/alc.h"
|
||||||
|
#include "AL/al.h"
|
||||||
|
#include "AL/alext.h"
|
||||||
|
|
||||||
|
#include "OpenALAPI.h"
|
||||||
|
#include "OpenALLoader.h"
|
||||||
|
|
||||||
|
// While OpenAL should support multi-threading, some implementations have shown random issues when multiple threads
|
||||||
|
// are involved, even when calls are properly guarded with a mutex. So, let's run everything in a single thread
|
||||||
|
// through a thread pool instead.
|
||||||
|
static boost::asio::thread_pool s_openal_pool(1);
|
||||||
|
static constexpr uint32_t TARGET_NUM_BLOCKS = 2;
|
||||||
|
|
||||||
|
static std::string oalErrorToString(ALenum error)
|
||||||
|
{
|
||||||
|
switch (error)
|
||||||
|
{
|
||||||
|
case AL_INVALID_NAME:
|
||||||
|
return "AL_INVALID_NAME";
|
||||||
|
case AL_INVALID_ENUM:
|
||||||
|
return "AL_INVALID_ENUM";
|
||||||
|
case AL_INVALID_VALUE:
|
||||||
|
return "AL_INVALID_VALUE";
|
||||||
|
case AL_INVALID_OPERATION:
|
||||||
|
return "AL_INVALID_OPERATION";
|
||||||
|
case AL_OUT_OF_MEMORY:
|
||||||
|
return "AL_OUT_OF_MEMORY";
|
||||||
|
default:
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << "Unknown error: " << error;
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void oalLogAndThrow(std::string msg) {
|
||||||
|
cemuLog_log(LogType::SoundAPI, msg);
|
||||||
|
throw std::runtime_error(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenALAPI::OpenALAPI(std::wstring device_name, uint32 samplerate, uint32 channels, uint32 samples_per_block, uint32 bits_per_sample)
|
||||||
|
: IAudioAPI(samplerate, channels, samples_per_block, bits_per_sample),
|
||||||
|
m_format(AL_NONE),
|
||||||
|
m_openal(LoadOpenAL()),
|
||||||
|
m_context(nullptr),
|
||||||
|
m_device(nullptr),
|
||||||
|
m_source(0)
|
||||||
|
{
|
||||||
|
boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
ALenum error;
|
||||||
|
m_device = m_openal->alcOpenDevice(boost::nowide::narrow(device_name).c_str());
|
||||||
|
if ((error = m_openal->alcGetError(nullptr)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't open device: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_context = m_openal->alcCreateContext(m_device, nullptr);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't create context: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_openal->alcMakeContextCurrent(m_context);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't make context current: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_openal->alGenSources(1, &m_source);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't create OpenAL source: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (channels)
|
||||||
|
{
|
||||||
|
case 8:
|
||||||
|
m_format = AL_FORMAT_71CHN16;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
m_format = AL_FORMAT_51CHN16;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
m_format = AL_FORMAT_QUAD16;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
m_format = AL_FORMAT_STEREO16;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
m_format = AL_FORMAT_MONO16;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenALAPI::~OpenALAPI()
|
||||||
|
{
|
||||||
|
if (m_device)
|
||||||
|
{
|
||||||
|
boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
ALenum error;
|
||||||
|
|
||||||
|
m_openal->alcMakeContextCurrent(m_context);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
cemuLog_log(LogType::Force, "can't make context current in destructor: " + oalErrorToString(error));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
StopUnsafe();
|
||||||
|
m_openal->alDeleteSources(1, &m_source);
|
||||||
|
m_openal->alGetError();
|
||||||
|
m_openal->alcMakeContextCurrent(nullptr);
|
||||||
|
m_openal->alcDestroyContext(m_context);
|
||||||
|
m_openal->alcCloseDevice(m_device);
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OpenALAPI::NeedAdditionalBlocks() const
|
||||||
|
{
|
||||||
|
return boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
ALenum error = AL_NO_ERROR;
|
||||||
|
m_openal->alcMakeContextCurrent(m_context);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't make context current: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
ALint num_processed;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_BUFFERS_PROCESSED, &num_processed);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't get number of processed buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
ALint num_queued;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_BUFFERS_QUEUED, &num_queued);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't check number of queued buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method is const, we cannot modify the driver state
|
||||||
|
return (num_queued - num_processed) < GetAudioDelay();
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OpenALAPI::FeedBlock(sint16* data)
|
||||||
|
{
|
||||||
|
return boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
ALenum error = AL_NO_ERROR;
|
||||||
|
m_openal->alcMakeContextCurrent(m_context);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't make context current: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
ALint processed;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_BUFFERS_PROCESSED, &processed);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't get number of processed buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (processed > 0)
|
||||||
|
{
|
||||||
|
std::vector<uint32_t> buffers(processed);
|
||||||
|
m_openal->alSourceUnqueueBuffers(m_source, buffers.size(), buffers.data());
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("unable to unqueue buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_buffers.insert(m_buffers.end(), buffers.begin(), buffers.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
ALint num_queued;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_BUFFERS_QUEUED, &num_queued);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't check number of queued buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Slight pitch increase (up to 5%) to consume blocks faster and restore target latency
|
||||||
|
float_t pitch = 1.0f;
|
||||||
|
float_t max_skew = 0.05f;
|
||||||
|
if (num_queued > kBlockCount)
|
||||||
|
{
|
||||||
|
cemuLog_logDebug(LogType::Force, "resetting OpenAL due to too many queued buffers");
|
||||||
|
StopUnsafe();
|
||||||
|
Play();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (num_queued > TARGET_NUM_BLOCKS)
|
||||||
|
{
|
||||||
|
pitch = 1.0f + (max_skew * static_cast<float>(num_queued) / kBlockCount);
|
||||||
|
}
|
||||||
|
m_openal->alSourcef(m_source, AL_PITCH, pitch);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't change pitch: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
ALuint buffer = 0;
|
||||||
|
if (m_buffers.size() == 0)
|
||||||
|
{
|
||||||
|
m_openal->alGenBuffers(1, &buffer);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't create buffer: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer = m_buffers.front();
|
||||||
|
m_buffers.pop_front();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_openal->alBufferData(buffer, m_format, data, m_bytesPerBlock, m_samplerate);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't buffer data: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_openal->alSourceQueueBuffers(m_source, 1, &buffer);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't queue buffer: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_playing)
|
||||||
|
{
|
||||||
|
ALint state;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_SOURCE_STATE, &state);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't get source state buffer: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state != AL_PLAYING)
|
||||||
|
{
|
||||||
|
m_openal->alSourcePlay(m_source);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't play source: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OpenALAPI::Play()
|
||||||
|
{
|
||||||
|
m_playing = true;
|
||||||
|
return m_playing;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OpenALAPI::Stop()
|
||||||
|
{
|
||||||
|
return boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
return StopUnsafe();
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OpenALAPI::StopUnsafe()
|
||||||
|
{
|
||||||
|
ALenum error = AL_NO_ERROR;
|
||||||
|
m_openal->alcMakeContextCurrent(m_context);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't make context current: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_openal->alSourceStop(m_source);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't stop source: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
ALint processed;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_BUFFERS_PROCESSED, &processed);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't get number of processed buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (processed > 0)
|
||||||
|
{
|
||||||
|
std::vector<ALuint> buffers(processed);
|
||||||
|
m_openal->alSourceUnqueueBuffers(m_source, buffers.size(), buffers.data());
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("unable to unqueue buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
buffers.insert(buffers.end(), m_buffers.begin(), m_buffers.end());
|
||||||
|
m_buffers.clear();
|
||||||
|
|
||||||
|
m_openal->alDeleteBuffers(buffers.size(), buffers.data());
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("unable to delete buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ALint queued;
|
||||||
|
m_openal->alGetSourcei(m_source, AL_BUFFERS_QUEUED, &queued);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't get number of queued buffers: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (queued > 0)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("queued should be 0 but it is: " + std::to_string(queued));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_playing = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OpenALAPI::SetVolume(sint32 volume)
|
||||||
|
{
|
||||||
|
boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
ALenum error = AL_NO_ERROR;
|
||||||
|
m_openal->alcMakeContextCurrent(m_context);
|
||||||
|
if ((error = m_openal->alcGetError(m_device)) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("can't make context current: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto gain = static_cast<float>(volume) / 100;
|
||||||
|
m_openal->alSourcef(m_source, AL_GAIN, gain);
|
||||||
|
if ((error = m_openal->alGetError()) != AL_NO_ERROR)
|
||||||
|
{
|
||||||
|
oalLogAndThrow("unable to change source gain: " + oalErrorToString(error));
|
||||||
|
}
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<IAudioAPI::DeviceDescriptionPtr> OpenALAPI::GetDevices()
|
||||||
|
{
|
||||||
|
return boost::asio::post(s_openal_pool, boost::asio::use_future([&]() {
|
||||||
|
auto openal = LoadOpenAL();
|
||||||
|
std::vector<DeviceDescriptionPtr> result;
|
||||||
|
if (openal->alcIsExtensionPresent(nullptr, "ALC_ENUMERATE_ALL_EXT"))
|
||||||
|
{
|
||||||
|
auto device_names = openal->alcGetString(nullptr, ALC_ALL_DEVICES_SPECIFIER);
|
||||||
|
while (device_names && *device_names)
|
||||||
|
{
|
||||||
|
result.emplace_back(std::make_shared<OpenALDeviceDescription>(boost::nowide::widen(device_names)));
|
||||||
|
device_names += strlen(device_names) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (openal->alcIsExtensionPresent(nullptr, "ALC_ENUMERATION_EXT"))
|
||||||
|
{
|
||||||
|
auto device_names = openal->alcGetString(nullptr, ALC_DEVICE_SPECIFIER);
|
||||||
|
while (device_names && *device_names)
|
||||||
|
{
|
||||||
|
result.emplace_back(std::make_shared<OpenALDeviceDescription>(boost::nowide::widen(device_names)));
|
||||||
|
device_names += strlen(device_names) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
})).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OpenALAPI::InitializeStatic()
|
||||||
|
{
|
||||||
|
auto openal = LoadOpenAL();
|
||||||
|
return openal != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OpenALAPI::Destroy()
|
||||||
|
{
|
||||||
|
UnloadOpenAL();
|
||||||
|
}
|
55
src/audio/OpenALAPI.h
Normal file
55
src/audio/OpenALAPI.h
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
|
#include "IAudioAPI.h"
|
||||||
|
#include "OpenALLoader.h"
|
||||||
|
|
||||||
|
class OpenALAPI : public IAudioAPI
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
class OpenALDeviceDescription : public DeviceDescription
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
OpenALDeviceDescription(const std::wstring& device_name)
|
||||||
|
: DeviceDescription(device_name) {}
|
||||||
|
|
||||||
|
std::wstring GetIdentifier() const override
|
||||||
|
{
|
||||||
|
return GetName();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
using OpenALDeviceDescriptionPtr = std::shared_ptr<OpenALDeviceDescription>;
|
||||||
|
|
||||||
|
OpenALAPI(std::wstring device_name, uint32 samplerate, uint32 channels, uint32 samples_per_block, uint32 bits_per_sample);
|
||||||
|
~OpenALAPI();
|
||||||
|
|
||||||
|
AudioAPI GetType() const override
|
||||||
|
{
|
||||||
|
return OpenAL;
|
||||||
|
}
|
||||||
|
bool NeedAdditionalBlocks() const override;
|
||||||
|
bool FeedBlock(sint16* data) override;
|
||||||
|
bool Play() override;
|
||||||
|
bool Stop() override;
|
||||||
|
void SetVolume(sint32 volume) override;
|
||||||
|
|
||||||
|
static std::vector<DeviceDescriptionPtr> GetDevices();
|
||||||
|
|
||||||
|
static bool InitializeStatic();
|
||||||
|
static void Destroy();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool StopUnsafe();
|
||||||
|
|
||||||
|
uint32_t m_source;
|
||||||
|
std::deque<uint32_t> m_buffers;
|
||||||
|
uint32_t m_format;
|
||||||
|
|
||||||
|
ALCdevice* m_device;
|
||||||
|
ALCcontext* m_context;
|
||||||
|
OpenALLib* m_openal;
|
||||||
|
};
|
73
src/audio/OpenALLoader.cpp
Normal file
73
src/audio/OpenALLoader.cpp
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#include <boost/dll.hpp>
|
||||||
|
|
||||||
|
#include "OpenALLoader.h"
|
||||||
|
|
||||||
|
static boost::dll::shared_library s_openal_lib;
|
||||||
|
static OpenALLib* s_loaded_lib;
|
||||||
|
|
||||||
|
#if BOOST_OS_WINDOWS
|
||||||
|
static std::string s_openal_libname = "OpenAL32";
|
||||||
|
#else
|
||||||
|
static std::string s_openal_libname = "openal";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
OpenALLib* LoadOpenAL()
|
||||||
|
{
|
||||||
|
// TODO: mutex?
|
||||||
|
if (s_loaded_lib)
|
||||||
|
{
|
||||||
|
return s_loaded_lib;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s_openal_lib.is_loaded())
|
||||||
|
{
|
||||||
|
boost::system::error_code ec;
|
||||||
|
s_openal_lib.load(s_openal_libname, boost::dll::load_mode::search_system_folders | boost::dll::load_mode::append_decorations, ec);
|
||||||
|
if (ec)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << "unable to load OpenAL (\"" << s_openal_libname << "\") library due to: \"" << ec.what() << "\"";
|
||||||
|
cemuLog_log(LogType::Force, ss.str());
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenALLib* lib = new OpenALLib;
|
||||||
|
lib->alBufferData = s_openal_lib.get<decltype(alBufferData)>("alBufferData");
|
||||||
|
lib->alcCloseDevice = s_openal_lib.get<decltype(alcCloseDevice)>("alcCloseDevice");
|
||||||
|
lib->alcCreateContext = s_openal_lib.get<decltype(alcCreateContext)>("alcCreateContext");
|
||||||
|
lib->alcDestroyContext = s_openal_lib.get<decltype(alcDestroyContext)>("alcDestroyContext");
|
||||||
|
lib->alcGetContextsDevice = s_openal_lib.get<decltype(alcGetContextsDevice)>("alcGetContextsDevice");
|
||||||
|
lib->alcGetCurrentContext = s_openal_lib.get<decltype(alcGetCurrentContext)>("alcGetCurrentContext");
|
||||||
|
lib->alcGetString = s_openal_lib.get<decltype(alcGetString)>("alcGetString");
|
||||||
|
lib->alcIsExtensionPresent = s_openal_lib.get<decltype(alcIsExtensionPresent)>("alcIsExtensionPresent");
|
||||||
|
lib->alcMakeContextCurrent = s_openal_lib.get<decltype(alcMakeContextCurrent)>("alcMakeContextCurrent");
|
||||||
|
lib->alcOpenDevice = s_openal_lib.get<decltype(alcOpenDevice)>("alcOpenDevice");
|
||||||
|
lib->alcGetError = s_openal_lib.get<decltype(alcGetError)>("alcGetError");
|
||||||
|
lib->alDeleteBuffers = s_openal_lib.get<decltype(alDeleteBuffers)>("alDeleteBuffers");
|
||||||
|
lib->alDeleteSources = s_openal_lib.get<decltype(alDeleteSources)>("alDeleteSources");
|
||||||
|
lib->alGenBuffers = s_openal_lib.get<decltype(alGenBuffers)>("alGenBuffers");
|
||||||
|
lib->alGenSources = s_openal_lib.get<decltype(alGenSources)>("alGenSources");
|
||||||
|
lib->alGetError = s_openal_lib.get<decltype(alGetError)>("alGetError");
|
||||||
|
lib->alGetSourcei = s_openal_lib.get<decltype(alGetSourcei)>("alGetSourcei");
|
||||||
|
lib->alGetString = s_openal_lib.get<decltype(alGetString)>("alGetString");
|
||||||
|
lib->alIsExtensionPresent = s_openal_lib.get<decltype(alIsExtensionPresent)>("alIsExtensionPresent");
|
||||||
|
lib->alSourcef = s_openal_lib.get<decltype(alSourcef)>("alSourcef");
|
||||||
|
lib->alSourcei = s_openal_lib.get<decltype(alSourcei)>("alSourcei");
|
||||||
|
lib->alSourcePlay = s_openal_lib.get<decltype(alSourcePlay)>("alSourcePlay");
|
||||||
|
lib->alSourceQueueBuffers = s_openal_lib.get<decltype(alSourceQueueBuffers)>("alSourceQueueBuffers");
|
||||||
|
lib->alSourceStop = s_openal_lib.get<decltype(alSourceStop)>("alSourceStop");
|
||||||
|
lib->alSourceUnqueueBuffers = s_openal_lib.get<decltype(alSourceUnqueueBuffers)>("alSourceUnqueueBuffers");
|
||||||
|
|
||||||
|
s_loaded_lib = lib;
|
||||||
|
return s_loaded_lib;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnloadOpenAL()
|
||||||
|
{
|
||||||
|
delete s_loaded_lib;
|
||||||
|
s_loaded_lib = nullptr;
|
||||||
|
s_openal_lib.unload();
|
||||||
|
}
|
39
src/audio/OpenALLoader.h
Normal file
39
src/audio/OpenALLoader.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "AL/al.h"
|
||||||
|
#include "AL/alc.h"
|
||||||
|
|
||||||
|
struct OpenALLib
|
||||||
|
{
|
||||||
|
decltype(&alcCloseDevice) alcCloseDevice;
|
||||||
|
decltype(&alcCreateContext) alcCreateContext;
|
||||||
|
decltype(&alcDestroyContext) alcDestroyContext;
|
||||||
|
decltype(&alcGetContextsDevice) alcGetContextsDevice;
|
||||||
|
decltype(&alcGetCurrentContext) alcGetCurrentContext;
|
||||||
|
decltype(&alcGetString) alcGetString;
|
||||||
|
decltype(&alcIsExtensionPresent) alcIsExtensionPresent;
|
||||||
|
decltype(&alcMakeContextCurrent) alcMakeContextCurrent;
|
||||||
|
decltype(&alcOpenDevice) alcOpenDevice;
|
||||||
|
decltype(&alcGetError) alcGetError;
|
||||||
|
|
||||||
|
decltype(&alGenBuffers) alGenBuffers;
|
||||||
|
decltype(&alDeleteBuffers) alDeleteBuffers;
|
||||||
|
decltype(&alBufferData) alBufferData;
|
||||||
|
|
||||||
|
decltype(&alGenSources) alGenSources;
|
||||||
|
decltype(&alDeleteSources) alDeleteSources;
|
||||||
|
decltype(&alGetSourcei) alGetSourcei;
|
||||||
|
decltype(&alSourcef) alSourcef;
|
||||||
|
decltype(&alSourcei) alSourcei;
|
||||||
|
decltype(&alSourcePlay) alSourcePlay;
|
||||||
|
decltype(&alSourceQueueBuffers) alSourceQueueBuffers;
|
||||||
|
decltype(&alSourceStop) alSourceStop;
|
||||||
|
decltype(&alSourceUnqueueBuffers) alSourceUnqueueBuffers;
|
||||||
|
|
||||||
|
decltype(&alGetError) alGetError;
|
||||||
|
decltype(&alGetString) alGetString;
|
||||||
|
decltype(&alIsExtensionPresent) alIsExtensionPresent;
|
||||||
|
};
|
||||||
|
|
||||||
|
OpenALLib* LoadOpenAL();
|
||||||
|
void UnloadOpenAL();
|
|
@ -54,6 +54,7 @@ const wxString kDirectSound("DirectSound");
|
||||||
const wxString kXAudio27("XAudio2.7");
|
const wxString kXAudio27("XAudio2.7");
|
||||||
const wxString kXAudio2("XAudio2");
|
const wxString kXAudio2("XAudio2");
|
||||||
const wxString kCubeb("Cubeb");
|
const wxString kCubeb("Cubeb");
|
||||||
|
const wxString kOpenAL("OpenAL");
|
||||||
|
|
||||||
const wxString kPropertyPersistentId("PersistentId");
|
const wxString kPropertyPersistentId("PersistentId");
|
||||||
const wxString kPropertyMiiName("MiiName");
|
const wxString kPropertyMiiName("MiiName");
|
||||||
|
@ -398,6 +399,8 @@ wxPanel* GeneralSettings2::AddAudioPage(wxNotebook* notebook)
|
||||||
m_audio_api->Append(kXAudio2);
|
m_audio_api->Append(kXAudio2);
|
||||||
if (IAudioAPI::IsAudioAPIAvailable(IAudioAPI::Cubeb))
|
if (IAudioAPI::IsAudioAPIAvailable(IAudioAPI::Cubeb))
|
||||||
m_audio_api->Append(kCubeb);
|
m_audio_api->Append(kCubeb);
|
||||||
|
if (IAudioAPI::IsAudioAPIAvailable(IAudioAPI::OpenAL))
|
||||||
|
m_audio_api->Append(kOpenAL);
|
||||||
|
|
||||||
m_audio_api->SetSelection(0);
|
m_audio_api->SetSelection(0);
|
||||||
m_audio_api->SetToolTip(_("Select one of the available audio back ends"));
|
m_audio_api->SetToolTip(_("Select one of the available audio back ends"));
|
||||||
|
@ -982,6 +985,8 @@ void GeneralSettings2::StoreConfig()
|
||||||
config.audio_api = IAudioAPI::XAudio2;
|
config.audio_api = IAudioAPI::XAudio2;
|
||||||
else if (m_audio_api->GetStringSelection() == kCubeb)
|
else if (m_audio_api->GetStringSelection() == kCubeb)
|
||||||
config.audio_api = IAudioAPI::Cubeb;
|
config.audio_api = IAudioAPI::Cubeb;
|
||||||
|
else if (m_audio_api->GetStringSelection() == kOpenAL)
|
||||||
|
config.audio_api = IAudioAPI::OpenAL;
|
||||||
|
|
||||||
config.audio_delay = m_audio_latency->GetValue();
|
config.audio_delay = m_audio_latency->GetValue();
|
||||||
config.tv_channels = (AudioChannels)m_tv_channels->GetSelection();
|
config.tv_channels = (AudioChannels)m_tv_channels->GetSelection();
|
||||||
|
@ -1650,6 +1655,8 @@ void GeneralSettings2::ApplyConfig()
|
||||||
m_audio_api->SetStringSelection(kXAudio2);
|
m_audio_api->SetStringSelection(kXAudio2);
|
||||||
else if(config.audio_api == IAudioAPI::Cubeb)
|
else if(config.audio_api == IAudioAPI::Cubeb)
|
||||||
m_audio_api->SetStringSelection(kCubeb);
|
m_audio_api->SetStringSelection(kCubeb);
|
||||||
|
else if (config.audio_api == IAudioAPI::OpenAL)
|
||||||
|
m_audio_api->SetStringSelection(kOpenAL);
|
||||||
|
|
||||||
SendSliderEvent(m_audio_latency, config.audio_delay);
|
SendSliderEvent(m_audio_latency, config.audio_delay);
|
||||||
|
|
||||||
|
@ -1741,6 +1748,8 @@ void GeneralSettings2::OnAudioAPISelected(wxCommandEvent& event)
|
||||||
api = IAudioAPI::XAudio2;
|
api = IAudioAPI::XAudio2;
|
||||||
else if (m_audio_api->GetStringSelection() == kCubeb)
|
else if (m_audio_api->GetStringSelection() == kCubeb)
|
||||||
api = IAudioAPI::Cubeb;
|
api = IAudioAPI::Cubeb;
|
||||||
|
else if (m_audio_api->GetStringSelection() == kOpenAL)
|
||||||
|
api = IAudioAPI::OpenAL;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxFAIL_MSG("invalid audio api selected!");
|
wxFAIL_MSG("invalid audio api selected!");
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
"boost-property-tree",
|
"boost-property-tree",
|
||||||
"boost-static-string",
|
"boost-static-string",
|
||||||
"boost-random",
|
"boost-random",
|
||||||
|
"boost-dll",
|
||||||
"fmt",
|
"fmt",
|
||||||
"hidapi",
|
"hidapi",
|
||||||
"libpng",
|
"libpng",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue