Android: Add support for effects, filters, reverb, and environment to Android implementation of OpenAL Soft
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10609 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
893bd93c60
commit
785d50f516
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -353,6 +353,676 @@ public class AL {
|
|||||||
static final int AL_EXPONENT_DISTANCE = 0xD005;
|
static final int AL_EXPONENT_DISTANCE = 0xD005;
|
||||||
static final int AL_EXPONENT_DISTANCE_CLAMPED = 0xD006;
|
static final int AL_EXPONENT_DISTANCE_CLAMPED = 0xD006;
|
||||||
|
|
||||||
|
/* ********** */
|
||||||
|
/* FROM efx.h */
|
||||||
|
/* ********** */
|
||||||
|
|
||||||
|
static final String ALC_EXT_EFX_NAME = "ALC_EXT_EFX";
|
||||||
|
|
||||||
|
static final int ALC_EFX_MAJOR_VERSION = 0x20001;
|
||||||
|
static final int ALC_EFX_MINOR_VERSION = 0x20002;
|
||||||
|
static final int ALC_MAX_AUXILIARY_SENDS = 0x20003;
|
||||||
|
|
||||||
|
|
||||||
|
///* Listener properties. */
|
||||||
|
//#define AL_METERS_PER_UNIT 0x20004
|
||||||
|
//
|
||||||
|
///* Source properties. */
|
||||||
|
static final int AL_DIRECT_FILTER = 0x20005;
|
||||||
|
static final int AL_AUXILIARY_SEND_FILTER = 0x20006;
|
||||||
|
//#define AL_AIR_ABSORPTION_FACTOR 0x20007
|
||||||
|
//#define AL_ROOM_ROLLOFF_FACTOR 0x20008
|
||||||
|
//#define AL_CONE_OUTER_GAINHF 0x20009
|
||||||
|
static final int 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 */
|
||||||
|
static final int AL_REVERB_DENSITY = 0x0001;
|
||||||
|
static final int AL_REVERB_DIFFUSION = 0x0002;
|
||||||
|
static final int AL_REVERB_GAIN = 0x0003;
|
||||||
|
static final int AL_REVERB_GAINHF = 0x0004;
|
||||||
|
static final int AL_REVERB_DECAY_TIME = 0x0005;
|
||||||
|
static final int AL_REVERB_DECAY_HFRATIO = 0x0006;
|
||||||
|
static final int AL_REVERB_REFLECTIONS_GAIN = 0x0007;
|
||||||
|
static final int AL_REVERB_REFLECTIONS_DELAY = 0x0008;
|
||||||
|
static final int AL_REVERB_LATE_REVERB_GAIN = 0x0009;
|
||||||
|
static final int AL_REVERB_LATE_REVERB_DELAY = 0x000A;
|
||||||
|
static final int AL_REVERB_AIR_ABSORPTION_GAINHF = 0x000B;
|
||||||
|
static final int AL_REVERB_ROOM_ROLLOFF_FACTOR = 0x000C;
|
||||||
|
static final int 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
|
||||||
|
static final int AL_EFFECT_TYPE = 0x8001;
|
||||||
|
//
|
||||||
|
///* Effect types, used with the AL_EFFECT_TYPE property */
|
||||||
|
//#define AL_EFFECT_NULL 0x0000
|
||||||
|
static final int 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. */
|
||||||
|
static final int 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 */
|
||||||
|
static final int AL_LOWPASS_GAIN = 0x0001;
|
||||||
|
static final int 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
|
||||||
|
static final int AL_FILTER_TYPE = 0x8001;
|
||||||
|
//
|
||||||
|
///* Filter types, used with the AL_FILTER_TYPE property */
|
||||||
|
static final int AL_FILTER_NULL = 0x0000;
|
||||||
|
static final int AL_FILTER_LOWPASS = 0x0001;
|
||||||
|
static final int AL_FILTER_HIGHPASS = 0x0002;
|
||||||
|
//#define AL_FILTER_BANDPASS 0x0003
|
||||||
|
//
|
||||||
|
///* 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)
|
||||||
|
|
||||||
|
|
||||||
public static String GetALErrorMsg(int errorCode) {
|
public static String GetALErrorMsg(int errorCode) {
|
||||||
String errorText;
|
String errorText;
|
||||||
|
@ -169,12 +169,9 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
// Find maximum # of sources supported by this implementation
|
// Find maximum # of sources supported by this implementation
|
||||||
ArrayList<Integer> channelList = new ArrayList<Integer>();
|
ArrayList<Integer> channelList = new ArrayList<Integer>();
|
||||||
for (int i = 0; i < MAX_NUM_CHANNELS; i++) {
|
for (int i = 0; i < MAX_NUM_CHANNELS; i++) {
|
||||||
// logger.log(Level.INFO, "Generating Source for index: {0}", i);
|
|
||||||
int chan = alGenSources();
|
int chan = alGenSources();
|
||||||
// logger.log(Level.INFO, "chan: {0}", chan);
|
|
||||||
//if (alGetError() != 0) {
|
//if (alGetError() != 0) {
|
||||||
if (checkError(false) != 0) {
|
if (checkError(false) != 0) {
|
||||||
// logger.log(Level.INFO, "alGetError detected an error");
|
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
channelList.add(chan);
|
channelList.add(chan);
|
||||||
@ -191,36 +188,47 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
|
|
||||||
logger.log(Level.INFO, "AudioRenderer supports {0} channels", channels.length);
|
logger.log(Level.INFO, "AudioRenderer supports {0} channels", channels.length);
|
||||||
|
|
||||||
// supportEfx = ALC10.alcIsExtensionPresent(device, "ALC_EXT_EFX");
|
//supportEfx = alcIsExtensionPresent(device, "ALC_EXT_EFX");
|
||||||
// if (supportEfx) {
|
supportEfx = alcIsExtensionPresent(AL.ALC_EXT_EFX_NAME);
|
||||||
// ib.position(0).limit(1);
|
logger.log(Level.INFO, "{0} found: {1}",
|
||||||
|
new Object[]{AL.ALC_EXT_EFX_NAME, supportEfx});
|
||||||
|
|
||||||
|
if (supportEfx) {
|
||||||
|
ib.position(0).limit(1);
|
||||||
//ALC10.alcGetInteger(device, EFX10.ALC_EFX_MAJOR_VERSION, ib);
|
//ALC10.alcGetInteger(device, EFX10.ALC_EFX_MAJOR_VERSION, ib);
|
||||||
// int major = ib.get(0);
|
alcGetInteger(AL.ALC_EFX_MAJOR_VERSION, ib, 1);
|
||||||
// ib.position(0).limit(1);
|
int major = ib.get(0);
|
||||||
|
ib.position(0).limit(1);
|
||||||
//ALC10.alcGetInteger(device, EFX10.ALC_EFX_MINOR_VERSION, ib);
|
//ALC10.alcGetInteger(device, EFX10.ALC_EFX_MINOR_VERSION, ib);
|
||||||
// int minor = ib.get(0);
|
alcGetInteger(AL.ALC_EFX_MINOR_VERSION, ib, 1);
|
||||||
// logger.log(Level.INFO, "Audio effect extension version: {0}.{1}", new Object[]{major, minor});
|
int minor = ib.get(0);
|
||||||
//
|
logger.log(Level.INFO, "Audio effect extension version: {0}.{1}", new Object[]{major, minor});
|
||||||
|
|
||||||
//ALC10.alcGetInteger(device, EFX10.ALC_MAX_AUXILIARY_SENDS, ib);
|
//ALC10.alcGetInteger(device, EFX10.ALC_MAX_AUXILIARY_SENDS, ib);
|
||||||
// auxSends = ib.get(0);
|
alcGetInteger(AL.ALC_MAX_AUXILIARY_SENDS, ib, 1);
|
||||||
// logger.log(Level.INFO, "Audio max auxilary sends: {0}", auxSends);
|
auxSends = ib.get(0);
|
||||||
//
|
logger.log(Level.INFO, "Audio max auxilary sends: {0}", auxSends);
|
||||||
// // create slot
|
|
||||||
// ib.position(0).limit(1);
|
// create slot
|
||||||
|
ib.position(0).limit(1);
|
||||||
//EFX10.alGenAuxiliaryEffectSlots(ib);
|
//EFX10.alGenAuxiliaryEffectSlots(ib);
|
||||||
// reverbFxSlot = ib.get(0);
|
alGenAuxiliaryEffectSlots(1, ib);
|
||||||
//
|
reverbFxSlot = ib.get(0);
|
||||||
// // create effect
|
|
||||||
// ib.position(0).limit(1);
|
// create effect
|
||||||
|
ib.position(0).limit(1);
|
||||||
//EFX10.alGenEffects(ib);
|
//EFX10.alGenEffects(ib);
|
||||||
// reverbFx = ib.get(0);
|
alGenEffects(1, ib);
|
||||||
|
reverbFx = ib.get(0);
|
||||||
//EFX10.alEffecti(reverbFx, EFX10.AL_EFFECT_TYPE, EFX10.AL_EFFECT_REVERB);
|
//EFX10.alEffecti(reverbFx, EFX10.AL_EFFECT_TYPE, EFX10.AL_EFFECT_REVERB);
|
||||||
//
|
alEffecti(reverbFx, AL.AL_EFFECT_TYPE, AL.AL_EFFECT_REVERB);
|
||||||
// // attach reverb effect to effect slot
|
|
||||||
|
// attach reverb effect to effect slot
|
||||||
//EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
|
//EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
|
||||||
// } else {
|
alAuxiliaryEffectSloti(reverbFxSlot, AL.AL_EFFECTSLOT_EFFECT, reverbFx);
|
||||||
// logger.log(Level.WARNING, "OpenAL EFX not available! Audio effects won't work.");
|
} else {
|
||||||
// }
|
logger.log(Level.WARNING, "OpenAL EFX not available! Audio effects won't work.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cleanupInThread() {
|
public void cleanupInThread() {
|
||||||
@ -251,22 +259,23 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
// delete audio buffers and filters
|
// delete audio buffers and filters
|
||||||
objManager.deleteAllObjects(this);
|
objManager.deleteAllObjects(this);
|
||||||
|
|
||||||
// if (supportEfx) {
|
if (supportEfx) {
|
||||||
// ib.position(0).limit(1);
|
ib.position(0).limit(1);
|
||||||
// ib.put(0, reverbFx);
|
ib.put(0, reverbFx);
|
||||||
//EFX10.alDeleteEffects(ib);
|
//EFX10.alDeleteEffects(ib);
|
||||||
//
|
alDeleteEffects(1, ib);
|
||||||
// // If this is not allocated, why is it deleted?
|
|
||||||
// // Commented out to fix native crash in OpenAL.
|
// If this is not allocated, why is it deleted?
|
||||||
// ib.position(0).limit(1);
|
// Commented out to fix native crash in OpenAL.
|
||||||
// ib.put(0, reverbFxSlot);
|
ib.position(0).limit(1);
|
||||||
|
ib.put(0, reverbFxSlot);
|
||||||
//EFX10.alDeleteAuxiliaryEffectSlots(ib);
|
//EFX10.alDeleteAuxiliaryEffectSlots(ib);
|
||||||
// }
|
alDeleteAuxiliaryEffectSlots(1, ib);
|
||||||
//
|
}
|
||||||
|
|
||||||
//AL.destroy();
|
//AL.destroy();
|
||||||
logger.log(Level.INFO, "Destroying OpenAL Soft Renderer");
|
logger.log(Level.INFO, "Destroying OpenAL Soft Renderer");
|
||||||
alDestroy();
|
alDestroy();
|
||||||
// checkError(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cleanup() {
|
public void cleanup() {
|
||||||
@ -279,27 +288,31 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateFilter(Filter f) {
|
private void updateFilter(Filter f) {
|
||||||
// int id = f.getId();
|
int id = f.getId();
|
||||||
// if (id == -1) {
|
if (id == -1) {
|
||||||
// ib.position(0).limit(1);
|
ib.position(0).limit(1);
|
||||||
//EFX10.alGenFilters(ib);
|
//EFX10.alGenFilters(ib);
|
||||||
// id = ib.get(0);
|
alGenFilters(1, ib);
|
||||||
// f.setId(id);
|
id = ib.get(0);
|
||||||
//
|
f.setId(id);
|
||||||
// objManager.registerForCleanup(f);
|
|
||||||
// }
|
objManager.registerForCleanup(f);
|
||||||
//
|
}
|
||||||
// if (f instanceof LowPassFilter) {
|
|
||||||
// LowPassFilter lpf = (LowPassFilter) f;
|
if (f instanceof LowPassFilter) {
|
||||||
|
LowPassFilter lpf = (LowPassFilter) f;
|
||||||
//EFX10.alFilteri(id, EFX10.AL_FILTER_TYPE, EFX10.AL_FILTER_LOWPASS);
|
//EFX10.alFilteri(id, EFX10.AL_FILTER_TYPE, EFX10.AL_FILTER_LOWPASS);
|
||||||
|
alFilteri(id, AL.AL_FILTER_TYPE, AL.AL_FILTER_LOWPASS);
|
||||||
//EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAIN, lpf.getVolume());
|
//EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAIN, lpf.getVolume());
|
||||||
|
alFilterf(id, AL.AL_LOWPASS_GAIN, lpf.getVolume());
|
||||||
//EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume());
|
//EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume());
|
||||||
// } else {
|
alFilterf(id, AL.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume());
|
||||||
// throw new UnsupportedOperationException("Filter type unsupported: "
|
} else {
|
||||||
// + f.getClass().getName());
|
throw new UnsupportedOperationException("Filter type unsupported: "
|
||||||
// }
|
+ f.getClass().getName());
|
||||||
//
|
}
|
||||||
// f.clearUpdateNeeded();
|
|
||||||
|
f.clearUpdateNeeded();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateSourceParam(AudioSource src, AudioParam param) {
|
public void updateSourceParam(AudioSource src, AudioParam param) {
|
||||||
@ -375,15 +388,16 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// int filter = EFX10.AL_FILTER_NULL;
|
int filter = AL.AL_FILTER_NULL;
|
||||||
// if (src.getReverbFilter() != null) {
|
if (src.getReverbFilter() != null) {
|
||||||
// Filter f = src.getReverbFilter();
|
Filter f = src.getReverbFilter();
|
||||||
// if (f.isUpdateNeeded()) {
|
if (f.isUpdateNeeded()) {
|
||||||
// updateFilter(f);
|
updateFilter(f);
|
||||||
// }
|
}
|
||||||
// filter = f.getId();
|
filter = f.getId();
|
||||||
// }
|
}
|
||||||
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
|
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
|
||||||
|
alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
|
||||||
break;
|
break;
|
||||||
case ReverbEnabled:
|
case ReverbEnabled:
|
||||||
if (!supportEfx || !src.isPositional()) {
|
if (!supportEfx || !src.isPositional()) {
|
||||||
@ -394,6 +408,7 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
updateSourceParam(src, AudioParam.ReverbFilter);
|
updateSourceParam(src, AudioParam.ReverbFilter);
|
||||||
} else {
|
} else {
|
||||||
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
|
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
|
||||||
|
alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IsPositional:
|
case IsPositional:
|
||||||
@ -411,6 +426,7 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
|
|
||||||
// Disable reverb
|
// Disable reverb
|
||||||
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
|
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
|
||||||
|
alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL);
|
||||||
} else {
|
} else {
|
||||||
//alSourcei(id, AL_SOURCE_RELATIVE, AL_FALSE);
|
//alSourcei(id, AL_SOURCE_RELATIVE, AL_FALSE);
|
||||||
alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE);
|
alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE);
|
||||||
@ -470,23 +486,25 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
checkError(true);
|
checkError(true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// case DryFilter:
|
case DryFilter:
|
||||||
// if (!supportEfx) {
|
if (!supportEfx) {
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// if (src.getDryFilter() != null) {
|
if (src.getDryFilter() != null) {
|
||||||
// Filter f = src.getDryFilter();
|
Filter f = src.getDryFilter();
|
||||||
// if (f.isUpdateNeeded()) {
|
if (f.isUpdateNeeded()) {
|
||||||
// updateFilter(f);
|
updateFilter(f);
|
||||||
//
|
|
||||||
// // NOTE: must re-attach filter for changes to apply.
|
// NOTE: must re-attach filter for changes to apply.
|
||||||
//alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
|
//alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
|
||||||
// }
|
alSourcei(id, AL.AL_DIRECT_FILTER, f.getId());
|
||||||
// } else {
|
}
|
||||||
|
} else {
|
||||||
//alSourcei(id, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
|
//alSourcei(id, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
|
||||||
// }
|
alSourcei(id, AL.AL_DIRECT_FILTER, AL.AL_FILTER_NULL);
|
||||||
// break;
|
}
|
||||||
|
break;
|
||||||
case Looping:
|
case Looping:
|
||||||
if (src.isLooping()) {
|
if (src.isLooping()) {
|
||||||
if (!(src.getAudioData() instanceof AudioStream)) {
|
if (!(src.getAudioData() instanceof AudioStream)) {
|
||||||
@ -534,17 +552,19 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE);
|
alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
|
|
||||||
// if (src.isReverbEnabled() && supportEfx) {
|
if (src.isReverbEnabled() && supportEfx) {
|
||||||
//int filter = EFX10.AL_FILTER_NULL;
|
//int filter = EFX10.AL_FILTER_NULL;
|
||||||
// if (src.getReverbFilter() != null) {
|
int filter = AL.AL_FILTER_NULL;
|
||||||
// Filter f = src.getReverbFilter();
|
if (src.getReverbFilter() != null) {
|
||||||
// if (f.isUpdateNeeded()) {
|
Filter f = src.getReverbFilter();
|
||||||
// updateFilter(f);
|
if (f.isUpdateNeeded()) {
|
||||||
// }
|
updateFilter(f);
|
||||||
// filter = f.getId();
|
}
|
||||||
// }
|
filter = f.getId();
|
||||||
|
}
|
||||||
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
|
//AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
|
||||||
// }
|
alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// play in headspace
|
// play in headspace
|
||||||
//alSourcei(id, AL_SOURCE_RELATIVE, AL_TRUE);
|
//alSourcei(id, AL_SOURCE_RELATIVE, AL_TRUE);
|
||||||
@ -558,16 +578,17 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
checkError(true);
|
checkError(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (src.getDryFilter() != null && supportEfx) {
|
if (src.getDryFilter() != null && supportEfx) {
|
||||||
// Filter f = src.getDryFilter();
|
Filter f = src.getDryFilter();
|
||||||
// if (f.isUpdateNeeded()) {
|
if (f.isUpdateNeeded()) {
|
||||||
// updateFilter(f);
|
updateFilter(f);
|
||||||
//
|
|
||||||
// // NOTE: must re-attach filter for changes to apply.
|
// NOTE: must re-attach filter for changes to apply.
|
||||||
//alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
|
//alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
|
||||||
// }
|
alSourcei(id, AL.AL_DIRECT_FILTER, f.getId());
|
||||||
// }
|
}
|
||||||
//
|
}
|
||||||
|
|
||||||
if (forceNonLoop) {
|
if (forceNonLoop) {
|
||||||
//alSourcei(id, AL_LOOPING, AL_FALSE);
|
//alSourcei(id, AL_LOOPING, AL_FALSE);
|
||||||
alSourcei(id, AL.AL_LOOPING, AL.AL_FALSE);
|
alSourcei(id, AL.AL_LOOPING, AL.AL_FALSE);
|
||||||
@ -716,25 +737,37 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DENSITY, env.getDensity());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DENSITY, env.getDensity());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_DENSITY, env.getDensity());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DIFFUSION, env.getDiffusion());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DIFFUSION, env.getDiffusion());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_DIFFUSION, env.getDiffusion());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAIN, env.getGain());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAIN, env.getGain());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_GAIN, env.getGain());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAINHF, env.getGainHf());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAINHF, env.getGainHf());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_GAINHF, env.getGainHf());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_TIME, env.getDecayTime());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_TIME, env.getDecayTime());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_DECAY_TIME, env.getDecayTime());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf());
|
||||||
|
alEffectf(reverbFx, AL.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf());
|
||||||
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor());
|
//EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor());
|
||||||
//
|
alEffectf(reverbFx, AL.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor());
|
||||||
// // attach effect to slot
|
|
||||||
|
// attach effect to slot
|
||||||
//EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
|
//EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
|
||||||
|
alAuxiliaryEffectSloti(reverbFxSlot, AL.AL_EFFECTSLOT_EFFECT, reverbFx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean fillBuffer(AudioStream stream, int id) {
|
private boolean fillBuffer(AudioStream stream, int id) {
|
||||||
// logger.log(Level.INFO, "fillBuffer for id: {0}", id);
|
|
||||||
int size = 0;
|
int size = 0;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
@ -748,9 +781,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// logger.log(Level.INFO, "data for buffer: {0} is size: {1}",
|
|
||||||
// new Object[]{id, size});
|
|
||||||
|
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -767,7 +797,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean fillStreamingSource(int sourceId, AudioStream stream) {
|
private boolean fillStreamingSource(int sourceId, AudioStream stream) {
|
||||||
// logger.log(Level.INFO, "fillStreamingSource for source: {0}", sourceId);
|
|
||||||
if (!stream.isOpen()) {
|
if (!stream.isOpen()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -775,7 +804,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
boolean active = true;
|
boolean active = true;
|
||||||
//int processed = alGetSourcei(sourceId, AL_BUFFERS_PROCESSED);
|
//int processed = alGetSourcei(sourceId, AL_BUFFERS_PROCESSED);
|
||||||
int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED);
|
int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED);
|
||||||
// logger.log(Level.INFO, "fillStreamingSource buffers processed: {0}", processed);
|
|
||||||
checkError(true);
|
checkError(true);
|
||||||
|
|
||||||
//while((processed--) != 0){
|
//while((processed--) != 0){
|
||||||
@ -783,19 +811,15 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
int buffer;
|
int buffer;
|
||||||
|
|
||||||
ib.position(0).limit(1);
|
ib.position(0).limit(1);
|
||||||
// logger.log(Level.INFO, "fillStreamingSource alSourceUnqueueBuffers for source: {0}", sourceId);
|
|
||||||
//alSourceUnqueueBuffers(sourceId, ib);
|
//alSourceUnqueueBuffers(sourceId, ib);
|
||||||
alSourceUnqueueBuffers(sourceId, 1, ib);
|
alSourceUnqueueBuffers(sourceId, 1, ib);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
buffer = ib.get(0);
|
buffer = ib.get(0);
|
||||||
// logger.log(Level.INFO, "fillStreamingSource bufferID: {0}", buffer);
|
|
||||||
|
|
||||||
active = fillBuffer(stream, buffer);
|
active = fillBuffer(stream, buffer);
|
||||||
|
|
||||||
ib.position(0).limit(1);
|
ib.position(0).limit(1);
|
||||||
ib.put(0, buffer);
|
ib.put(0, buffer);
|
||||||
// logger.log(Level.INFO, "fillStreamingSource alSourceQueueBuffers for source: {0}, buffer: {1}",
|
|
||||||
// new Object[]{sourceId, buffer});
|
|
||||||
//alSourceQueueBuffers(sourceId, ib);
|
//alSourceQueueBuffers(sourceId, ib);
|
||||||
alSourceQueueBuffers(sourceId, 1, ib);
|
alSourceQueueBuffers(sourceId, 1, ib);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
@ -809,7 +833,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean attachStreamToSource(int sourceId, AudioStream stream) {
|
private boolean attachStreamToSource(int sourceId, AudioStream stream) {
|
||||||
// logger.log(Level.INFO, "attachStreamToSource for source: {0}", sourceId);
|
|
||||||
boolean active = true;
|
boolean active = true;
|
||||||
int activeBufferCount = 0;
|
int activeBufferCount = 0;
|
||||||
for (int id : stream.getIds()) {
|
for (int id : stream.getIds()) {
|
||||||
@ -822,8 +845,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
// does not return (crashes) so that the error code can be checked.
|
// does not return (crashes) so that the error code can be checked.
|
||||||
// active is FALSE when the data size is 0
|
// active is FALSE when the data size is 0
|
||||||
if (active) {
|
if (active) {
|
||||||
// logger.log(Level.INFO, "attachStreamToSource alSourceQueueBuffers for source: {0}, buffer: {1}",
|
|
||||||
// new Object[]{sourceId, id});
|
|
||||||
alSourceQueueBuffers(sourceId, 1, ib);
|
alSourceQueueBuffers(sourceId, 1, ib);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
activeBufferCount++;
|
activeBufferCount++;
|
||||||
@ -837,15 +858,11 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
for (int i=0; i<STREAMING_BUFFER_COUNT; i++) {
|
for (int i=0; i<STREAMING_BUFFER_COUNT; i++) {
|
||||||
if (i < activeBufferCount) {
|
if (i < activeBufferCount) {
|
||||||
newIds[i] = stream.getIds()[i];
|
newIds[i] = stream.getIds()[i];
|
||||||
// logger.log(Level.INFO, "newIds[{0}] = {1}",
|
|
||||||
// new Object[]{i, newIds[i]});
|
|
||||||
} else {
|
} else {
|
||||||
ib.clear();
|
ib.clear();
|
||||||
ib.put(stream.getIds()[i]).limit(1).flip();
|
ib.put(stream.getIds()[i]).limit(1).flip();
|
||||||
alDeleteBuffers(1, ib);
|
alDeleteBuffers(1, ib);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
// logger.log(Level.INFO, "deleting buffer at index[{0}] = {1}",
|
|
||||||
// new Object[]{i, stream.getIds()[i]});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -863,7 +880,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean attachAudioToSource(int sourceId, AudioData data) {
|
private boolean attachAudioToSource(int sourceId, AudioData data) {
|
||||||
// logger.log(Level.INFO, "attachAudioToSource for data type: {0}", data.getClass().getName());
|
|
||||||
if (data instanceof AudioBuffer) {
|
if (data instanceof AudioBuffer) {
|
||||||
return attachBufferToSource(sourceId, (AudioBuffer) data);
|
return attachBufferToSource(sourceId, (AudioBuffer) data);
|
||||||
} else if (data instanceof AudioStream) {
|
} else if (data instanceof AudioStream) {
|
||||||
@ -873,28 +889,21 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void clearChannel(int index) {
|
private void clearChannel(int index) {
|
||||||
// logger.log(Level.INFO, "Clearing channel for index: {0}", index);
|
|
||||||
// make room at this channel
|
// make room at this channel
|
||||||
if (chanSrcs[index] != null) {
|
if (chanSrcs[index] != null) {
|
||||||
AudioSource src = chanSrcs[index];
|
AudioSource src = chanSrcs[index];
|
||||||
|
|
||||||
int sourceId = channels[index];
|
int sourceId = channels[index];
|
||||||
// logger.log(Level.INFO, "Stopping source: {0} in clearChannel", sourceId);
|
|
||||||
alSourceStop(sourceId);
|
alSourceStop(sourceId);
|
||||||
|
|
||||||
if (src.getAudioData() instanceof AudioStream) {
|
if (src.getAudioData() instanceof AudioStream) {
|
||||||
AudioStream str = (AudioStream) src.getAudioData();
|
AudioStream str = (AudioStream) src.getAudioData();
|
||||||
// logger.log(Level.INFO, "source is a stream with numBuffers: {0}", str.getIds().length);
|
|
||||||
for (int i=0; i<str.getIds().length; i++) {
|
for (int i=0; i<str.getIds().length; i++) {
|
||||||
// logger.log(Level.INFO, "id[{0}]: {1}",
|
|
||||||
// new Object[]{i, str.getIds()[i]});
|
|
||||||
}
|
}
|
||||||
//ib.position(0).limit(STREAMING_BUFFER_COUNT);
|
//ib.position(0).limit(STREAMING_BUFFER_COUNT);
|
||||||
ib.position(0).limit(str.getIds().length);
|
ib.position(0).limit(str.getIds().length);
|
||||||
ib.put(str.getIds()).flip();
|
ib.put(str.getIds()).flip();
|
||||||
// logger.log(Level.INFO, "clearChannel alSourceUnqueueBuffers for source: {0}", sourceId);
|
|
||||||
int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED);
|
int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED);
|
||||||
// logger.log(Level.INFO, "clearChannels buffers processed: {0}", processed);
|
|
||||||
//alSourceUnqueueBuffers(sourceId, ib);
|
//alSourceUnqueueBuffers(sourceId, ib);
|
||||||
alSourceUnqueueBuffers(sourceId, processed, ib);
|
alSourceUnqueueBuffers(sourceId, processed, ib);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
@ -907,11 +916,13 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
if (src.getDryFilter() != null && supportEfx) {
|
if (src.getDryFilter() != null && supportEfx) {
|
||||||
// detach filter
|
// detach filter
|
||||||
//alSourcei(sourceId, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
|
//alSourcei(sourceId, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
|
||||||
|
alSourcei(sourceId, AL.AL_DIRECT_FILTER, AL.AL_FILTER_NULL);
|
||||||
}
|
}
|
||||||
if (src.isPositional()) {
|
if (src.isPositional()) {
|
||||||
AudioSource pas = (AudioSource) src;
|
AudioSource pas = (AudioSource) src;
|
||||||
if (pas.isReverbEnabled() && supportEfx) {
|
if (pas.isReverbEnabled() && supportEfx) {
|
||||||
//AL11.alSource3i(sourceId, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
|
//AL11.alSource3i(sourceId, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
|
||||||
|
alSource3i(sourceId, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -949,29 +960,20 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
//int state = alGetSourcei(sourceId, AL_SOURCE_STATE);
|
//int state = alGetSourcei(sourceId, AL_SOURCE_STATE);
|
||||||
int state = alGetSourcei(sourceId, AL.AL_SOURCE_STATE);
|
int state = alGetSourcei(sourceId, AL.AL_SOURCE_STATE);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
// logger.log(Level.INFO, "source: {0}, state: {1}",
|
|
||||||
// new Object[]{sourceId, state});
|
|
||||||
boolean wantPlaying = src.getStatus() == Status.Playing;
|
boolean wantPlaying = src.getStatus() == Status.Playing;
|
||||||
// logger.log(Level.INFO, "sourceId: {0}, wantPlaying: {1}",
|
|
||||||
// new Object[]{sourceId, wantPlaying});
|
|
||||||
//boolean stopped = state == AL_STOPPED;
|
//boolean stopped = state == AL_STOPPED;
|
||||||
boolean stopped = state == AL.AL_STOPPED;
|
boolean stopped = state == AL.AL_STOPPED;
|
||||||
// logger.log(Level.INFO, "sourceId: {0}, stopped: {1}",
|
|
||||||
// new Object[]{sourceId, stopped});
|
|
||||||
|
|
||||||
if (streaming && wantPlaying) {
|
if (streaming && wantPlaying) {
|
||||||
AudioStream stream = (AudioStream) src.getAudioData();
|
AudioStream stream = (AudioStream) src.getAudioData();
|
||||||
if (stream.isOpen()) {
|
if (stream.isOpen()) {
|
||||||
// logger.log(Level.INFO, "stream is open && want playing for source: {0}", sourceId);
|
|
||||||
fillStreamingSource(sourceId, stream);
|
fillStreamingSource(sourceId, stream);
|
||||||
if (stopped) {
|
if (stopped) {
|
||||||
// logger.log(Level.INFO, "source: {0} stopped, set playstate", sourceId);
|
|
||||||
alSourcePlay(sourceId);
|
alSourcePlay(sourceId);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (stopped) {
|
if (stopped) {
|
||||||
// logger.log(Level.INFO, "stream is not open && want playing for source: {0}", sourceId);
|
|
||||||
// became inactive
|
// became inactive
|
||||||
src.setStatus(Status.Stopped);
|
src.setStatus(Status.Stopped);
|
||||||
src.setChannel(-1);
|
src.setChannel(-1);
|
||||||
@ -986,8 +988,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
} else if (!streaming) {
|
} else if (!streaming) {
|
||||||
//boolean paused = state == AL_PAUSED;
|
//boolean paused = state == AL_PAUSED;
|
||||||
boolean paused = state == AL.AL_PAUSED;
|
boolean paused = state == AL.AL_PAUSED;
|
||||||
// logger.log(Level.INFO, "source: {0}, pause: {1}",
|
|
||||||
// new Object[]{sourceId, paused});
|
|
||||||
|
|
||||||
// make sure OAL pause state & source state coincide
|
// make sure OAL pause state & source state coincide
|
||||||
assert (src.getStatus() == Status.Paused && paused) || (!paused);
|
assert (src.getStatus() == Status.Paused && paused) || (!paused);
|
||||||
@ -1052,7 +1052,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (src.getAudioData().isUpdateNeeded()) {
|
if (src.getAudioData().isUpdateNeeded()) {
|
||||||
// logger.log(Level.INFO, "Calling updateAudioData from playSourceInstance");
|
|
||||||
updateAudioData(src.getAudioData());
|
updateAudioData(src.getAudioData());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1064,14 +1063,10 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
|
|
||||||
int sourceId = channels[index];
|
int sourceId = channels[index];
|
||||||
|
|
||||||
// logger.log(Level.INFO, "Calling clearChannel for index[{0}] from playSourceInstance", index);
|
|
||||||
clearChannel(index);
|
clearChannel(index);
|
||||||
|
|
||||||
// set parameters, like position and max distance
|
// set parameters, like position and max distance
|
||||||
// logger.log(Level.INFO, "Calling setSourceParams for sourceID: {0} from playSourceInstance", index);
|
|
||||||
setSourceParams(sourceId, src, true);
|
setSourceParams(sourceId, src, true);
|
||||||
// logger.log(Level.INFO, "Calling attachAudioToSource for sourceID: {0} and data audiodata id: {1} from playSourceInstance",
|
|
||||||
// new Object[]{sourceId, src.getAudioData().getId()});
|
|
||||||
attachAudioToSource(sourceId, src.getAudioData());
|
attachAudioToSource(sourceId, src.getAudioData());
|
||||||
chanSrcs[index] = src;
|
chanSrcs[index] = src;
|
||||||
|
|
||||||
@ -1126,7 +1121,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void pauseSource(AudioSource src) {
|
public void pauseSource(AudioSource src) {
|
||||||
// logger.log(Level.INFO, "pauseSource");
|
|
||||||
checkDead();
|
checkDead();
|
||||||
synchronized (threadLock) {
|
synchronized (threadLock) {
|
||||||
while (!threadLock.get()) {
|
while (!threadLock.get()) {
|
||||||
@ -1139,7 +1133,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// logger.log(Level.INFO, "source is playing: {0}", src.getStatus() == Status.Playing);
|
|
||||||
if (src.getStatus() == Status.Playing) {
|
if (src.getStatus() == Status.Playing) {
|
||||||
assert src.getChannel() != -1;
|
assert src.getChannel() != -1;
|
||||||
|
|
||||||
@ -1212,18 +1205,15 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
|
|
||||||
private void updateAudioBuffer(AudioBuffer ab) {
|
private void updateAudioBuffer(AudioBuffer ab) {
|
||||||
int id = ab.getId();
|
int id = ab.getId();
|
||||||
// logger.log(Level.INFO, "updateAudioBuffer for buffer id: {0}", id);
|
|
||||||
if (ab.getId() == -1) {
|
if (ab.getId() == -1) {
|
||||||
ib.position(0).limit(1);
|
ib.position(0).limit(1);
|
||||||
alGenBuffers(1, ib);
|
alGenBuffers(1, ib);
|
||||||
checkError(true);
|
checkError(true);
|
||||||
id = ib.get(0);
|
id = ib.get(0);
|
||||||
ab.setId(id);
|
ab.setId(id);
|
||||||
// logger.log(Level.INFO, "Generated Buffer: {0}", id);
|
|
||||||
|
|
||||||
objManager.registerForCleanup(ab);
|
objManager.registerForCleanup(ab);
|
||||||
}
|
}
|
||||||
// logger.log(Level.INFO, "updateAudioBuffer new buffer id: {0}", id);
|
|
||||||
|
|
||||||
ab.getData().clear();
|
ab.getData().clear();
|
||||||
//alBufferData(id, convertFormat(ab), ab.getData(), ab.getSampleRate());
|
//alBufferData(id, convertFormat(ab), ab.getData(), ab.getSampleRate());
|
||||||
@ -1233,7 +1223,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateAudioStream(AudioStream as) {
|
private void updateAudioStream(AudioStream as) {
|
||||||
// logger.log(Level.INFO, "updateAudioStream");
|
|
||||||
if (as.getIds() != null) {
|
if (as.getIds() != null) {
|
||||||
deleteAudioData(as);
|
deleteAudioData(as);
|
||||||
}
|
}
|
||||||
@ -1245,9 +1234,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
checkError(true);
|
checkError(true);
|
||||||
ib.position(0).limit(STREAMING_BUFFER_COUNT);
|
ib.position(0).limit(STREAMING_BUFFER_COUNT);
|
||||||
ib.get(ids);
|
ib.get(ids);
|
||||||
// for (int i=0; i<ids.length; i++) {
|
|
||||||
// logger.log(Level.INFO, "Generated Streaming Buffer: {0}", ids[i]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Not registered with object manager.
|
// Not registered with object manager.
|
||||||
// AudioStreams can be handled without object manager
|
// AudioStreams can be handled without object manager
|
||||||
@ -1269,19 +1255,13 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
int id = filter.getId();
|
int id = filter.getId();
|
||||||
if (id != -1) {
|
if (id != -1) {
|
||||||
//EFX10.alDeleteFilters(id);
|
//EFX10.alDeleteFilters(id);
|
||||||
|
ib.put(0, id);
|
||||||
|
ib.position(0).limit(1);
|
||||||
|
alDeleteFilters(1, ib);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteAudioData(AudioData ad) {
|
public void deleteAudioData(AudioData ad) {
|
||||||
// if (ad instanceof AudioStream) {
|
|
||||||
// AudioStream as = (AudioStream) ad;
|
|
||||||
// int[] ids = as.getIds();
|
|
||||||
// for (int i=0; i<ids.length; i++) {
|
|
||||||
// logger.log(Level.INFO, "deleteAudioData for stream buffer: {0}", ids[i]);
|
|
||||||
// }
|
|
||||||
// } else if (ad instanceof AudioBuffer) {
|
|
||||||
// logger.log(Level.INFO, "deleteAudioData for buffer: {0}", ad.getId());
|
|
||||||
// }
|
|
||||||
synchronized (threadLock) {
|
synchronized (threadLock) {
|
||||||
while (!threadLock.get()) {
|
while (!threadLock.get()) {
|
||||||
try {
|
try {
|
||||||
@ -1322,8 +1302,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
private int checkError(boolean stopOnError) {
|
private int checkError(boolean stopOnError) {
|
||||||
int errorCode = alGetError();
|
int errorCode = alGetError();
|
||||||
String errorText = AL.GetALErrorMsg(errorCode);
|
String errorText = AL.GetALErrorMsg(errorCode);
|
||||||
// logger.log(Level.INFO, "alError Code: {0}, Description: {1}",
|
|
||||||
// new Object[]{errorCode, errorText});
|
|
||||||
|
|
||||||
if (errorCode != AL.AL_NO_ERROR && stopOnError) {
|
if (errorCode != AL.AL_NO_ERROR && stopOnError) {
|
||||||
throw new IllegalStateException("AL Error Detected. Error Code: " + errorCode + ": " + errorText);
|
throw new IllegalStateException("AL Error Detected. Error Code: " + errorCode + ": " + errorText);
|
||||||
@ -1356,12 +1334,24 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
|
|||||||
public static native void alListener(int param, FloatBuffer data);
|
public static native void alListener(int param, FloatBuffer data);
|
||||||
public static native void alListenerf(int param, float value);
|
public static native void alListenerf(int param, float value);
|
||||||
public static native void alListener3f(int param, float value1, float value2, float value3);
|
public static native void alListener3f(int param, float value1, float value2, float value3);
|
||||||
|
public static native boolean alcIsExtensionPresent(String extension);
|
||||||
|
public static native void alcGetInteger(int param, IntBuffer buffer, int size);
|
||||||
|
public static native void alGenAuxiliaryEffectSlots(int numSlots, IntBuffer buffers);
|
||||||
|
public static native void alGenEffects(int numEffects, IntBuffer buffers);
|
||||||
|
public static native void alEffecti(int effect, int param, int value);
|
||||||
|
public static native void alAuxiliaryEffectSloti(int effectSlot, int param, int value);
|
||||||
|
public static native void alDeleteEffects(int numEffects, IntBuffer buffers);
|
||||||
|
public static native void alDeleteAuxiliaryEffectSlots(int numEffectSlots, IntBuffer buffers);
|
||||||
|
public static native void alGenFilters(int numFilters, IntBuffer buffers);
|
||||||
|
public static native void alFilteri(int filter, int param, int value);
|
||||||
|
public static native void alFilterf(int filter, int param, float value);
|
||||||
|
public static native void alSource3i(int source, int param, int value1, int value2, int value3);
|
||||||
|
public static native void alDeleteFilters(int numFilters, IntBuffer buffers);
|
||||||
|
public static native void alEffectf(int effect, int param, float value);
|
||||||
|
|
||||||
/** Load jni .so on initialization */
|
/** Load jni .so on initialization */
|
||||||
static {
|
static {
|
||||||
System.loadLibrary("openalsoftjme");
|
System.loadLibrary("openalsoftjme");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
APP_OPTIM := release
|
APP_OPTIM := release
|
||||||
APP_ABI := all
|
APP_ABI := all
|
||||||
#APP_ABI := armeabi-v7a
|
#APP_ABI := armeabi-v7a
|
||||||
#APP_ABI += armeabi
|
|
||||||
|
@ -324,8 +324,158 @@ JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRendere
|
|||||||
alListener3f((ALenum)param, (ALfloat)value1, (ALfloat)value2, (ALfloat)value3);
|
alListener3f((ALenum)param, (ALfloat)value1, (ALfloat)value2, (ALfloat)value3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcIsExtensionPresent
|
||||||
|
(JNIEnv* env, jclass, jstring extension)
|
||||||
|
{
|
||||||
|
|
||||||
|
ALCdevice *device;
|
||||||
|
ALCcontext *ctx;
|
||||||
|
ALboolean result;
|
||||||
|
// char buf[128];
|
||||||
|
const char* strExtension;
|
||||||
|
jsize strLength = env->GetStringUTFLength(extension);
|
||||||
|
|
||||||
|
ctx = alcGetCurrentContext();
|
||||||
|
if(ctx != NULL) {
|
||||||
|
device = alcGetContextsDevice(ctx);
|
||||||
|
|
||||||
|
if (device != NULL) {
|
||||||
|
strExtension = env->GetStringUTFChars(extension, NULL);
|
||||||
|
if (strExtension == NULL) {
|
||||||
|
return JNI_FALSE; /* OutOfMemoryError already thrown */
|
||||||
|
}
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcIsExtensionPresent for param: %s with size: %d", strExtension, strLength);
|
||||||
|
|
||||||
|
result = alcIsExtensionPresent(device, strExtension);
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcIsExtensionPresent found: %d", result);
|
||||||
|
|
||||||
|
env->ReleaseStringUTFChars(extension, strExtension);
|
||||||
|
|
||||||
|
return (jboolean)result;
|
||||||
|
} else {
|
||||||
|
__android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "device is null in alcIsExtensionPresent");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
__android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "current context is null in alcIsExtensionPresent");
|
||||||
|
}
|
||||||
|
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcGetInteger
|
||||||
|
(JNIEnv* env, jclass, jint param, jobject buffer, jint bufferSize)
|
||||||
|
{
|
||||||
|
ALCdevice *device;
|
||||||
|
ALCcontext *ctx;
|
||||||
|
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetInteger for param: %d", param);
|
||||||
|
ALCint* pBuffers = (ALCint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
|
||||||
|
ctx = alcGetCurrentContext();
|
||||||
|
if(ctx != NULL) {
|
||||||
|
device = alcGetContextsDevice(ctx);
|
||||||
|
|
||||||
|
if (device != NULL) {
|
||||||
|
alcGetIntegerv(device, (ALCenum)param, (ALCsizei)bufferSize, pBuffers);
|
||||||
|
} else {
|
||||||
|
__android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "device is null in alcGetInteger");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
__android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "current context is null in alcGetInteger");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenAuxiliaryEffectSlots
|
||||||
|
(JNIEnv* env, jclass, jint numSlots, jobject buffer)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenAuxiliaryEffectSlots for numSlots: %d", numSlots);
|
||||||
|
ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
alGenAuxiliaryEffectSlots((ALsizei)numSlots, pBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenEffects
|
||||||
|
(JNIEnv* env, jclass, jint numEffects, jobject buffer)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenEffects for numEffects: %d", numEffects);
|
||||||
|
ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
alGenEffects((ALsizei)numEffects, pBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffecti
|
||||||
|
(JNIEnv *, jclass, jint effect, jint param, jint value)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alEffecti for effect: %d, param: %d, value: %d", effect, param, value);
|
||||||
|
alEffecti((ALuint)effect, (ALenum)param, (ALint)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alAuxiliaryEffectSloti
|
||||||
|
(JNIEnv *, jclass, jint effectSlot, jint param, jint value)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alAuxiliaryEffectSloti for effect: %d, param: %d, value: %d", effectSlot, param, value);
|
||||||
|
alAuxiliaryEffectSloti((ALuint)effectSlot, (ALenum)param, (ALint)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteEffects
|
||||||
|
(JNIEnv* env, jclass, jint numEffects, jobject buffer)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteEffects for numEffects: %d", numEffects);
|
||||||
|
ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
alDeleteEffects((ALsizei)numEffects, pBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteAuxiliaryEffectSlots
|
||||||
|
(JNIEnv* env, jclass, jint numEffectSlots, jobject buffer)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteAuxiliaryEffectSlots for numEffectSlots: %d", numEffectSlots);
|
||||||
|
ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
alDeleteAuxiliaryEffectSlots((ALsizei)numEffectSlots, pBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenFilters
|
||||||
|
(JNIEnv* env, jclass, jint numFilters, jobject buffer)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenFilters for numFilters: %d", numFilters);
|
||||||
|
ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
alGenFilters((ALsizei)numFilters, pBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilteri
|
||||||
|
(JNIEnv *, jclass, jint filter, jint param, jint value)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alFilteri for filter: %d, param: %d, value: %d", filter, param, value);
|
||||||
|
alFilteri((ALuint)filter, (ALenum)param, (ALint)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilterf
|
||||||
|
(JNIEnv *, jclass, jint filter, jint param, jfloat value)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alFilterf for filter: %d, param: %d, value: %f", filter, param, value);
|
||||||
|
alFilterf((ALuint)filter, (ALenum)param, (ALfloat)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSource3i
|
||||||
|
(JNIEnv *, jclass, jint source, jint param, jint value1, jint value2, jint value3)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSource3i for source: %d, param: %d, value1: %d, value2: %d, value3: %d", source, param, value1, value2, value3);
|
||||||
|
alSource3i((ALuint)source, (ALenum)param, (ALint)value1, (ALint)value2, (ALint)value3);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteFilters
|
||||||
|
(JNIEnv* env, jclass, jint numFilters, jobject buffer)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteFilters for numFilters: %d", numFilters);
|
||||||
|
ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
|
||||||
|
alDeleteFilters((ALsizei)numFilters, pBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffectf
|
||||||
|
(JNIEnv *, jclass, jint effect, jint param, jfloat value)
|
||||||
|
{
|
||||||
|
// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alEffectf for effect: %d, param: %d, value: %d", effect, param, value);
|
||||||
|
alEffectf((ALuint)effect, (ALenum)param, (ALfloat)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -201,6 +201,118 @@ JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRendere
|
|||||||
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alListener3f
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alListener3f
|
||||||
(JNIEnv *, jclass, jint, jfloat, jfloat, jfloat);
|
(JNIEnv *, jclass, jint, jfloat, jfloat, jfloat);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alcIsExtensionPresent
|
||||||
|
* Signature: (Ljava/lang/String;)Z
|
||||||
|
*/
|
||||||
|
JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcIsExtensionPresent
|
||||||
|
(JNIEnv *, jclass, jstring);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alcGetInteger
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;I)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcGetInteger
|
||||||
|
(JNIEnv *, jclass, jint, jobject, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alGenAuxiliaryEffectSlots
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenAuxiliaryEffectSlots
|
||||||
|
(JNIEnv *, jclass, jint, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alGenEffects
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenEffects
|
||||||
|
(JNIEnv *, jclass, jint, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alEffecti
|
||||||
|
* Signature: (III)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffecti
|
||||||
|
(JNIEnv *, jclass, jint, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alAuxiliaryEffectSloti
|
||||||
|
* Signature: (III)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alAuxiliaryEffectSloti
|
||||||
|
(JNIEnv *, jclass, jint, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alDeleteEffects
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteEffects
|
||||||
|
(JNIEnv *, jclass, jint, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alDeleteAuxiliaryEffectSlots
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteAuxiliaryEffectSlots
|
||||||
|
(JNIEnv *, jclass, jint, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alGenFilters
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenFilters
|
||||||
|
(JNIEnv *, jclass, jint, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alFilteri
|
||||||
|
* Signature: (III)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilteri
|
||||||
|
(JNIEnv *, jclass, jint, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alFilterf
|
||||||
|
* Signature: (IIF)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilterf
|
||||||
|
(JNIEnv *, jclass, jint, jint, jfloat);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alSource3i
|
||||||
|
* Signature: (IIIII)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSource3i
|
||||||
|
(JNIEnv *, jclass, jint, jint, jint, jint, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alDeleteFilters
|
||||||
|
* Signature: (ILjava/nio/IntBuffer;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteFilters
|
||||||
|
(JNIEnv *, jclass, jint, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
|
||||||
|
* Method: alEffectf
|
||||||
|
* Signature: (IIF)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffectf
|
||||||
|
(JNIEnv *, jclass, jint, jint, jfloat);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user