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); }
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 ); }
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 ); }