code:
#ifndef AL_EFX_H
#define AL_EFX_H

#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*);
typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint);
typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*);

/* Filter object function types. */
typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint);
typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*);

/* Auxiliary Effect Slot object function types. */
typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*);

#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
AL_API void AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects);
AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
AL_API void AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
AL_API void AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues);
AL_API void AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
AL_API void AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues);
AL_API void AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
AL_API void AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
AL_API void AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
AL_API void AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);

AL_API void AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters);
AL_API void AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters);
AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter);
AL_API void AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue);
AL_API void AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues);
AL_API void AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue);
AL_API void AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues);
AL_API void AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue);
AL_API void AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues);
AL_API void AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
AL_API void AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);

AL_API void AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
AL_API void AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots);
AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
AL_API void AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
AL_API void AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues);
AL_API void AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
AL_API void AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues);
AL_API void AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
AL_API void AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
AL_API void AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
AL_API void AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
#endif

/* Filter ranges and defaults. */

/* Lowpass filter */
#define AL_LOWPASS_MIN_GAIN                      (0.0f)
#define AL_LOWPASS_MAX_GAIN                      (1.0f)
#define AL_LOWPASS_DEFAULT_GAIN                  (1.0f)

#define AL_LOWPASS_MIN_GAINHF                    (0.0f)
#define AL_LOWPASS_MAX_GAINHF                    (1.0f)
#define AL_LOWPASS_DEFAULT_GAINHF                (1.0f)

/* Highpass filter */
#define AL_HIGHPASS_MIN_GAIN                     (0.0f)
#define AL_HIGHPASS_MAX_GAIN                     (1.0f)
#define AL_HIGHPASS_DEFAULT_GAIN                 (1.0f)

#define AL_HIGHPASS_MIN_GAINLF                   (0.0f)
#define AL_HIGHPASS_MAX_GAINLF                   (1.0f)
#define AL_HIGHPASS_DEFAULT_GAINLF               (1.0f)

/* Bandpass filter */
#define AL_BANDPASS_MIN_GAIN                     (0.0f)
#define AL_BANDPASS_MAX_GAIN                     (1.0f)
#define AL_BANDPASS_DEFAULT_GAIN                 (1.0f)

#define AL_BANDPASS_MIN_GAINHF                   (0.0f)
#define AL_BANDPASS_MAX_GAINHF                   (1.0f)
#define AL_BANDPASS_DEFAULT_GAINHF               (1.0f)

#define AL_BANDPASS_MIN_GAINLF                   (0.0f)
#define AL_BANDPASS_MAX_GAINLF                   (1.0f)
#define AL_BANDPASS_DEFAULT_GAINLF               (1.0f)

/* Effect parameter ranges and defaults. */

/* Standard reverb effect */
#define AL_REVERB_MIN_DENSITY                    (0.0f)
#define AL_REVERB_MAX_DENSITY                    (1.0f)
#define AL_REVERB_DEFAULT_DENSITY                (1.0f)

#define AL_REVERB_MIN_DIFFUSION                  (0.0f)
#define AL_REVERB_MAX_DIFFUSION                  (1.0f)
#define AL_REVERB_DEFAULT_DIFFUSION              (1.0f)

#define AL_REVERB_MIN_GAIN                       (0.0f)
#define AL_REVERB_MAX_GAIN                       (1.0f)
#define AL_REVERB_DEFAULT_GAIN                   (0.32f)

#define AL_REVERB_MIN_GAINHF                     (0.0f)
#define AL_REVERB_MAX_GAINHF                     (1.0f)
#define AL_REVERB_DEFAULT_GAINHF                 (0.89f)

#define AL_REVERB_MIN_DECAY_TIME                 (0.1f)
#define AL_REVERB_MAX_DECAY_TIME                 (20.0f)
#define AL_REVERB_DEFAULT_DECAY_TIME             (1.49f)

#define AL_REVERB_MIN_DECAY_HFRATIO              (0.1f)
#define AL_REVERB_MAX_DECAY_HFRATIO              (2.0f)
#define AL_REVERB_DEFAULT_DECAY_HFRATIO          (0.83f)

#define AL_REVERB_MIN_REFLECTIONS_GAIN           (0.0f)
#define AL_REVERB_MAX_REFLECTIONS_GAIN           (3.16f)
#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN       (0.05f)

#define AL_REVERB_MIN_REFLECTIONS_DELAY          (0.0f)
#define AL_REVERB_MAX_REFLECTIONS_DELAY          (0.3f)
#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY      (0.007f)

#define AL_REVERB_MIN_LATE_REVERB_GAIN           (0.0f)
#define AL_REVERB_MAX_LATE_REVERB_GAIN           (10.0f)
#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN       (1.26f)

#define AL_REVERB_MIN_LATE_REVERB_DELAY          (0.0f)
#define AL_REVERB_MAX_LATE_REVERB_DELAY          (0.1f)
#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY      (0.011f)

#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF      (0.892f)
#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF      (1.0f)
#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF  (0.994f)

#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR        (0.0f)
#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR        (10.0f)
#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR    (0.0f)

#define AL_REVERB_MIN_DECAY_HFLIMIT              AL_FALSE
#define AL_REVERB_MAX_DECAY_HFLIMIT              AL_TRUE
#define AL_REVERB_DEFAULT_DECAY_HFLIMIT          AL_TRUE

/* EAX reverb effect */
#define AL_EAXREVERB_MIN_DENSITY                 (0.0f)
#define AL_EAXREVERB_MAX_DENSITY                 (1.0f)
#define AL_EAXREVERB_DEFAULT_DENSITY             (1.0f)

#define AL_EAXREVERB_MIN_DIFFUSION               (0.0f)
#define AL_EAXREVERB_MAX_DIFFUSION               (1.0f)
#define AL_EAXREVERB_DEFAULT_DIFFUSION           (1.0f)

#define AL_EAXREVERB_MIN_GAIN                    (0.0f)
#define AL_EAXREVERB_MAX_GAIN                    (1.0f)
#define AL_EAXREVERB_DEFAULT_GAIN                (0.32f)

#define AL_EAXREVERB_MIN_GAINHF                  (0.0f)
#define AL_EAXREVERB_MAX_GAINHF                  (1.0f)
#define AL_EAXREVERB_DEFAULT_GAINHF              (0.89f)

#define AL_EAXREVERB_MIN_GAINLF                  (0.0f)
#define AL_EAXREVERB_MAX_GAINLF                  (1.0f)
#define AL_EAXREVERB_DEFAULT_GAINLF              (1.0f)

#define AL_EAXREVERB_MIN_DECAY_TIME              (0.1f)
#define AL_EAXREVERB_MAX_DECAY_TIME              (20.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_TIME          (1.49f)

#define AL_EAXREVERB_MIN_DECAY_HFRATIO           (0.1f)
#define AL_EAXREVERB_MAX_DECAY_HFRATIO           (2.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO       (0.83f)

#define AL_EAXREVERB_MIN_DECAY_LFRATIO           (0.1f)
#define AL_EAXREVERB_MAX_DECAY_LFRATIO           (2.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO       (1.0f)

#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN        (0.0f)
#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN        (3.16f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN    (0.05f)

#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY       (0.0f)
#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY       (0.3f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY   (0.007f)

#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

#endif /* AL_EFX_H */


code:
EXPORTS
    alBuffer3f
    alBuffer3i
    alBufferData
    alBufferf
    alBufferfv
    alBufferi
    alBufferiv
    alDeleteBuffers
    alDeleteSources
    alDisable
    alDistanceModel
    alDopplerFactor
    alDopplerVelocity
    alEnable
    alGenBuffers
    alGenSources
    alGetBoolean
    alGetBooleanv
    alGetBuffer3f
    alGetBuffer3i
    alGetBufferf
    alGetBufferfv
    alGetBufferi
    alGetBufferiv
    alGetDouble
    alGetDoublev
    alGetEnumValue
    alGetError
    alGetFloat
    alGetFloatv
    alGetInteger
    alGetIntegerv
    alGetListener3f
    alGetListener3i
    alGetListenerf
    alGetListenerfv
    alGetListeneri
    alGetListeneriv
    alGetProcAddress
    alGetSource3f
    alGetSource3i
    alGetSourcef
    alGetSourcefv
    alGetSourcei
    alGetSourceiv
    alGetString
    alIsBuffer
    alIsEnabled
    alIsExtensionPresent
    alIsSource
    alListener3f
    alListener3i
    alListenerf
    alListenerfv
    alListeneri
    alListeneriv
    alSource3f
    alSource3i
    alSourcePause
    alSourcePausev
    alSourcePlay
    alSourcePlayv
    alSourceQueueBuffers
    alSourceRewind
    alSourceRewindv
    alSourceStop
    alSourceStopv
    alSourceUnqueueBuffers
    alSourcef
    alSourcefv
    alSourcei
    alSourceiv
    alSpeedOfSound
    alcCaptureCloseDevice
    alcCaptureOpenDevice
    alcCaptureSamples
    alcCaptureStart
    alcCaptureStop
    alcCloseDevice
    alcCreateContext
    alcDestroyContext
    alcGetContextsDevice
    alcGetCurrentContext
    alcGetEnumValue
    alcGetError
    alcGetIntegerv
    alcGetProcAddress
    alcGetString
    alcGetThreadContext
    alcIsExtensionPresent
    alcMakeContextCurrent
    alcOpenDevice
    alcProcessContext
    alcSetThreadContext
    alcSuspendContext

license: mit


code:
OpenAL Soft Binary Distribution

These binaries are provided as a convenience. Users and developers may use it
so they can use OpenAL Soft without having to build it from source.

Note that it is still expected to install the OpenAL redistributable provided
by Creative Labs (at http://openal.org/), as that will provide the "router"
OpenAL32.dll that applications talk to, and may provide extra drivers for the
user's system. The DLLs provided here will simply add additional devices for
applications to select from. If you do not wish to use the redistributable,
then rename soft_oal.dll to OpenAL32.dll (note: even the 64-bit DLL should be
named OpenAL32.dll). Just be aware this will prevent other system-installed
OpenAL implementations from working.

To use the 32-bit DLL, copy it from the bin\Win32 folder to the folder that
the 32-bit OpenAL32.dll router is installed in.
For 32-bit Windows, the Win32 DLL will typically go into the system32 folder.
For 64-bit Windows, the Win32 DLL will typically go into the SysWOW64 folder.

To use the 64-bit DLL, copy it from the bin\Win64 folder to the folder that
the 64-bit OpenAL32.dll router is installed in.
For 64-bit Windows, this will typically be the system32 folder.

The included openal-info32.exe and openal-info64.exe programs can be used to
tell if the OpenAL Soft DLL is being detected. It should be run from a command
shell, as the program will exit as soon as it's done printing information.

A configuration GUI app is provided in the alsoft-config folder. It is a front-
end to editing %AppData%\alsoft.ini, which can be used to modify certain
behaviors for OpenAL Soft devices.

Have fun!


code:
const popup = document.querySelector('.popup-greet')
const startBtn = document.getElementById('start')
const mus = document.getElementById('mus')
const musControl = document.getElementById('mus-control')
const ions = document.getElementsByClassName('ion')

mus.volume = 0.1

function musicPlay() {
	mus.play()
	if (!mus.paused) {
		for (let i = 0; i < ions.length; i++) {
			ions[i].classList.add('ion-play')
		}
	}
	musControl.addEventListener('click', playerControl)
}

function playerControl() {
	startBtn.removeEventListener('click', musicPlay)
	if (mus.paused) {
		mus.play()
		for (let i = 0; i < ions.length; i++) {
			ions[i].classList.add('ion-play')
		}
	} else {
		mus.pause()
		for (let i = 0; i < ions.length; i++) {
			ions[i].classList.remove('ion-play')
		}
	}
}

startBtn.addEventListener('click', () => {
	popup.classList.add('popup-greet-remove')
	setTimeout(() => {
		popup.remove()
	}, 2000)
	musicPlay()
})

repo_name: chekibreki/gitUse

license: unknown


code:
<!DOCTYPE html>

		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<link rel="icon" type="image/x-icon" href="./favicon.png" />
		<title>itRoom(io)</title>
		<link rel="stylesheet" href="style.css" />

				itRoom(io)

					Со времени появления
					интернета жизнь человека изменилась

			<button id="start">Узнать больше</button>

				itRoom(io)

				СКОРО

		<audio id="mus" src="./vibe.mp3" autoplay loop></audio>
		<button id="mus-control">

		</button>


code:
;(function () {
	var settings = {
		rainbowLength: 64,
		rainbowMultiplier: 2,
		rainbowClass: 'rainbow-text',
		delay: 24, //not using it cuz rAF
		repeat: true,
		numberAches: {
			topWeeoo: function (tI, k) {
				return Math.sin((tI + k) / 6) * 1 + 'px'
			},
			leftWeeoo: function (tI, k) {
				return Math.cos((tI + k) / 6) * 1 + 'px'
			},
			spacingWeeoo: function (tI, k) {
				return Math.sin((tI + k) / 15) * 1 + 'px'
			},
			sizeWeeoo: function (tI, k) {
				return Math.sin((tI / 2 + k) / 10) * 1 + 20 + 'px'
			},
			opacityWeeoo: function (tI, k) {
				return Math.cos(tI + k) / 8 + 0.8125
			},
		},
	}

	var Δ = {
		rainbow: makeMeARainbow(settings.rainbowLength),
		init: function () {
			var sourceElement = document.querySelector('.' + settings.rainbowClass)

			this.element = this.dissectText(sourceElement)
			sourceElement.parentNode.insertBefore(this.element, sourceElement)
			sourceElement.remove()

			this.update(this.draw(this.element))

			return this
		},
		draw: function (el) {
			if (!el) return
			var _self = this

			var spans = el.querySelectorAll('span')
			;[].forEach.call(spans, function (v, k) {
				v.style.color = _self.rainbow[k % _self.rainbow.length]
				// v.style.position = 'relative'
			})

			return spans
		},
		dissectText: function (sourceEl) {
			var textSource = sourceEl.textContent,
				headingContainer = document.createElement('span')

			textSource.split('').forEach(function (v, k, c) {
				var span = document.createElement('span'),
					destText = document.createTextNode(v)

				span.appendChild(destText)
				headingContainer.appendChild(span)
			})

			headingContainer.className = settings.rainbowClass

			return headingContainer
		},
		update: function (spans) {
			if (!spans) return
			var _self = this,
				delay = settings.delay,
				nanana = settings.numberAches,
				tI = (_self.totalIterations = 0)

			//_self.updater && window.clearTimeout(_self.updater);
			//_self.updater = window.setTimeout(animateText.bind(_self, spans), delay);
			requestAnimationFrame(animateText.bind(_self, spans, tI))

			function animateText(spans, tI) {
				;[].forEach.call(spans, function (v, k) {
					v.style.color = _self.rainbow[(tI + k) % _self.rainbow.length]
					v.style.top = nanana.topWeeoo(tI, k) //Math.sin((tI + k) / 6) * 20 + 'px';
					v.style.left = nanana.leftWeeoo(tI, k) //Math.cos((tI + k) / 6) * 15 + 'px';
					v.style.letterSpacing = nanana.spacingWeeoo(tI, k) //Math.sin((tI + k) / 15) * 10 + 'px';
					v.style.fontSize = nanana.sizeWeeoo(tI, k) //((Math.sin( ((tI/2) + k)/10 )*16) + 72 ) + 'px';
					v.style.opacity = nanana.opacityWeeoo(tI, k) //Math.cos(tI + k)/8 + .8125;
				})

				if (settings.repeat)
					requestAnimationFrame(animateText.bind(_self, spans, ++tI))
				//if (settings.repeat) _self.updater = window.setTimeout(animateText.bind(_self, spans), delay);
			}

			return _self
			//return _self.updater;
		},
	}.init()

	function makeMeARainbow(length) {
		var length = length || 64

		return (function generateRainbow(arr, amount) {
			if (--amount < 0) return arr
			arr.push(
				generateColor(
					(length - amount + 1) % length,
					length,
					settings.rainbowMultiplier
				)
			)
			return generateRainbow(arr, amount)
		})([], length)

		function generateColor(amount, total, multiplier) {
			return 'hsla(' + amount * multiplier * (360 / total) + ',100%,60%,0.90)'
		}
	}
})()


code:
<!DOCTYPE html>

		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
		<link rel="stylesheet" href="style.css" />

				Со времени появления
				интернета жизнь человека изменилась


code:
@font-face {
	font-family: Comfortaa;
	src: url(Comfortaa-VariableFont_wght.ttf);
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	font-family: 'Comfortaa';
}

body {
	background-color: #000;
	color: #fff;
	line-height: 1.5;
}

section {
	margin: 20px;
}

.rainbow-text {
	background: linear-gradient(
		to right,
		#6224e4,
		#b300cc,
		#e100b2,
		#ff189a,
		#6224e4,
		#6224e4,
		#b300cc,
		#e100b2,
		#ff189a,
		#6224e4
	);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: rainbow_animation 1.5s ease-in-out infinite;
	cursor: pointer;
	background-size: 400% 100%;
	transform: translateX(-100%);
}

@keyframes rainbow_animation {
	0% {
		background-position: 0 0;
	}
	50% {
		background-position: 100% 0;
	}
	100% {
		background-position: 0 0;
	}
}


code:
:root {
	--main-equalizer-color: greenyellow;
	--additional-equalizer-color: rgb(255, 0, 119);
}

@font-face {
	font-family: Comfortaa;
	src: url(Comfortaa-VariableFont_wght.ttf);
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	font-family: 'Comfortaa';
}

body {
	background-color: #000;
	color: #fff;
	line-height: 1.5;
}

.popup-greet {
	width: 100vw;
	min-height: 100vh;
	background-color: #000;
	position: absolute;
	z-index: 100;
	display: flex;
	align-items: center;
	padding: 80px 20px 20px 20px;
	transition: 1.5s;
	opacity: 1;
	flex-direction: column;
}

.popup-greet-remove {
	opacity: 0;
	transform: translateY(-100%);
}

#start {
	width: calc(100% - 20px);
	padding: 20px;
	margin: 20px 0;
	border: 2px solid #ffffff;
	border-radius: 5px;
	background-color: transparent;
	color: #fff;
	font-size: 1.25em;
	position: relative;
	font-weight: 900;
	overflow: hidden;
}

#start::before {
	content: '';
	/* z-index: -1; */
	position: absolute;
	left: 0;
	top: 10px;
	width: 20px;
	height: 30px;
	background-color: rgba(156, 255, 178);
	animation: greet-button infinite ease-in-out 6s;
	border: 2px solid #fff;
	mix-blend-mode: difference;
}

#start::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: 10px;
	width: 15px;
	height: 25px;
	background-color: #fd9dff;
	animation: greet-button infinite ease-in-out 8s;
	border: 2px solid #fff;
	mix-blend-mode: difference;
}

.wrapper {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100vw;
	height: 100vh;
	background-color: #000;
	flex-direction: column;
	padding: 20px;
}

.log {
	color: #fff;
	font-size: 1.25em;
	letter-spacing: 5px;
}

.content {
	width: 300px;
	height: 300px;
	background: url(./vibes.gif) no-repeat center center;
	background-size: cover;
	border-radius: 20px;
}

.bottom {
	color: #fff;
	position: absolute;
	left: 50%;
	bottom: 50px;
	transform: translateX(-50%);
	font-size: 1.25em;
	letter-spacing: 5px;
}

.marker-io {
	color: #9cffb2;
}

.marker-brackets {
	color: #fd9dff;
}

.red {
	color: #ff0000;
}

.yellow {
	color: #ffff00;
}

.green {
	color: #008000;
}

.blue {
	color: #0000ff;
}

.violet {
	color: #ee82ee;
}

#mus-control {
	border: none;
	position: fixed;
	right: 0;
	top: 0;
	background-color: transparent;
	padding: 20px;
	display: flex;
	gap: 3px;
}

.ion {
	display: block;
	width: 1px;
	height: 1px;
	background-color: var(--main-equalizer-color);
	border-radius: 50%;
}

.ion:nth-child(odd) {
	animation: music-pause ease-in infinite 0.3s;
}

.ion:nth-child(even) {
	animation: music-pause-reverse ease-out infinite 0.3s;
}

.ion-play:nth-child(1) {
	animation: music-play-1-10 ease-in infinite 0.4s;
}

.ion-play:nth-child(2) {
	animation: music-play-2-9 ease-in infinite 0.5s;
}

.ion-play:nth-child(3) {
	animation: music-play-3-8 ease-in infinite 0.6s;
}

.ion-play:nth-child(4) {
	animation: music-play-4-7 ease-in infinite 0.7s;
}

.ion-play:nth-child(5) {
	animation: music-play-5-6 ease-in infinite 0.8s;
}

.ion-play:nth-child(6) {
	animation: music-play-5-6 ease-in infinite 0.2s;
}

.ion-play:nth-child(7) {
	animation: music-play-4-7 ease-in infinite 0.3s;
}

.ion-play:nth-child(8) {
	animation: music-play-3-8 ease-in infinite 0.4s;
}

.ion-play:nth-child(9) {
	animation: music-play-2-9 ease-in infinite 0.5s;
}

.ion-play:nth-child(10) {
	animation: music-play-1-10 ease-in infinite 0.4s;
}

@keyframes music-play-1-10 {
	0% {
		padding: 0;
	}
	20% {
		padding-bottom: 25px;
		border-bottom: 2px solid var(--additional-equalizer-color);
	}
	40% {
		padding: 0;
	}
	60% {
		padding: 0;
	}
	80% {
		padding-bottom: 5px;
	}
	100% {
		padding: 0;
	}
}

@keyframes music-play-2-9 {
	0% {
		padding: 0;
	}
	20% {
		padding-bottom: 20px;
		border-bottom: 2px solid var(--additional-equalizer-color);
	}
	40% {
		padding: 0;
	}
	60% {
		padding: 0;
	}
	80% {
		padding-bottom: 10px;
	}
	100% {
		padding: 0;
	}
}

@keyframes music-play-3-8 {
	0% {
		padding: 0;
	}
	20% {
		padding-bottom: 15px;
		border-bottom: 2px solid var(--additional-equalizer-color);
	}
	40% {
		padding: 0;
	}
	60% {
		padding: 0;
	}
	80% {
		padding-bottom: 15px;
		border-bottom: 2px solid var(--additional-equalizer-color);
	}
	100% {
		padding: 0;
	}
}

@keyframes music-play-4-7 {
	0% {
		padding: 0;
	}
	20% {
		padding-bottom: 10px;
	}
	40% {
		padding: 0;
	}
	60% {
		padding: 0;
	}
	80% {
		padding-bottom: 20px;
		border-bottom: 2px solid var(--additional-equalizer-color);
	}
	100% {
		padding: 0;
	}
}

@keyframes music-play-5-6 {
	0% {
		padding: 0;
	}
	20% {
		padding-bottom: 5px;
	}
	40% {
		padding: 0;
	}
	60% {
		padding: 0;
	}
	80% {
		padding-bottom: 25px;
		border-bottom: 2px solid var(--additional-equalizer-color);
	}
	100% {
		padding: 0;
	}
}

@keyframes music-pause {
	0% {
		padding: 0;
	}
	50% {
		padding-bottom: 3px;
	}
	100% {
		padding: 0;
	}
}

@keyframes music-pause-reverse {
	0% {
		padding-bottom: 3px;
	}
	50% {
		padding: 0;
	}
	100% {
		padding-bottom: 3px;
	}
}

.rainbow-text {
	background: linear-gradient(
		to right,
		#6224e4,
		#b300cc,
		#e100b2,
		#ff189a,
		#6224e4,
		#6224e4,
		#b300cc,
		#e100b2,
		#ff189a,
		#6224e4
	);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: rainbow_animation 1.5s ease-in-out infinite;
	background-size: 400% 100%;
	transform: translateX(-100%);
}

@keyframes rainbow_animation {
	0% {
		background-position: 0 0;
	}
	50% {
		background-position: 100% 0;
	}
	100% {
		background-position: 0 0;
	}
}

@keyframes greet-button {
	0% {
		transform: translateX(-50px) rotate(360deg);
	}
	50% {
		transform: translateX(calc(100vw - 50px)) rotate(0);
	}
	100% {
		transform: translateX(-50px) rotate(360deg);
	}
}


code:
ltxpng/
org/
reference/
*.pdf
*.txt
*.tex
*.log
*.log
/*log
*log*
/gnu-hurd.com.org
/jmp.chat.org
/linode-debian-server.org
/llc-small-business.org
/marriott.org
/*~
/*.aux
/*.nav
/*.snm
/*.toc
/*.out

repo_name: hwpplayers/cheatsheets

path: .gitignore


code:
#+TITLE:MIG EZ Manual
#+AUTHOR:Joshua Branson
#+LATEX_HEADER: \usepackage{lmodern}
#+LATEX_HEADER: \usepackage[QX]{fontenc}
#+OPTIONS: H:10 toc:nil

Creating remote procedure calls via mach is a challenging task, but MIG or the Mach Interface Generator makes this task much easier.  You only need to do this if you need to define your own interfaces.  The Hurd already contains various interfaces.


code:
My collection of cheatsheets for various projects. The files are written in emacs' org-mode, which can be exported to pdf, info,
html, and probably a few other formats.


code:
#+TITLE:Accrisoft Cheatsheat
# The next lines says that I can make 10 levels of headlines, and org will treat those headlines as how to structure the book into

# chapters, then sections, then subsections, then sub-sub-sections, etc.
#+OPTIONS: H:10

* Introduction to Accrisoft
  Accrisoft is a CMS (Content management System) that is build on php.  It does NOT allow you to upload php files.  In this way,
  it caters to web designers that do not understand how to include php files.  It tries to manage all of your include files in
  /layouts/, all of your CSS stylesheet, and by default all of your paths to content are graphics/path/to/your/file.  Ie: if you
  upload “boy.png” to Accrisoft in the images folder, then the image can be found in graphics/images/boy.png.

  The same is true for all of your js files and bootstrap files.  So if you upload a “bootstrap.min.css” or a “script.js” in the
  css and js folder respectively, then their paths are “graphics/css/bootstrap.min.css” and “graphics/js/script.js”

  So if your index.php looks like this:

  ~include <?php header.php; ?>~
  ~Hello world!~
  ~include <?php footer.php; ?>~

  You have a problem, namely that accrisoft does not let you upload a php file to the server.  You have to turn the header.php
  into a layout I believe, and then include it.

  More annoying than that, Accrisoft does not allow any of your pages to include php code.  If you try to save a file with php
  code, Accrisoft will change the php tags to html comments.

  Accrisoft has a blue section and a green section.  The blue section is where a non-developer can include content. The green
  section is where a developer configures the website.

  Accrisoft has a ~[[Content] ]~ variable.  This variable lets the client insert content on a specific page.

* Layouts
  Accrisoft’s Layouts are how one designs a webpage.  Page layouts are files that contain html.  These files can then be added
  into or included by any other webpage.

  There are 4 default page layouts:

  - Home, which determines the home page’s layout
  - default, which determines the intererior page layouts
  - landing, is used is a layout that is shown before the actual site is shown.  You could use this as a language selection button
    or a flash intro.
  - The default layout determines how the other pages are designed.

  I’ve created a header and a footer layout.  The header and footer layout are inserted in all pages that use them.  A default
  page might look like this;

~[[page.header] ]~

~[[Content] ]~

~[[page.footer] ]~

** Layout Modules
   Freedom allows you to create layout modules, are are tiny html snippets.  Then you can add these layout modules anywhere in
   your website and the client can edit that content at any time.

** Stylesheets
   Freedom also lets you create specific classes that the client can apply to various html elements, though I image the client
   will only do this text.  Consider this example, suppose the client wants a default green bold h1 tag.  To make this possible,
   in the green screen, click on stylesheets > Blue stylesheet.  Then you can create a custom stylesheet that the client can use
   in accrisoft What You See Is What You Get editor.  Then the client can type some text in the editor, and to apply the green
   bold banner to it, he or she can add the style to it, by highlighting the text, and then selecting the style from the Styles
   drop down menu.

** Modules: Directories
   Apparently these are a way of storing client’s information and then easily displaying it.  But it sounds like this is for
   displaying multiple data points on a page.  Like having a list of the latest blog titles.

** Restricting what the client can edit in the blue interface

** Display Types
   These provide a way to make certain pages unique.  Suppose the client wants a different menu to appear on one page, or certain
   jQuery to be run on another.  Display types let you handle this.

   Display types can be assigned to a single web page, form, module categories, or to an entire module.


code:
#+AUTHOR:Joshua Branson
#+TITLE: ActivityPub
#+LATEX_HEADER: \usepackage{lmodern}
#+LATEX_HEADER: \usepackage[QX]{fontenc}
#+OPTIONS: H:10 toc:nil

* ActivityPub

Overview: Activity Pub is designed for federated social networking
sites!  It uses ActivityStreams.  It allows clients to delete, upload,
and edit content.  It also provides a server to server API that can
deliver notifications and content.

So if two users knew each other, then one would look at the other's
photo, like it.  Her machine (client) would talk to the server.  That
server would send a message to the other server.  That server would
notify the other person.

ActivityPub is one of several related specifications being produced by
the Social Web Working Group. Implementers interested in alternative
approaches and complementary protocols should review [Micropub] and
the overview document [Social-Web-Protocols].


code:
#+TITLE:Apache Cheatsheat
#+AUTHOR:Joshua Branson

* Tell Apache which file postfixes are php code
  Add the following to /etc/httpd/conf/httpd.conf

  =AddType application/x-httpd-php .php .phtml=