예제 #1
0
        public IALReverb GenReverb(DSPParameter[] parameters)
        {
            uint slot, effect;

            EFX.alGenAuxiliaryEffectSlots(1, out slot);
            EFX.alGenEffects(1, out effect);
            // Set up the Reverb Effect
            EFX.alEffecti(
                effect,
                EFX.AL_EFFECT_TYPE,
                EFX.AL_EFFECT_EAXREVERB
                );

            IALReverb result = new OpenALReverb(slot, effect);

            // Apply initial values
            SetReverbReflectionsDelay(result, parameters[0].Value);
            SetReverbDelay(result, parameters[1].Value);
            SetReverbPositionLeft(result, parameters[2].Value);
            SetReverbPositionRight(result, parameters[3].Value);
            SetReverbPositionLeftMatrix(result, parameters[4].Value);
            SetReverbPositionRightMatrix(result, parameters[5].Value);
            SetReverbEarlyDiffusion(result, parameters[6].Value);
            SetReverbLateDiffusion(result, parameters[7].Value);
            SetReverbLowEQGain(result, parameters[8].Value);
            SetReverbLowEQCutoff(result, parameters[9].Value);
            SetReverbHighEQGain(result, parameters[10].Value);
            SetReverbHighEQCutoff(result, parameters[11].Value);
            SetReverbRearDelay(result, parameters[12].Value);
            SetReverbRoomFilterFrequency(result, parameters[13].Value);
            SetReverbRoomFilterMain(result, parameters[14].Value);
            SetReverbRoomFilterHighFrequency(result, parameters[15].Value);
            SetReverbReflectionsGain(result, parameters[16].Value);
            SetReverbGain(result, parameters[17].Value);
            SetReverbDecayTime(result, parameters[18].Value);
            SetReverbDensity(result, parameters[19].Value);
            SetReverbRoomSize(result, parameters[20].Value);
            SetReverbWetDryMix(result, parameters[21].Value);

            // Bind the Effect to the EffectSlot. XACT will use the EffectSlot.
            EFX.alAuxiliaryEffectSloti(
                slot,
                EFX.AL_EFFECTSLOT_EFFECT,
                (int)effect
                );

#if VERBOSE_AL_DEBUGGING
            CheckALError();
#endif
            return(result);
        }
예제 #2
0
        public DSPReverbEffect(DSPParameter[] parameters) : base()
        {
            // Set up the Reverb Effect
            EFX.alEffecti(
                effectHandle,
                EFX.AL_EFFECT_TYPE,
                EFX.AL_EFFECT_EAXREVERB
                );

            // TODO: Use DSP Parameters on EAXReverb Effect. They don't bind very cleanly. :/

            // Bind the Effect to the EffectSlot. XACT will use the EffectSlot.
            EFX.alAuxiliaryEffectSloti(
                Handle,
                EFX.AL_EFFECTSLOT_EFFECT,
                (int)effectHandle
                );
        }
예제 #3
0
파일: DSPEffect.cs 프로젝트: zwcloud/FNA
        public DSPReverbEffect(DSPParameter[] parameters) : base()
        {
            // Set up the Reverb Effect
            EFX.alEffecti(
                effectHandle,
                EFX.AL_EFFECT_TYPE,
                EFX.AL_EFFECT_EAXREVERB
                );

            // Apply initial values
            SetReflectionsDelay(parameters[0].Value);
            SetReverbDelay(parameters[1].Value);
            SetPositionLeft(parameters[2].Value);
            SetPositionRight(parameters[3].Value);
            SetPositionLeftMatrix(parameters[4].Value);
            SetPositionRightMatrix(parameters[5].Value);
            SetEarlyDiffusion(parameters[6].Value);
            SetLateDiffusion(parameters[7].Value);
            SetLowEQGain(parameters[8].Value);
            SetLowEQCutoff(parameters[9].Value);
            SetHighEQGain(parameters[10].Value);
            SetHighEQCutoff(parameters[11].Value);
            SetRearDelay(parameters[12].Value);
            SetRoomFilterFrequency(parameters[13].Value);
            SetRoomFilterMain(parameters[14].Value);
            SetRoomFilterHighFrequency(parameters[15].Value);
            SetReflectionsGain(parameters[16].Value);
            SetReverbGain(parameters[17].Value);
            SetDecayTime(parameters[18].Value);
            SetDensity(parameters[19].Value);
            SetRoomSize(parameters[20].Value);
            SetWetDryMix(parameters[21].Value);

            // Bind the Effect to the EffectSlot. XACT will use the EffectSlot.
            EFX.alAuxiliaryEffectSloti(
                Handle,
                EFX.AL_EFFECTSLOT_EFFECT,
                (int)effectHandle
                );
        }