public DSPEffect() { // Generate the EffectSlot and Effect uint handle; EFX.alGenAuxiliaryEffectSlots((IntPtr)1, out handle); Handle = handle; EFX.alGenEffects((IntPtr)1, out effectHandle); }
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); }