• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Main repository of MikuMikuStudio


Commit MetaInfo

Revision30eec922ca0ce97b99a4e9cdc75a9e7d47c69744 (tree)
Time2013-05-12 12:15:22
Authoriwgeric@gmail.com <iwgeric@gmai...>
Commiteriwgeric@gmail.com

Log Message

Android: Add support for effects, filters, reverb, and environment to Android implementation of OpenAL Soft

git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@10609 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

Change Summary

Incremental Difference

Binary files a/engine/lib/openal-soft/jME3-openal-soft-natives-android.jar and b/engine/lib/openal-soft/jME3-openal-soft-natives-android.jar differ
Binary files a/engine/lib/openal-soft/jarcontent/armeabi-v7a/libopenalsoftjme.so and b/engine/lib/openal-soft/jarcontent/armeabi-v7a/libopenalsoftjme.so differ
Binary files a/engine/lib/openal-soft/jarcontent/armeabi/libopenalsoftjme.so and b/engine/lib/openal-soft/jarcontent/armeabi/libopenalsoftjme.so differ
Binary files a/engine/lib/openal-soft/jarcontent/x86/libopenalsoftjme.so and b/engine/lib/openal-soft/jarcontent/x86/libopenalsoftjme.so differ
--- a/engine/src/android/com/jme3/audio/android/AL.java
+++ b/engine/src/android/com/jme3/audio/android/AL.java
@@ -353,6 +353,676 @@ public class AL {
353353 static final int AL_EXPONENT_DISTANCE = 0xD005;
354354 static final int AL_EXPONENT_DISTANCE_CLAMPED = 0xD006;
355355
356+ /* ********** */
357+ /* FROM efx.h */
358+ /* ********** */
359+
360+ static final String ALC_EXT_EFX_NAME = "ALC_EXT_EFX";
361+
362+ static final int ALC_EFX_MAJOR_VERSION = 0x20001;
363+ static final int ALC_EFX_MINOR_VERSION = 0x20002;
364+ static final int ALC_MAX_AUXILIARY_SENDS = 0x20003;
365+
366+
367+///* Listener properties. */
368+//#define AL_METERS_PER_UNIT 0x20004
369+//
370+///* Source properties. */
371+ static final int AL_DIRECT_FILTER = 0x20005;
372+ static final int AL_AUXILIARY_SEND_FILTER = 0x20006;
373+//#define AL_AIR_ABSORPTION_FACTOR 0x20007
374+//#define AL_ROOM_ROLLOFF_FACTOR 0x20008
375+//#define AL_CONE_OUTER_GAINHF 0x20009
376+ static final int AL_DIRECT_FILTER_GAINHF_AUTO = 0x2000A;
377+//#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B
378+//#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C
379+//
380+//
381+///* Effect properties. */
382+//
383+///* Reverb effect parameters */
384+ static final int AL_REVERB_DENSITY = 0x0001;
385+ static final int AL_REVERB_DIFFUSION = 0x0002;
386+ static final int AL_REVERB_GAIN = 0x0003;
387+ static final int AL_REVERB_GAINHF = 0x0004;
388+ static final int AL_REVERB_DECAY_TIME = 0x0005;
389+ static final int AL_REVERB_DECAY_HFRATIO = 0x0006;
390+ static final int AL_REVERB_REFLECTIONS_GAIN = 0x0007;
391+ static final int AL_REVERB_REFLECTIONS_DELAY = 0x0008;
392+ static final int AL_REVERB_LATE_REVERB_GAIN = 0x0009;
393+ static final int AL_REVERB_LATE_REVERB_DELAY = 0x000A;
394+ static final int AL_REVERB_AIR_ABSORPTION_GAINHF = 0x000B;
395+ static final int AL_REVERB_ROOM_ROLLOFF_FACTOR = 0x000C;
396+ static final int AL_REVERB_DECAY_HFLIMIT = 0x000D;
397+
398+///* EAX Reverb effect parameters */
399+//#define AL_EAXREVERB_DENSITY 0x0001
400+//#define AL_EAXREVERB_DIFFUSION 0x0002
401+//#define AL_EAXREVERB_GAIN 0x0003
402+//#define AL_EAXREVERB_GAINHF 0x0004
403+//#define AL_EAXREVERB_GAINLF 0x0005
404+//#define AL_EAXREVERB_DECAY_TIME 0x0006
405+//#define AL_EAXREVERB_DECAY_HFRATIO 0x0007
406+//#define AL_EAXREVERB_DECAY_LFRATIO 0x0008
407+//#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009
408+//#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A
409+//#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B
410+//#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C
411+//#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D
412+//#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E
413+//#define AL_EAXREVERB_ECHO_TIME 0x000F
414+//#define AL_EAXREVERB_ECHO_DEPTH 0x0010
415+//#define AL_EAXREVERB_MODULATION_TIME 0x0011
416+//#define AL_EAXREVERB_MODULATION_DEPTH 0x0012
417+//#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013
418+//#define AL_EAXREVERB_HFREFERENCE 0x0014
419+//#define AL_EAXREVERB_LFREFERENCE 0x0015
420+//#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016
421+//#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017
422+//
423+///* Chorus effect parameters */
424+//#define AL_CHORUS_WAVEFORM 0x0001
425+//#define AL_CHORUS_PHASE 0x0002
426+//#define AL_CHORUS_RATE 0x0003
427+//#define AL_CHORUS_DEPTH 0x0004
428+//#define AL_CHORUS_FEEDBACK 0x0005
429+//#define AL_CHORUS_DELAY 0x0006
430+//
431+///* Distortion effect parameters */
432+//#define AL_DISTORTION_EDGE 0x0001
433+//#define AL_DISTORTION_GAIN 0x0002
434+//#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003
435+//#define AL_DISTORTION_EQCENTER 0x0004
436+//#define AL_DISTORTION_EQBANDWIDTH 0x0005
437+//
438+///* Echo effect parameters */
439+//#define AL_ECHO_DELAY 0x0001
440+//#define AL_ECHO_LRDELAY 0x0002
441+//#define AL_ECHO_DAMPING 0x0003
442+//#define AL_ECHO_FEEDBACK 0x0004
443+//#define AL_ECHO_SPREAD 0x0005
444+//
445+///* Flanger effect parameters */
446+//#define AL_FLANGER_WAVEFORM 0x0001
447+//#define AL_FLANGER_PHASE 0x0002
448+//#define AL_FLANGER_RATE 0x0003
449+//#define AL_FLANGER_DEPTH 0x0004
450+//#define AL_FLANGER_FEEDBACK 0x0005
451+//#define AL_FLANGER_DELAY 0x0006
452+//
453+///* Frequency shifter effect parameters */
454+//#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001
455+//#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002
456+//#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003
457+//
458+///* Vocal morpher effect parameters */
459+//#define AL_VOCAL_MORPHER_PHONEMEA 0x0001
460+//#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002
461+//#define AL_VOCAL_MORPHER_PHONEMEB 0x0003
462+//#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004
463+//#define AL_VOCAL_MORPHER_WAVEFORM 0x0005
464+//#define AL_VOCAL_MORPHER_RATE 0x0006
465+//
466+///* Pitchshifter effect parameters */
467+//#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001
468+//#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002
469+//
470+///* Ringmodulator effect parameters */
471+//#define AL_RING_MODULATOR_FREQUENCY 0x0001
472+//#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002
473+//#define AL_RING_MODULATOR_WAVEFORM 0x0003
474+//
475+///* Autowah effect parameters */
476+//#define AL_AUTOWAH_ATTACK_TIME 0x0001
477+//#define AL_AUTOWAH_RELEASE_TIME 0x0002
478+//#define AL_AUTOWAH_RESONANCE 0x0003
479+//#define AL_AUTOWAH_PEAK_GAIN 0x0004
480+//
481+///* Compressor effect parameters */
482+//#define AL_COMPRESSOR_ONOFF 0x0001
483+//
484+///* Equalizer effect parameters */
485+//#define AL_EQUALIZER_LOW_GAIN 0x0001
486+//#define AL_EQUALIZER_LOW_CUTOFF 0x0002
487+//#define AL_EQUALIZER_MID1_GAIN 0x0003
488+//#define AL_EQUALIZER_MID1_CENTER 0x0004
489+//#define AL_EQUALIZER_MID1_WIDTH 0x0005
490+//#define AL_EQUALIZER_MID2_GAIN 0x0006
491+//#define AL_EQUALIZER_MID2_CENTER 0x0007
492+//#define AL_EQUALIZER_MID2_WIDTH 0x0008
493+//#define AL_EQUALIZER_HIGH_GAIN 0x0009
494+//#define AL_EQUALIZER_HIGH_CUTOFF 0x000A
495+//
496+///* Effect type */
497+//#define AL_EFFECT_FIRST_PARAMETER 0x0000
498+//#define AL_EFFECT_LAST_PARAMETER 0x8000
499+ static final int AL_EFFECT_TYPE = 0x8001;
500+//
501+///* Effect types, used with the AL_EFFECT_TYPE property */
502+//#define AL_EFFECT_NULL 0x0000
503+ static final int AL_EFFECT_REVERB = 0x0001;
504+//#define AL_EFFECT_CHORUS 0x0002
505+//#define AL_EFFECT_DISTORTION 0x0003
506+//#define AL_EFFECT_ECHO 0x0004
507+//#define AL_EFFECT_FLANGER 0x0005
508+//#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
509+//#define AL_EFFECT_VOCAL_MORPHER 0x0007
510+//#define AL_EFFECT_PITCH_SHIFTER 0x0008
511+//#define AL_EFFECT_RING_MODULATOR 0x0009
512+//#define AL_EFFECT_AUTOWAH 0x000A
513+//#define AL_EFFECT_COMPRESSOR 0x000B
514+//#define AL_EFFECT_EQUALIZER 0x000C
515+//#define AL_EFFECT_EAXREVERB 0x8000
516+//
517+///* Auxiliary Effect Slot properties. */
518+ static final int AL_EFFECTSLOT_EFFECT = 0x0001;
519+//#define AL_EFFECTSLOT_GAIN 0x0002
520+//#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
521+//
522+///* NULL Auxiliary Slot ID to disable a source send. */
523+//#define AL_EFFECTSLOT_NULL 0x0000
524+//
525+//
526+///* Filter properties. */
527+//
528+///* Lowpass filter parameters */
529+ static final int AL_LOWPASS_GAIN = 0x0001;
530+ static final int AL_LOWPASS_GAINHF = 0x0002;
531+//
532+///* Highpass filter parameters */
533+//#define AL_HIGHPASS_GAIN 0x0001
534+//#define AL_HIGHPASS_GAINLF 0x0002
535+//
536+///* Bandpass filter parameters */
537+//#define AL_BANDPASS_GAIN 0x0001
538+//#define AL_BANDPASS_GAINLF 0x0002
539+//#define AL_BANDPASS_GAINHF 0x0003
540+//
541+///* Filter type */
542+//#define AL_FILTER_FIRST_PARAMETER 0x0000
543+//#define AL_FILTER_LAST_PARAMETER 0x8000
544+ static final int AL_FILTER_TYPE = 0x8001;
545+//
546+///* Filter types, used with the AL_FILTER_TYPE property */
547+ static final int AL_FILTER_NULL = 0x0000;
548+ static final int AL_FILTER_LOWPASS = 0x0001;
549+ static final int AL_FILTER_HIGHPASS = 0x0002;
550+//#define AL_FILTER_BANDPASS 0x0003
551+//
552+///* Filter ranges and defaults. */
553+//
554+///* Lowpass filter */
555+//#define AL_LOWPASS_MIN_GAIN (0.0f)
556+//#define AL_LOWPASS_MAX_GAIN (1.0f)
557+//#define AL_LOWPASS_DEFAULT_GAIN (1.0f)
558+//
559+//#define AL_LOWPASS_MIN_GAINHF (0.0f)
560+//#define AL_LOWPASS_MAX_GAINHF (1.0f)
561+//#define AL_LOWPASS_DEFAULT_GAINHF (1.0f)
562+//
563+///* Highpass filter */
564+//#define AL_HIGHPASS_MIN_GAIN (0.0f)
565+//#define AL_HIGHPASS_MAX_GAIN (1.0f)
566+//#define AL_HIGHPASS_DEFAULT_GAIN (1.0f)
567+//
568+//#define AL_HIGHPASS_MIN_GAINLF (0.0f)
569+//#define AL_HIGHPASS_MAX_GAINLF (1.0f)
570+//#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f)
571+//
572+///* Bandpass filter */
573+//#define AL_BANDPASS_MIN_GAIN (0.0f)
574+//#define AL_BANDPASS_MAX_GAIN (1.0f)
575+//#define AL_BANDPASS_DEFAULT_GAIN (1.0f)
576+//
577+//#define AL_BANDPASS_MIN_GAINHF (0.0f)
578+//#define AL_BANDPASS_MAX_GAINHF (1.0f)
579+//#define AL_BANDPASS_DEFAULT_GAINHF (1.0f)
580+//
581+//#define AL_BANDPASS_MIN_GAINLF (0.0f)
582+//#define AL_BANDPASS_MAX_GAINLF (1.0f)
583+//#define AL_BANDPASS_DEFAULT_GAINLF (1.0f)
584+//
585+//
586+///* Effect parameter ranges and defaults. */
587+//
588+///* Standard reverb effect */
589+//#define AL_REVERB_MIN_DENSITY (0.0f)
590+//#define AL_REVERB_MAX_DENSITY (1.0f)
591+//#define AL_REVERB_DEFAULT_DENSITY (1.0f)
592+//
593+//#define AL_REVERB_MIN_DIFFUSION (0.0f)
594+//#define AL_REVERB_MAX_DIFFUSION (1.0f)
595+//#define AL_REVERB_DEFAULT_DIFFUSION (1.0f)
596+//
597+//#define AL_REVERB_MIN_GAIN (0.0f)
598+//#define AL_REVERB_MAX_GAIN (1.0f)
599+//#define AL_REVERB_DEFAULT_GAIN (0.32f)
600+//
601+//#define AL_REVERB_MIN_GAINHF (0.0f)
602+//#define AL_REVERB_MAX_GAINHF (1.0f)
603+//#define AL_REVERB_DEFAULT_GAINHF (0.89f)
604+//
605+//#define AL_REVERB_MIN_DECAY_TIME (0.1f)
606+//#define AL_REVERB_MAX_DECAY_TIME (20.0f)
607+//#define AL_REVERB_DEFAULT_DECAY_TIME (1.49f)
608+//
609+//#define AL_REVERB_MIN_DECAY_HFRATIO (0.1f)
610+//#define AL_REVERB_MAX_DECAY_HFRATIO (2.0f)
611+//#define AL_REVERB_DEFAULT_DECAY_HFRATIO (0.83f)
612+//
613+//#define AL_REVERB_MIN_REFLECTIONS_GAIN (0.0f)
614+//#define AL_REVERB_MAX_REFLECTIONS_GAIN (3.16f)
615+//#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN (0.05f)
616+//
617+//#define AL_REVERB_MIN_REFLECTIONS_DELAY (0.0f)
618+//#define AL_REVERB_MAX_REFLECTIONS_DELAY (0.3f)
619+//#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY (0.007f)
620+//
621+//#define AL_REVERB_MIN_LATE_REVERB_GAIN (0.0f)
622+//#define AL_REVERB_MAX_LATE_REVERB_GAIN (10.0f)
623+//#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN (1.26f)
624+//
625+//#define AL_REVERB_MIN_LATE_REVERB_DELAY (0.0f)
626+//#define AL_REVERB_MAX_LATE_REVERB_DELAY (0.1f)
627+//#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY (0.011f)
628+//
629+//#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f)
630+//#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f)
631+//#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
632+//
633+//#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
634+//#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
635+//#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
636+//
637+//#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE
638+//#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE
639+//#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
640+//
641+///* EAX reverb effect */
642+//#define AL_EAXREVERB_MIN_DENSITY (0.0f)
643+//#define AL_EAXREVERB_MAX_DENSITY (1.0f)
644+//#define AL_EAXREVERB_DEFAULT_DENSITY (1.0f)
645+//
646+//#define AL_EAXREVERB_MIN_DIFFUSION (0.0f)
647+//#define AL_EAXREVERB_MAX_DIFFUSION (1.0f)
648+//#define AL_EAXREVERB_DEFAULT_DIFFUSION (1.0f)
649+//
650+//#define AL_EAXREVERB_MIN_GAIN (0.0f)
651+//#define AL_EAXREVERB_MAX_GAIN (1.0f)
652+//#define AL_EAXREVERB_DEFAULT_GAIN (0.32f)
653+//
654+//#define AL_EAXREVERB_MIN_GAINHF (0.0f)
655+//#define AL_EAXREVERB_MAX_GAINHF (1.0f)
656+//#define AL_EAXREVERB_DEFAULT_GAINHF (0.89f)
657+//
658+//#define AL_EAXREVERB_MIN_GAINLF (0.0f)
659+//#define AL_EAXREVERB_MAX_GAINLF (1.0f)
660+//#define AL_EAXREVERB_DEFAULT_GAINLF (1.0f)
661+//
662+//#define AL_EAXREVERB_MIN_DECAY_TIME (0.1f)
663+//#define AL_EAXREVERB_MAX_DECAY_TIME (20.0f)
664+//#define AL_EAXREVERB_DEFAULT_DECAY_TIME (1.49f)
665+//
666+//#define AL_EAXREVERB_MIN_DECAY_HFRATIO (0.1f)
667+//#define AL_EAXREVERB_MAX_DECAY_HFRATIO (2.0f)
668+//#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO (0.83f)
669+//
670+//#define AL_EAXREVERB_MIN_DECAY_LFRATIO (0.1f)
671+//#define AL_EAXREVERB_MAX_DECAY_LFRATIO (2.0f)
672+//#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO (1.0f)
673+//
674+//#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN (0.0f)
675+//#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN (3.16f)
676+//#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN (0.05f)
677+//
678+//#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY (0.0f)
679+//#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY (0.3f)
680+//#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY (0.007f)
681+//
682+//#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f)
683+//
684+//#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN (0.0f)
685+//#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN (10.0f)
686+//#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN (1.26f)
687+//
688+//#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY (0.0f)
689+//#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY (0.1f)
690+//#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY (0.011f)
691+//
692+//#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f)
693+//
694+//#define AL_EAXREVERB_MIN_ECHO_TIME (0.075f)
695+//#define AL_EAXREVERB_MAX_ECHO_TIME (0.25f)
696+//#define AL_EAXREVERB_DEFAULT_ECHO_TIME (0.25f)
697+//
698+//#define AL_EAXREVERB_MIN_ECHO_DEPTH (0.0f)
699+//#define AL_EAXREVERB_MAX_ECHO_DEPTH (1.0f)
700+//#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH (0.0f)
701+//
702+//#define AL_EAXREVERB_MIN_MODULATION_TIME (0.04f)
703+//#define AL_EAXREVERB_MAX_MODULATION_TIME (4.0f)
704+//#define AL_EAXREVERB_DEFAULT_MODULATION_TIME (0.25f)
705+//
706+//#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f)
707+//#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f)
708+//#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f)
709+//
710+//#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f)
711+//#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f)
712+//#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
713+//
714+//#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f)
715+//#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f)
716+//#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f)
717+//
718+//#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f)
719+//#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f)
720+//#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f)
721+//
722+//#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
723+//#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
724+//#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
725+//
726+//#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE
727+//#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE
728+//#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
729+//
730+///* Chorus effect */
731+//#define AL_CHORUS_WAVEFORM_SINUSOID (0)
732+//#define AL_CHORUS_WAVEFORM_TRIANGLE (1)
733+//
734+//#define AL_CHORUS_MIN_WAVEFORM (0)
735+//#define AL_CHORUS_MAX_WAVEFORM (1)
736+//#define AL_CHORUS_DEFAULT_WAVEFORM (1)
737+//
738+//#define AL_CHORUS_MIN_PHASE (-180)
739+//#define AL_CHORUS_MAX_PHASE (180)
740+//#define AL_CHORUS_DEFAULT_PHASE (90)
741+//
742+//#define AL_CHORUS_MIN_RATE (0.0f)
743+//#define AL_CHORUS_MAX_RATE (10.0f)
744+//#define AL_CHORUS_DEFAULT_RATE (1.1f)
745+//
746+//#define AL_CHORUS_MIN_DEPTH (0.0f)
747+//#define AL_CHORUS_MAX_DEPTH (1.0f)
748+//#define AL_CHORUS_DEFAULT_DEPTH (0.1f)
749+//
750+//#define AL_CHORUS_MIN_FEEDBACK (-1.0f)
751+//#define AL_CHORUS_MAX_FEEDBACK (1.0f)
752+//#define AL_CHORUS_DEFAULT_FEEDBACK (0.25f)
753+//
754+//#define AL_CHORUS_MIN_DELAY (0.0f)
755+//#define AL_CHORUS_MAX_DELAY (0.016f)
756+//#define AL_CHORUS_DEFAULT_DELAY (0.016f)
757+//
758+///* Distortion effect */
759+//#define AL_DISTORTION_MIN_EDGE (0.0f)
760+//#define AL_DISTORTION_MAX_EDGE (1.0f)
761+//#define AL_DISTORTION_DEFAULT_EDGE (0.2f)
762+//
763+//#define AL_DISTORTION_MIN_GAIN (0.01f)
764+//#define AL_DISTORTION_MAX_GAIN (1.0f)
765+//#define AL_DISTORTION_DEFAULT_GAIN (0.05f)
766+//
767+//#define AL_DISTORTION_MIN_LOWPASS_CUTOFF (80.0f)
768+//#define AL_DISTORTION_MAX_LOWPASS_CUTOFF (24000.0f)
769+//#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF (8000.0f)
770+//
771+//#define AL_DISTORTION_MIN_EQCENTER (80.0f)
772+//#define AL_DISTORTION_MAX_EQCENTER (24000.0f)
773+//#define AL_DISTORTION_DEFAULT_EQCENTER (3600.0f)
774+//
775+//#define AL_DISTORTION_MIN_EQBANDWIDTH (80.0f)
776+//#define AL_DISTORTION_MAX_EQBANDWIDTH (24000.0f)
777+//#define AL_DISTORTION_DEFAULT_EQBANDWIDTH (3600.0f)
778+//
779+///* Echo effect */
780+//#define AL_ECHO_MIN_DELAY (0.0f)
781+//#define AL_ECHO_MAX_DELAY (0.207f)
782+//#define AL_ECHO_DEFAULT_DELAY (0.1f)
783+//
784+//#define AL_ECHO_MIN_LRDELAY (0.0f)
785+//#define AL_ECHO_MAX_LRDELAY (0.404f)
786+//#define AL_ECHO_DEFAULT_LRDELAY (0.1f)
787+//
788+//#define AL_ECHO_MIN_DAMPING (0.0f)
789+//#define AL_ECHO_MAX_DAMPING (0.99f)
790+//#define AL_ECHO_DEFAULT_DAMPING (0.5f)
791+//
792+//#define AL_ECHO_MIN_FEEDBACK (0.0f)
793+//#define AL_ECHO_MAX_FEEDBACK (1.0f)
794+//#define AL_ECHO_DEFAULT_FEEDBACK (0.5f)
795+//
796+//#define AL_ECHO_MIN_SPREAD (-1.0f)
797+//#define AL_ECHO_MAX_SPREAD (1.0f)
798+//#define AL_ECHO_DEFAULT_SPREAD (-1.0f)
799+//
800+///* Flanger effect */
801+//#define AL_FLANGER_WAVEFORM_SINUSOID (0)
802+//#define AL_FLANGER_WAVEFORM_TRIANGLE (1)
803+//
804+//#define AL_FLANGER_MIN_WAVEFORM (0)
805+//#define AL_FLANGER_MAX_WAVEFORM (1)
806+//#define AL_FLANGER_DEFAULT_WAVEFORM (1)
807+//
808+//#define AL_FLANGER_MIN_PHASE (-180)
809+//#define AL_FLANGER_MAX_PHASE (180)
810+//#define AL_FLANGER_DEFAULT_PHASE (0)
811+//
812+//#define AL_FLANGER_MIN_RATE (0.0f)
813+//#define AL_FLANGER_MAX_RATE (10.0f)
814+//#define AL_FLANGER_DEFAULT_RATE (0.27f)
815+//
816+//#define AL_FLANGER_MIN_DEPTH (0.0f)
817+//#define AL_FLANGER_MAX_DEPTH (1.0f)
818+//#define AL_FLANGER_DEFAULT_DEPTH (1.0f)
819+//
820+//#define AL_FLANGER_MIN_FEEDBACK (-1.0f)
821+//#define AL_FLANGER_MAX_FEEDBACK (1.0f)
822+//#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f)
823+//
824+//#define AL_FLANGER_MIN_DELAY (0.0f)
825+//#define AL_FLANGER_MAX_DELAY (0.004f)
826+//#define AL_FLANGER_DEFAULT_DELAY (0.002f)
827+//
828+///* Frequency shifter effect */
829+//#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY (0.0f)
830+//#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY (24000.0f)
831+//#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY (0.0f)
832+//
833+//#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION (0)
834+//#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION (2)
835+//#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0)
836+//
837+//#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN (0)
838+//#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1)
839+//#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2)
840+//
841+//#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0)
842+//#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2)
843+//#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0)
844+//
845+///* Vocal morpher effect */
846+//#define AL_VOCAL_MORPHER_MIN_PHONEMEA (0)
847+//#define AL_VOCAL_MORPHER_MAX_PHONEMEA (29)
848+//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA (0)
849+//
850+//#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
851+//#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24)
852+//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0)
853+//
854+//#define AL_VOCAL_MORPHER_MIN_PHONEMEB (0)
855+//#define AL_VOCAL_MORPHER_MAX_PHONEMEB (29)
856+//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB (10)
857+//
858+//#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
859+//#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24)
860+//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0)
861+//
862+//#define AL_VOCAL_MORPHER_PHONEME_A (0)
863+//#define AL_VOCAL_MORPHER_PHONEME_E (1)
864+//#define AL_VOCAL_MORPHER_PHONEME_I (2)
865+//#define AL_VOCAL_MORPHER_PHONEME_O (3)
866+//#define AL_VOCAL_MORPHER_PHONEME_U (4)
867+//#define AL_VOCAL_MORPHER_PHONEME_AA (5)
868+//#define AL_VOCAL_MORPHER_PHONEME_AE (6)
869+//#define AL_VOCAL_MORPHER_PHONEME_AH (7)
870+//#define AL_VOCAL_MORPHER_PHONEME_AO (8)
871+//#define AL_VOCAL_MORPHER_PHONEME_EH (9)
872+//#define AL_VOCAL_MORPHER_PHONEME_ER (10)
873+//#define AL_VOCAL_MORPHER_PHONEME_IH (11)
874+//#define AL_VOCAL_MORPHER_PHONEME_IY (12)
875+//#define AL_VOCAL_MORPHER_PHONEME_UH (13)
876+//#define AL_VOCAL_MORPHER_PHONEME_UW (14)
877+//#define AL_VOCAL_MORPHER_PHONEME_B (15)
878+//#define AL_VOCAL_MORPHER_PHONEME_D (16)
879+//#define AL_VOCAL_MORPHER_PHONEME_F (17)
880+//#define AL_VOCAL_MORPHER_PHONEME_G (18)
881+//#define AL_VOCAL_MORPHER_PHONEME_J (19)
882+//#define AL_VOCAL_MORPHER_PHONEME_K (20)
883+//#define AL_VOCAL_MORPHER_PHONEME_L (21)
884+//#define AL_VOCAL_MORPHER_PHONEME_M (22)
885+//#define AL_VOCAL_MORPHER_PHONEME_N (23)
886+//#define AL_VOCAL_MORPHER_PHONEME_P (24)
887+//#define AL_VOCAL_MORPHER_PHONEME_R (25)
888+//#define AL_VOCAL_MORPHER_PHONEME_S (26)
889+//#define AL_VOCAL_MORPHER_PHONEME_T (27)
890+//#define AL_VOCAL_MORPHER_PHONEME_V (28)
891+//#define AL_VOCAL_MORPHER_PHONEME_Z (29)
892+//
893+//#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID (0)
894+//#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1)
895+//#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2)
896+//
897+//#define AL_VOCAL_MORPHER_MIN_WAVEFORM (0)
898+//#define AL_VOCAL_MORPHER_MAX_WAVEFORM (2)
899+//#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM (0)
900+//
901+//#define AL_VOCAL_MORPHER_MIN_RATE (0.0f)
902+//#define AL_VOCAL_MORPHER_MAX_RATE (10.0f)
903+//#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f)
904+//
905+///* Pitch shifter effect */
906+//#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12)
907+//#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE (12)
908+//#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE (12)
909+//
910+//#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50)
911+//#define AL_PITCH_SHIFTER_MAX_FINE_TUNE (50)
912+//#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE (0)
913+//
914+///* Ring modulator effect */
915+//#define AL_RING_MODULATOR_MIN_FREQUENCY (0.0f)
916+//#define AL_RING_MODULATOR_MAX_FREQUENCY (8000.0f)
917+//#define AL_RING_MODULATOR_DEFAULT_FREQUENCY (440.0f)
918+//
919+//#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF (0.0f)
920+//#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF (24000.0f)
921+//#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f)
922+//
923+//#define AL_RING_MODULATOR_SINUSOID (0)
924+//#define AL_RING_MODULATOR_SAWTOOTH (1)
925+//#define AL_RING_MODULATOR_SQUARE (2)
926+//
927+//#define AL_RING_MODULATOR_MIN_WAVEFORM (0)
928+//#define AL_RING_MODULATOR_MAX_WAVEFORM (2)
929+//#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0)
930+//
931+///* Autowah effect */
932+//#define AL_AUTOWAH_MIN_ATTACK_TIME (0.0001f)
933+//#define AL_AUTOWAH_MAX_ATTACK_TIME (1.0f)
934+//#define AL_AUTOWAH_DEFAULT_ATTACK_TIME (0.06f)
935+//
936+//#define AL_AUTOWAH_MIN_RELEASE_TIME (0.0001f)
937+//#define AL_AUTOWAH_MAX_RELEASE_TIME (1.0f)
938+//#define AL_AUTOWAH_DEFAULT_RELEASE_TIME (0.06f)
939+//
940+//#define AL_AUTOWAH_MIN_RESONANCE (2.0f)
941+//#define AL_AUTOWAH_MAX_RESONANCE (1000.0f)
942+//#define AL_AUTOWAH_DEFAULT_RESONANCE (1000.0f)
943+//
944+//#define AL_AUTOWAH_MIN_PEAK_GAIN (0.00003f)
945+//#define AL_AUTOWAH_MAX_PEAK_GAIN (31621.0f)
946+//#define AL_AUTOWAH_DEFAULT_PEAK_GAIN (11.22f)
947+//
948+///* Compressor effect */
949+//#define AL_COMPRESSOR_MIN_ONOFF (0)
950+//#define AL_COMPRESSOR_MAX_ONOFF (1)
951+//#define AL_COMPRESSOR_DEFAULT_ONOFF (1)
952+//
953+///* Equalizer effect */
954+//#define AL_EQUALIZER_MIN_LOW_GAIN (0.126f)
955+//#define AL_EQUALIZER_MAX_LOW_GAIN (7.943f)
956+//#define AL_EQUALIZER_DEFAULT_LOW_GAIN (1.0f)
957+//
958+//#define AL_EQUALIZER_MIN_LOW_CUTOFF (50.0f)
959+//#define AL_EQUALIZER_MAX_LOW_CUTOFF (800.0f)
960+//#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF (200.0f)
961+//
962+//#define AL_EQUALIZER_MIN_MID1_GAIN (0.126f)
963+//#define AL_EQUALIZER_MAX_MID1_GAIN (7.943f)
964+//#define AL_EQUALIZER_DEFAULT_MID1_GAIN (1.0f)
965+//
966+//#define AL_EQUALIZER_MIN_MID1_CENTER (200.0f)
967+//#define AL_EQUALIZER_MAX_MID1_CENTER (3000.0f)
968+//#define AL_EQUALIZER_DEFAULT_MID1_CENTER (500.0f)
969+//
970+//#define AL_EQUALIZER_MIN_MID1_WIDTH (0.01f)
971+//#define AL_EQUALIZER_MAX_MID1_WIDTH (1.0f)
972+//#define AL_EQUALIZER_DEFAULT_MID1_WIDTH (1.0f)
973+//
974+//#define AL_EQUALIZER_MIN_MID2_GAIN (0.126f)
975+//#define AL_EQUALIZER_MAX_MID2_GAIN (7.943f)
976+//#define AL_EQUALIZER_DEFAULT_MID2_GAIN (1.0f)
977+//
978+//#define AL_EQUALIZER_MIN_MID2_CENTER (1000.0f)
979+//#define AL_EQUALIZER_MAX_MID2_CENTER (8000.0f)
980+//#define AL_EQUALIZER_DEFAULT_MID2_CENTER (3000.0f)
981+//
982+//#define AL_EQUALIZER_MIN_MID2_WIDTH (0.01f)
983+//#define AL_EQUALIZER_MAX_MID2_WIDTH (1.0f)
984+//#define AL_EQUALIZER_DEFAULT_MID2_WIDTH (1.0f)
985+//
986+//#define AL_EQUALIZER_MIN_HIGH_GAIN (0.126f)
987+//#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f)
988+//#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (1.0f)
989+//
990+//#define AL_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f)
991+//#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f)
992+//#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.0f)
993+//
994+//
995+///* Source parameter value ranges and defaults. */
996+//#define AL_MIN_AIR_ABSORPTION_FACTOR (0.0f)
997+//#define AL_MAX_AIR_ABSORPTION_FACTOR (10.0f)
998+//#define AL_DEFAULT_AIR_ABSORPTION_FACTOR (0.0f)
999+//
1000+//#define AL_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
1001+//#define AL_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
1002+//#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
1003+//
1004+//#define AL_MIN_CONE_OUTER_GAINHF (0.0f)
1005+//#define AL_MAX_CONE_OUTER_GAINHF (1.0f)
1006+//#define AL_DEFAULT_CONE_OUTER_GAINHF (1.0f)
1007+//
1008+//#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE
1009+//#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
1010+//#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
1011+//
1012+//#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE
1013+//#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
1014+//#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
1015+//
1016+//#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
1017+//#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
1018+//#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
1019+//
1020+//
1021+///* Listener parameter value ranges and defaults. */
1022+//#define AL_MIN_METERS_PER_UNIT FLT_MIN
1023+//#define AL_MAX_METERS_PER_UNIT FLT_MAX
1024+//#define AL_DEFAULT_METERS_PER_UNIT (1.0f)
1025+
3561026
3571027 public static String GetALErrorMsg(int errorCode) {
3581028 String errorText;
--- a/engine/src/android/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java
+++ b/engine/src/android/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java
@@ -169,12 +169,9 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
169169 // Find maximum # of sources supported by this implementation
170170 ArrayList<Integer> channelList = new ArrayList<Integer>();
171171 for (int i = 0; i < MAX_NUM_CHANNELS; i++) {
172-// logger.log(Level.INFO, "Generating Source for index: {0}", i);
173172 int chan = alGenSources();
174-// logger.log(Level.INFO, "chan: {0}", chan);
175173 //if (alGetError() != 0) {
176174 if (checkError(false) != 0) {
177-// logger.log(Level.INFO, "alGetError detected an error");
178175 break;
179176 } else {
180177 channelList.add(chan);
@@ -191,36 +188,47 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
191188
192189 logger.log(Level.INFO, "AudioRenderer supports {0} channels", channels.length);
193190
194-// supportEfx = ALC10.alcIsExtensionPresent(device, "ALC_EXT_EFX");
195-// if (supportEfx) {
196-// ib.position(0).limit(1);
197-// ALC10.alcGetInteger(device, EFX10.ALC_EFX_MAJOR_VERSION, ib);
198-// int major = ib.get(0);
199-// ib.position(0).limit(1);
200-// ALC10.alcGetInteger(device, EFX10.ALC_EFX_MINOR_VERSION, ib);
201-// int minor = ib.get(0);
202-// logger.log(Level.INFO, "Audio effect extension version: {0}.{1}", new Object[]{major, minor});
203-//
204-// ALC10.alcGetInteger(device, EFX10.ALC_MAX_AUXILIARY_SENDS, ib);
205-// auxSends = ib.get(0);
206-// logger.log(Level.INFO, "Audio max auxilary sends: {0}", auxSends);
207-//
208-// // create slot
209-// ib.position(0).limit(1);
210-// EFX10.alGenAuxiliaryEffectSlots(ib);
211-// reverbFxSlot = ib.get(0);
212-//
213-// // create effect
214-// ib.position(0).limit(1);
215-// EFX10.alGenEffects(ib);
216-// reverbFx = ib.get(0);
217-// EFX10.alEffecti(reverbFx, EFX10.AL_EFFECT_TYPE, EFX10.AL_EFFECT_REVERB);
218-//
219-// // attach reverb effect to effect slot
220-// EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
221-// } else {
222-// logger.log(Level.WARNING, "OpenAL EFX not available! Audio effects won't work.");
223-// }
191+ //supportEfx = alcIsExtensionPresent(device, "ALC_EXT_EFX");
192+ supportEfx = alcIsExtensionPresent(AL.ALC_EXT_EFX_NAME);
193+ logger.log(Level.INFO, "{0} found: {1}",
194+ new Object[]{AL.ALC_EXT_EFX_NAME, supportEfx});
195+
196+ if (supportEfx) {
197+ ib.position(0).limit(1);
198+ //ALC10.alcGetInteger(device, EFX10.ALC_EFX_MAJOR_VERSION, ib);
199+ alcGetInteger(AL.ALC_EFX_MAJOR_VERSION, ib, 1);
200+ int major = ib.get(0);
201+ ib.position(0).limit(1);
202+ //ALC10.alcGetInteger(device, EFX10.ALC_EFX_MINOR_VERSION, ib);
203+ alcGetInteger(AL.ALC_EFX_MINOR_VERSION, ib, 1);
204+ int minor = ib.get(0);
205+ logger.log(Level.INFO, "Audio effect extension version: {0}.{1}", new Object[]{major, minor});
206+
207+ //ALC10.alcGetInteger(device, EFX10.ALC_MAX_AUXILIARY_SENDS, ib);
208+ alcGetInteger(AL.ALC_MAX_AUXILIARY_SENDS, ib, 1);
209+ auxSends = ib.get(0);
210+ logger.log(Level.INFO, "Audio max auxilary sends: {0}", auxSends);
211+
212+ // create slot
213+ ib.position(0).limit(1);
214+ //EFX10.alGenAuxiliaryEffectSlots(ib);
215+ alGenAuxiliaryEffectSlots(1, ib);
216+ reverbFxSlot = ib.get(0);
217+
218+ // create effect
219+ ib.position(0).limit(1);
220+ //EFX10.alGenEffects(ib);
221+ alGenEffects(1, ib);
222+ reverbFx = ib.get(0);
223+ //EFX10.alEffecti(reverbFx, EFX10.AL_EFFECT_TYPE, EFX10.AL_EFFECT_REVERB);
224+ alEffecti(reverbFx, AL.AL_EFFECT_TYPE, AL.AL_EFFECT_REVERB);
225+
226+ // attach reverb effect to effect slot
227+ //EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
228+ alAuxiliaryEffectSloti(reverbFxSlot, AL.AL_EFFECTSLOT_EFFECT, reverbFx);
229+ } else {
230+ logger.log(Level.WARNING, "OpenAL EFX not available! Audio effects won't work.");
231+ }
224232 }
225233
226234 public void cleanupInThread() {
@@ -251,22 +259,23 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
251259 // delete audio buffers and filters
252260 objManager.deleteAllObjects(this);
253261
254-// if (supportEfx) {
255-// ib.position(0).limit(1);
256-// ib.put(0, reverbFx);
257-// EFX10.alDeleteEffects(ib);
258-//
259-// // If this is not allocated, why is it deleted?
260-// // Commented out to fix native crash in OpenAL.
261-// ib.position(0).limit(1);
262-// ib.put(0, reverbFxSlot);
263-// EFX10.alDeleteAuxiliaryEffectSlots(ib);
264-// }
265-//
262+ if (supportEfx) {
263+ ib.position(0).limit(1);
264+ ib.put(0, reverbFx);
265+ //EFX10.alDeleteEffects(ib);
266+ alDeleteEffects(1, ib);
267+
268+ // If this is not allocated, why is it deleted?
269+ // Commented out to fix native crash in OpenAL.
270+ ib.position(0).limit(1);
271+ ib.put(0, reverbFxSlot);
272+ //EFX10.alDeleteAuxiliaryEffectSlots(ib);
273+ alDeleteAuxiliaryEffectSlots(1, ib);
274+ }
275+
266276 //AL.destroy();
267277 logger.log(Level.INFO, "Destroying OpenAL Soft Renderer");
268278 alDestroy();
269-// checkError(true);
270279 }
271280
272281 public void cleanup() {
@@ -279,27 +288,31 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
279288 }
280289
281290 private void updateFilter(Filter f) {
282-// int id = f.getId();
283-// if (id == -1) {
284-// ib.position(0).limit(1);
285-// EFX10.alGenFilters(ib);
286-// id = ib.get(0);
287-// f.setId(id);
288-//
289-// objManager.registerForCleanup(f);
290-// }
291-//
292-// if (f instanceof LowPassFilter) {
293-// LowPassFilter lpf = (LowPassFilter) f;
294-// EFX10.alFilteri(id, EFX10.AL_FILTER_TYPE, EFX10.AL_FILTER_LOWPASS);
295-// EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAIN, lpf.getVolume());
296-// EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume());
297-// } else {
298-// throw new UnsupportedOperationException("Filter type unsupported: "
299-// + f.getClass().getName());
300-// }
301-//
302-// f.clearUpdateNeeded();
291+ int id = f.getId();
292+ if (id == -1) {
293+ ib.position(0).limit(1);
294+ //EFX10.alGenFilters(ib);
295+ alGenFilters(1, ib);
296+ id = ib.get(0);
297+ f.setId(id);
298+
299+ objManager.registerForCleanup(f);
300+ }
301+
302+ if (f instanceof LowPassFilter) {
303+ LowPassFilter lpf = (LowPassFilter) f;
304+ //EFX10.alFilteri(id, EFX10.AL_FILTER_TYPE, EFX10.AL_FILTER_LOWPASS);
305+ alFilteri(id, AL.AL_FILTER_TYPE, AL.AL_FILTER_LOWPASS);
306+ //EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAIN, lpf.getVolume());
307+ alFilterf(id, AL.AL_LOWPASS_GAIN, lpf.getVolume());
308+ //EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume());
309+ alFilterf(id, AL.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume());
310+ } else {
311+ throw new UnsupportedOperationException("Filter type unsupported: "
312+ + f.getClass().getName());
313+ }
314+
315+ f.clearUpdateNeeded();
303316 }
304317
305318 public void updateSourceParam(AudioSource src, AudioParam param) {
@@ -375,15 +388,16 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
375388 return;
376389 }
377390
378-// int filter = EFX10.AL_FILTER_NULL;
379-// if (src.getReverbFilter() != null) {
380-// Filter f = src.getReverbFilter();
381-// if (f.isUpdateNeeded()) {
382-// updateFilter(f);
383-// }
384-// filter = f.getId();
385-// }
386-// AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
391+ int filter = AL.AL_FILTER_NULL;
392+ if (src.getReverbFilter() != null) {
393+ Filter f = src.getReverbFilter();
394+ if (f.isUpdateNeeded()) {
395+ updateFilter(f);
396+ }
397+ filter = f.getId();
398+ }
399+ //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
400+ alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
387401 break;
388402 case ReverbEnabled:
389403 if (!supportEfx || !src.isPositional()) {
@@ -393,7 +407,8 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
393407 if (src.isReverbEnabled()) {
394408 updateSourceParam(src, AudioParam.ReverbFilter);
395409 } else {
396-// AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
410+ //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
411+ alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL);
397412 }
398413 break;
399414 case IsPositional:
@@ -410,7 +425,8 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
410425 checkError(true);
411426
412427 // Disable reverb
413-// AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
428+ //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
429+ alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL);
414430 } else {
415431 //alSourcei(id, AL_SOURCE_RELATIVE, AL_FALSE);
416432 alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE);
@@ -470,23 +486,25 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
470486 checkError(true);
471487 }
472488 break;
473-// case DryFilter:
474-// if (!supportEfx) {
475-// return;
476-// }
477-//
478-// if (src.getDryFilter() != null) {
479-// Filter f = src.getDryFilter();
480-// if (f.isUpdateNeeded()) {
481-// updateFilter(f);
482-//
483-// // NOTE: must re-attach filter for changes to apply.
484-// alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
485-// }
486-// } else {
487-// alSourcei(id, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
488-// }
489-// break;
489+ case DryFilter:
490+ if (!supportEfx) {
491+ return;
492+ }
493+
494+ if (src.getDryFilter() != null) {
495+ Filter f = src.getDryFilter();
496+ if (f.isUpdateNeeded()) {
497+ updateFilter(f);
498+
499+ // NOTE: must re-attach filter for changes to apply.
500+ //alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
501+ alSourcei(id, AL.AL_DIRECT_FILTER, f.getId());
502+ }
503+ } else {
504+ //alSourcei(id, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
505+ alSourcei(id, AL.AL_DIRECT_FILTER, AL.AL_FILTER_NULL);
506+ }
507+ break;
490508 case Looping:
491509 if (src.isLooping()) {
492510 if (!(src.getAudioData() instanceof AudioStream)) {
@@ -534,17 +552,19 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
534552 alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE);
535553 checkError(true);
536554
537-// if (src.isReverbEnabled() && supportEfx) {
538-// int filter = EFX10.AL_FILTER_NULL;
539-// if (src.getReverbFilter() != null) {
540-// Filter f = src.getReverbFilter();
541-// if (f.isUpdateNeeded()) {
542-// updateFilter(f);
543-// }
544-// filter = f.getId();
545-// }
546-// AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
547-// }
555+ if (src.isReverbEnabled() && supportEfx) {
556+ //int filter = EFX10.AL_FILTER_NULL;
557+ int filter = AL.AL_FILTER_NULL;
558+ if (src.getReverbFilter() != null) {
559+ Filter f = src.getReverbFilter();
560+ if (f.isUpdateNeeded()) {
561+ updateFilter(f);
562+ }
563+ filter = f.getId();
564+ }
565+ //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
566+ alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter);
567+ }
548568 } else {
549569 // play in headspace
550570 //alSourcei(id, AL_SOURCE_RELATIVE, AL_TRUE);
@@ -558,16 +578,17 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
558578 checkError(true);
559579 }
560580
561-// if (src.getDryFilter() != null && supportEfx) {
562-// Filter f = src.getDryFilter();
563-// if (f.isUpdateNeeded()) {
564-// updateFilter(f);
565-//
566-// // NOTE: must re-attach filter for changes to apply.
567-// alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
568-// }
569-// }
570-//
581+ if (src.getDryFilter() != null && supportEfx) {
582+ Filter f = src.getDryFilter();
583+ if (f.isUpdateNeeded()) {
584+ updateFilter(f);
585+
586+ // NOTE: must re-attach filter for changes to apply.
587+ //alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId());
588+ alSourcei(id, AL.AL_DIRECT_FILTER, f.getId());
589+ }
590+ }
591+
571592 if (forceNonLoop) {
572593 //alSourcei(id, AL_LOOPING, AL_FALSE);
573594 alSourcei(id, AL.AL_LOOPING, AL.AL_FALSE);
@@ -715,26 +736,38 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
715736 return;
716737 }
717738
718-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DENSITY, env.getDensity());
719-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DIFFUSION, env.getDiffusion());
720-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAIN, env.getGain());
721-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAINHF, env.getGainHf());
722-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_TIME, env.getDecayTime());
723-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio());
724-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain());
725-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay());
726-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain());
727-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay());
728-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf());
729-// EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor());
730-//
731-// // attach effect to slot
732-// EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
739+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DENSITY, env.getDensity());
740+ alEffectf(reverbFx, AL.AL_REVERB_DENSITY, env.getDensity());
741+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DIFFUSION, env.getDiffusion());
742+ alEffectf(reverbFx, AL.AL_REVERB_DIFFUSION, env.getDiffusion());
743+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAIN, env.getGain());
744+ alEffectf(reverbFx, AL.AL_REVERB_GAIN, env.getGain());
745+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAINHF, env.getGainHf());
746+ alEffectf(reverbFx, AL.AL_REVERB_GAINHF, env.getGainHf());
747+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_TIME, env.getDecayTime());
748+ alEffectf(reverbFx, AL.AL_REVERB_DECAY_TIME, env.getDecayTime());
749+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio());
750+ alEffectf(reverbFx, AL.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio());
751+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain());
752+ alEffectf(reverbFx, AL.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain());
753+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay());
754+ alEffectf(reverbFx, AL.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay());
755+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain());
756+ alEffectf(reverbFx, AL.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain());
757+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay());
758+ alEffectf(reverbFx, AL.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay());
759+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf());
760+ alEffectf(reverbFx, AL.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf());
761+ //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor());
762+ alEffectf(reverbFx, AL.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor());
763+
764+ // attach effect to slot
765+ //EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx);
766+ alAuxiliaryEffectSloti(reverbFxSlot, AL.AL_EFFECTSLOT_EFFECT, reverbFx);
733767 }
734768 }
735769
736770 private boolean fillBuffer(AudioStream stream, int id) {
737-// logger.log(Level.INFO, "fillBuffer for id: {0}", id);
738771 int size = 0;
739772 int result;
740773
@@ -748,9 +781,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
748781 }
749782 }
750783
751-// logger.log(Level.INFO, "data for buffer: {0} is size: {1}",
752-// new Object[]{id, size});
753-
754784 if (size == 0) {
755785 return false;
756786 }
@@ -767,7 +797,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
767797 }
768798
769799 private boolean fillStreamingSource(int sourceId, AudioStream stream) {
770-// logger.log(Level.INFO, "fillStreamingSource for source: {0}", sourceId);
771800 if (!stream.isOpen()) {
772801 return false;
773802 }
@@ -775,7 +804,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
775804 boolean active = true;
776805 //int processed = alGetSourcei(sourceId, AL_BUFFERS_PROCESSED);
777806 int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED);
778-// logger.log(Level.INFO, "fillStreamingSource buffers processed: {0}", processed);
779807 checkError(true);
780808
781809 //while((processed--) != 0){
@@ -783,19 +811,15 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
783811 int buffer;
784812
785813 ib.position(0).limit(1);
786-// logger.log(Level.INFO, "fillStreamingSource alSourceUnqueueBuffers for source: {0}", sourceId);
787814 //alSourceUnqueueBuffers(sourceId, ib);
788815 alSourceUnqueueBuffers(sourceId, 1, ib);
789816 checkError(true);
790817 buffer = ib.get(0);
791-// logger.log(Level.INFO, "fillStreamingSource bufferID: {0}", buffer);
792818
793819 active = fillBuffer(stream, buffer);
794820
795821 ib.position(0).limit(1);
796822 ib.put(0, buffer);
797-// logger.log(Level.INFO, "fillStreamingSource alSourceQueueBuffers for source: {0}, buffer: {1}",
798-// new Object[]{sourceId, buffer});
799823 //alSourceQueueBuffers(sourceId, ib);
800824 alSourceQueueBuffers(sourceId, 1, ib);
801825 checkError(true);
@@ -809,7 +833,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
809833 }
810834
811835 private boolean attachStreamToSource(int sourceId, AudioStream stream) {
812-// logger.log(Level.INFO, "attachStreamToSource for source: {0}", sourceId);
813836 boolean active = true;
814837 int activeBufferCount = 0;
815838 for (int id : stream.getIds()) {
@@ -822,8 +845,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
822845 // does not return (crashes) so that the error code can be checked.
823846 // active is FALSE when the data size is 0
824847 if (active) {
825-// logger.log(Level.INFO, "attachStreamToSource alSourceQueueBuffers for source: {0}, buffer: {1}",
826-// new Object[]{sourceId, id});
827848 alSourceQueueBuffers(sourceId, 1, ib);
828849 checkError(true);
829850 activeBufferCount++;
@@ -837,15 +858,11 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
837858 for (int i=0; i<STREAMING_BUFFER_COUNT; i++) {
838859 if (i < activeBufferCount) {
839860 newIds[i] = stream.getIds()[i];
840-// logger.log(Level.INFO, "newIds[{0}] = {1}",
841-// new Object[]{i, newIds[i]});
842861 } else {
843862 ib.clear();
844863 ib.put(stream.getIds()[i]).limit(1).flip();
845864 alDeleteBuffers(1, ib);
846865 checkError(true);
847-// logger.log(Level.INFO, "deleting buffer at index[{0}] = {1}",
848-// new Object[]{i, stream.getIds()[i]});
849866 }
850867
851868 }
@@ -863,7 +880,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
863880 }
864881
865882 private boolean attachAudioToSource(int sourceId, AudioData data) {
866-// logger.log(Level.INFO, "attachAudioToSource for data type: {0}", data.getClass().getName());
867883 if (data instanceof AudioBuffer) {
868884 return attachBufferToSource(sourceId, (AudioBuffer) data);
869885 } else if (data instanceof AudioStream) {
@@ -873,28 +889,21 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
873889 }
874890
875891 private void clearChannel(int index) {
876-// logger.log(Level.INFO, "Clearing channel for index: {0}", index);
877892 // make room at this channel
878893 if (chanSrcs[index] != null) {
879894 AudioSource src = chanSrcs[index];
880895
881896 int sourceId = channels[index];
882-// logger.log(Level.INFO, "Stopping source: {0} in clearChannel", sourceId);
883897 alSourceStop(sourceId);
884898
885899 if (src.getAudioData() instanceof AudioStream) {
886900 AudioStream str = (AudioStream) src.getAudioData();
887-// logger.log(Level.INFO, "source is a stream with numBuffers: {0}", str.getIds().length);
888901 for (int i=0; i<str.getIds().length; i++) {
889-// logger.log(Level.INFO, "id[{0}]: {1}",
890-// new Object[]{i, str.getIds()[i]});
891902 }
892903 //ib.position(0).limit(STREAMING_BUFFER_COUNT);
893904 ib.position(0).limit(str.getIds().length);
894905 ib.put(str.getIds()).flip();
895-// logger.log(Level.INFO, "clearChannel alSourceUnqueueBuffers for source: {0}", sourceId);
896906 int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED);
897-// logger.log(Level.INFO, "clearChannels buffers processed: {0}", processed);
898907 //alSourceUnqueueBuffers(sourceId, ib);
899908 alSourceUnqueueBuffers(sourceId, processed, ib);
900909 checkError(true);
@@ -906,12 +915,14 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
906915
907916 if (src.getDryFilter() != null && supportEfx) {
908917 // detach filter
909-// alSourcei(sourceId, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
918+ //alSourcei(sourceId, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL);
919+ alSourcei(sourceId, AL.AL_DIRECT_FILTER, AL.AL_FILTER_NULL);
910920 }
911921 if (src.isPositional()) {
912922 AudioSource pas = (AudioSource) src;
913923 if (pas.isReverbEnabled() && supportEfx) {
914-// AL11.alSource3i(sourceId, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
924+ //AL11.alSource3i(sourceId, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL);
925+ alSource3i(sourceId, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL);
915926 }
916927 }
917928
@@ -949,29 +960,20 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
949960 //int state = alGetSourcei(sourceId, AL_SOURCE_STATE);
950961 int state = alGetSourcei(sourceId, AL.AL_SOURCE_STATE);
951962 checkError(true);
952-// logger.log(Level.INFO, "source: {0}, state: {1}",
953-// new Object[]{sourceId, state});
954963 boolean wantPlaying = src.getStatus() == Status.Playing;
955-// logger.log(Level.INFO, "sourceId: {0}, wantPlaying: {1}",
956-// new Object[]{sourceId, wantPlaying});
957964 //boolean stopped = state == AL_STOPPED;
958965 boolean stopped = state == AL.AL_STOPPED;
959-// logger.log(Level.INFO, "sourceId: {0}, stopped: {1}",
960-// new Object[]{sourceId, stopped});
961966
962967 if (streaming && wantPlaying) {
963968 AudioStream stream = (AudioStream) src.getAudioData();
964969 if (stream.isOpen()) {
965-// logger.log(Level.INFO, "stream is open && want playing for source: {0}", sourceId);
966970 fillStreamingSource(sourceId, stream);
967971 if (stopped) {
968-// logger.log(Level.INFO, "source: {0} stopped, set playstate", sourceId);
969972 alSourcePlay(sourceId);
970973 checkError(true);
971974 }
972975 } else {
973976 if (stopped) {
974-// logger.log(Level.INFO, "stream is not open && want playing for source: {0}", sourceId);
975977 // became inactive
976978 src.setStatus(Status.Stopped);
977979 src.setChannel(-1);
@@ -986,8 +988,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
986988 } else if (!streaming) {
987989 //boolean paused = state == AL_PAUSED;
988990 boolean paused = state == AL.AL_PAUSED;
989-// logger.log(Level.INFO, "source: {0}, pause: {1}",
990-// new Object[]{sourceId, paused});
991991
992992 // make sure OAL pause state & source state coincide
993993 assert (src.getStatus() == Status.Paused && paused) || (!paused);
@@ -1052,7 +1052,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
10521052 }
10531053
10541054 if (src.getAudioData().isUpdateNeeded()) {
1055-// logger.log(Level.INFO, "Calling updateAudioData from playSourceInstance");
10561055 updateAudioData(src.getAudioData());
10571056 }
10581057
@@ -1064,14 +1063,10 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
10641063
10651064 int sourceId = channels[index];
10661065
1067-// logger.log(Level.INFO, "Calling clearChannel for index[{0}] from playSourceInstance", index);
10681066 clearChannel(index);
10691067
10701068 // set parameters, like position and max distance
1071-// logger.log(Level.INFO, "Calling setSourceParams for sourceID: {0} from playSourceInstance", index);
10721069 setSourceParams(sourceId, src, true);
1073-// logger.log(Level.INFO, "Calling attachAudioToSource for sourceID: {0} and data audiodata id: {1} from playSourceInstance",
1074-// new Object[]{sourceId, src.getAudioData().getId()});
10751070 attachAudioToSource(sourceId, src.getAudioData());
10761071 chanSrcs[index] = src;
10771072
@@ -1126,7 +1121,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
11261121 }
11271122
11281123 public void pauseSource(AudioSource src) {
1129-// logger.log(Level.INFO, "pauseSource");
11301124 checkDead();
11311125 synchronized (threadLock) {
11321126 while (!threadLock.get()) {
@@ -1139,7 +1133,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
11391133 return;
11401134 }
11411135
1142-// logger.log(Level.INFO, "source is playing: {0}", src.getStatus() == Status.Playing);
11431136 if (src.getStatus() == Status.Playing) {
11441137 assert src.getChannel() != -1;
11451138
@@ -1212,18 +1205,15 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
12121205
12131206 private void updateAudioBuffer(AudioBuffer ab) {
12141207 int id = ab.getId();
1215-// logger.log(Level.INFO, "updateAudioBuffer for buffer id: {0}", id);
12161208 if (ab.getId() == -1) {
12171209 ib.position(0).limit(1);
12181210 alGenBuffers(1, ib);
12191211 checkError(true);
12201212 id = ib.get(0);
12211213 ab.setId(id);
1222-// logger.log(Level.INFO, "Generated Buffer: {0}", id);
12231214
12241215 objManager.registerForCleanup(ab);
12251216 }
1226-// logger.log(Level.INFO, "updateAudioBuffer new buffer id: {0}", id);
12271217
12281218 ab.getData().clear();
12291219 //alBufferData(id, convertFormat(ab), ab.getData(), ab.getSampleRate());
@@ -1233,7 +1223,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
12331223 }
12341224
12351225 private void updateAudioStream(AudioStream as) {
1236-// logger.log(Level.INFO, "updateAudioStream");
12371226 if (as.getIds() != null) {
12381227 deleteAudioData(as);
12391228 }
@@ -1245,9 +1234,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
12451234 checkError(true);
12461235 ib.position(0).limit(STREAMING_BUFFER_COUNT);
12471236 ib.get(ids);
1248-// for (int i=0; i<ids.length; i++) {
1249-// logger.log(Level.INFO, "Generated Streaming Buffer: {0}", ids[i]);
1250-// }
12511237
12521238 // Not registered with object manager.
12531239 // AudioStreams can be handled without object manager
@@ -1268,20 +1254,14 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
12681254 public void deleteFilter(Filter filter) {
12691255 int id = filter.getId();
12701256 if (id != -1) {
1271-// EFX10.alDeleteFilters(id);
1257+ //EFX10.alDeleteFilters(id);
1258+ ib.put(0, id);
1259+ ib.position(0).limit(1);
1260+ alDeleteFilters(1, ib);
12721261 }
12731262 }
12741263
12751264 public void deleteAudioData(AudioData ad) {
1276-// if (ad instanceof AudioStream) {
1277-// AudioStream as = (AudioStream) ad;
1278-// int[] ids = as.getIds();
1279-// for (int i=0; i<ids.length; i++) {
1280-// logger.log(Level.INFO, "deleteAudioData for stream buffer: {0}", ids[i]);
1281-// }
1282-// } else if (ad instanceof AudioBuffer) {
1283-// logger.log(Level.INFO, "deleteAudioData for buffer: {0}", ad.getId());
1284-// }
12851265 synchronized (threadLock) {
12861266 while (!threadLock.get()) {
12871267 try {
@@ -1322,8 +1302,6 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
13221302 private int checkError(boolean stopOnError) {
13231303 int errorCode = alGetError();
13241304 String errorText = AL.GetALErrorMsg(errorCode);
1325-// logger.log(Level.INFO, "alError Code: {0}, Description: {1}",
1326-// new Object[]{errorCode, errorText});
13271305
13281306 if (errorCode != AL.AL_NO_ERROR && stopOnError) {
13291307 throw new IllegalStateException("AL Error Detected. Error Code: " + errorCode + ": " + errorText);
@@ -1356,12 +1334,24 @@ public class AndroidOpenALSoftAudioRenderer implements AudioRenderer, Runnable {
13561334 public static native void alListener(int param, FloatBuffer data);
13571335 public static native void alListenerf(int param, float value);
13581336 public static native void alListener3f(int param, float value1, float value2, float value3);
1359-
1337+ public static native boolean alcIsExtensionPresent(String extension);
1338+ public static native void alcGetInteger(int param, IntBuffer buffer, int size);
1339+ public static native void alGenAuxiliaryEffectSlots(int numSlots, IntBuffer buffers);
1340+ public static native void alGenEffects(int numEffects, IntBuffer buffers);
1341+ public static native void alEffecti(int effect, int param, int value);
1342+ public static native void alAuxiliaryEffectSloti(int effectSlot, int param, int value);
1343+ public static native void alDeleteEffects(int numEffects, IntBuffer buffers);
1344+ public static native void alDeleteAuxiliaryEffectSlots(int numEffectSlots, IntBuffer buffers);
1345+ public static native void alGenFilters(int numFilters, IntBuffer buffers);
1346+ public static native void alFilteri(int filter, int param, int value);
1347+ public static native void alFilterf(int filter, int param, float value);
1348+ public static native void alSource3i(int source, int param, int value1, int value2, int value3);
1349+ public static native void alDeleteFilters(int numFilters, IntBuffer buffers);
1350+ public static native void alEffectf(int effect, int param, float value);
13601351
13611352 /** Load jni .so on initialization */
13621353 static {
13631354 System.loadLibrary("openalsoftjme");
13641355 }
13651356
1366-
13671357 }
--- a/engine/src/openal-soft-native/android/Application.mk
+++ b/engine/src/openal-soft-native/android/Application.mk
@@ -1,4 +1,3 @@
11 APP_OPTIM := release
22 APP_ABI := all
33 #APP_ABI := armeabi-v7a
4-#APP_ABI += armeabi
--- a/engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp
+++ b/engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp
@@ -324,8 +324,158 @@ JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRendere
324324 alListener3f((ALenum)param, (ALfloat)value1, (ALfloat)value2, (ALfloat)value3);
325325 }
326326
327+JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcIsExtensionPresent
328+ (JNIEnv* env, jclass, jstring extension)
329+{
330+
331+ ALCdevice *device;
332+ ALCcontext *ctx;
333+ ALboolean result;
334+// char buf[128];
335+ const char* strExtension;
336+ jsize strLength = env->GetStringUTFLength(extension);
337+
338+ ctx = alcGetCurrentContext();
339+ if(ctx != NULL) {
340+ device = alcGetContextsDevice(ctx);
341+
342+ if (device != NULL) {
343+ strExtension = env->GetStringUTFChars(extension, NULL);
344+ if (strExtension == NULL) {
345+ return JNI_FALSE; /* OutOfMemoryError already thrown */
346+ }
347+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcIsExtensionPresent for param: %s with size: %d", strExtension, strLength);
348+
349+ result = alcIsExtensionPresent(device, strExtension);
350+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcIsExtensionPresent found: %d", result);
351+
352+ env->ReleaseStringUTFChars(extension, strExtension);
353+
354+ return (jboolean)result;
355+ } else {
356+ __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "device is null in alcIsExtensionPresent");
357+ }
358+
359+ } else {
360+ __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "current context is null in alcIsExtensionPresent");
361+ }
362+
363+ return JNI_FALSE;
364+}
327365
366+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcGetInteger
367+ (JNIEnv* env, jclass, jint param, jobject buffer, jint bufferSize)
368+{
369+ ALCdevice *device;
370+ ALCcontext *ctx;
371+
372+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetInteger for param: %d", param);
373+ ALCint* pBuffers = (ALCint*) env->GetDirectBufferAddress(buffer);
374+
375+ ctx = alcGetCurrentContext();
376+ if(ctx != NULL) {
377+ device = alcGetContextsDevice(ctx);
378+
379+ if (device != NULL) {
380+ alcGetIntegerv(device, (ALCenum)param, (ALCsizei)bufferSize, pBuffers);
381+ } else {
382+ __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "device is null in alcGetInteger");
383+ }
384+
385+ } else {
386+ __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "current context is null in alcGetInteger");
387+ }
388+}
389+
390+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenAuxiliaryEffectSlots
391+ (JNIEnv* env, jclass, jint numSlots, jobject buffer)
392+{
393+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenAuxiliaryEffectSlots for numSlots: %d", numSlots);
394+ ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
395+ alGenAuxiliaryEffectSlots((ALsizei)numSlots, pBuffers);
396+}
328397
398+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenEffects
399+ (JNIEnv* env, jclass, jint numEffects, jobject buffer)
400+{
401+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenEffects for numEffects: %d", numEffects);
402+ ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
403+ alGenEffects((ALsizei)numEffects, pBuffers);
404+}
405+
406+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffecti
407+ (JNIEnv *, jclass, jint effect, jint param, jint value)
408+{
409+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alEffecti for effect: %d, param: %d, value: %d", effect, param, value);
410+ alEffecti((ALuint)effect, (ALenum)param, (ALint)value);
411+}
412+
413+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alAuxiliaryEffectSloti
414+ (JNIEnv *, jclass, jint effectSlot, jint param, jint value)
415+{
416+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alAuxiliaryEffectSloti for effect: %d, param: %d, value: %d", effectSlot, param, value);
417+ alAuxiliaryEffectSloti((ALuint)effectSlot, (ALenum)param, (ALint)value);
418+}
419+
420+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteEffects
421+ (JNIEnv* env, jclass, jint numEffects, jobject buffer)
422+{
423+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteEffects for numEffects: %d", numEffects);
424+ ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
425+ alDeleteEffects((ALsizei)numEffects, pBuffers);
426+}
427+
428+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteAuxiliaryEffectSlots
429+ (JNIEnv* env, jclass, jint numEffectSlots, jobject buffer)
430+{
431+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteAuxiliaryEffectSlots for numEffectSlots: %d", numEffectSlots);
432+ ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
433+ alDeleteAuxiliaryEffectSlots((ALsizei)numEffectSlots, pBuffers);
434+}
435+
436+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenFilters
437+ (JNIEnv* env, jclass, jint numFilters, jobject buffer)
438+{
439+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenFilters for numFilters: %d", numFilters);
440+ ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
441+ alGenFilters((ALsizei)numFilters, pBuffers);
442+}
443+
444+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilteri
445+ (JNIEnv *, jclass, jint filter, jint param, jint value)
446+{
447+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alFilteri for filter: %d, param: %d, value: %d", filter, param, value);
448+ alFilteri((ALuint)filter, (ALenum)param, (ALint)value);
449+}
450+
451+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilterf
452+ (JNIEnv *, jclass, jint filter, jint param, jfloat value)
453+{
454+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alFilterf for filter: %d, param: %d, value: %f", filter, param, value);
455+ alFilterf((ALuint)filter, (ALenum)param, (ALfloat)value);
456+}
457+
458+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSource3i
459+ (JNIEnv *, jclass, jint source, jint param, jint value1, jint value2, jint value3)
460+{
461+// __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);
462+ alSource3i((ALuint)source, (ALenum)param, (ALint)value1, (ALint)value2, (ALint)value3);
463+}
464+
465+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteFilters
466+ (JNIEnv* env, jclass, jint numFilters, jobject buffer)
467+{
468+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteFilters for numFilters: %d", numFilters);
469+ ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
470+ alDeleteFilters((ALsizei)numFilters, pBuffers);
471+}
472+
473+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffectf
474+ (JNIEnv *, jclass, jint effect, jint param, jfloat value)
475+{
476+// __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alEffectf for effect: %d, param: %d, value: %d", effect, param, value);
477+ alEffectf((ALuint)effect, (ALenum)param, (ALfloat)value);
478+}
329479
330480
331481 #ifdef __cplusplus
--- a/engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h
+++ b/engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h
@@ -201,6 +201,118 @@ JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRendere
201201 JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alListener3f
202202 (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat);
203203
204+/*
205+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
206+ * Method: alcIsExtensionPresent
207+ * Signature: (Ljava/lang/String;)Z
208+ */
209+JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcIsExtensionPresent
210+ (JNIEnv *, jclass, jstring);
211+
212+/*
213+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
214+ * Method: alcGetInteger
215+ * Signature: (ILjava/nio/IntBuffer;I)V
216+ */
217+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcGetInteger
218+ (JNIEnv *, jclass, jint, jobject, jint);
219+
220+/*
221+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
222+ * Method: alGenAuxiliaryEffectSlots
223+ * Signature: (ILjava/nio/IntBuffer;)V
224+ */
225+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenAuxiliaryEffectSlots
226+ (JNIEnv *, jclass, jint, jobject);
227+
228+/*
229+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
230+ * Method: alGenEffects
231+ * Signature: (ILjava/nio/IntBuffer;)V
232+ */
233+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenEffects
234+ (JNIEnv *, jclass, jint, jobject);
235+
236+/*
237+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
238+ * Method: alEffecti
239+ * Signature: (III)V
240+ */
241+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffecti
242+ (JNIEnv *, jclass, jint, jint, jint);
243+
244+/*
245+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
246+ * Method: alAuxiliaryEffectSloti
247+ * Signature: (III)V
248+ */
249+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alAuxiliaryEffectSloti
250+ (JNIEnv *, jclass, jint, jint, jint);
251+
252+/*
253+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
254+ * Method: alDeleteEffects
255+ * Signature: (ILjava/nio/IntBuffer;)V
256+ */
257+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteEffects
258+ (JNIEnv *, jclass, jint, jobject);
259+
260+/*
261+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
262+ * Method: alDeleteAuxiliaryEffectSlots
263+ * Signature: (ILjava/nio/IntBuffer;)V
264+ */
265+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteAuxiliaryEffectSlots
266+ (JNIEnv *, jclass, jint, jobject);
267+
268+/*
269+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
270+ * Method: alGenFilters
271+ * Signature: (ILjava/nio/IntBuffer;)V
272+ */
273+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenFilters
274+ (JNIEnv *, jclass, jint, jobject);
275+
276+/*
277+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
278+ * Method: alFilteri
279+ * Signature: (III)V
280+ */
281+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilteri
282+ (JNIEnv *, jclass, jint, jint, jint);
283+
284+/*
285+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
286+ * Method: alFilterf
287+ * Signature: (IIF)V
288+ */
289+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilterf
290+ (JNIEnv *, jclass, jint, jint, jfloat);
291+
292+/*
293+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
294+ * Method: alSource3i
295+ * Signature: (IIIII)V
296+ */
297+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSource3i
298+ (JNIEnv *, jclass, jint, jint, jint, jint, jint);
299+
300+/*
301+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
302+ * Method: alDeleteFilters
303+ * Signature: (ILjava/nio/IntBuffer;)V
304+ */
305+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteFilters
306+ (JNIEnv *, jclass, jint, jobject);
307+
308+/*
309+ * Class: com_jme3_audio_android_AndroidOpenALSoftAudioRenderer
310+ * Method: alEffectf
311+ * Signature: (IIF)V
312+ */
313+JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffectf
314+ (JNIEnv *, jclass, jint, jint, jfloat);
315+
204316 #ifdef __cplusplus
205317 }
206318 #endif