public void ApplyEffects(SecondarySoundBuffer ab) { var boxes = new CheckBox[] { ChorusCheckBox, CompressorCheckBox, DistortionCheckBox, EchoCheckBox, FlangerCheckBox, GargleCheckBox, ParamEqCheckBox, ReverbCheckBox, Reverb3dCheckBox, }; var effects = new List <Guid>(); // Create array of enabled effects. if (ChorusCheckBox.Checked) { effects.Add(StandardChorusGuid); } if (CompressorCheckBox.Checked) { effects.Add(StandardCompressorGuid); } if (DistortionCheckBox.Checked) { effects.Add(StandardDistortionGuid); } if (EchoCheckBox.Checked) { effects.Add(StandardEchoGuid); } if (FlangerCheckBox.Checked) { effects.Add(StandardFlangerGuid); } if (GargleCheckBox.Checked) { effects.Add(StandardGargleGuid); } if (ParamEqCheckBox.Checked) { effects.Add(StandardParamEqGuid); } if (ReverbCheckBox.Checked) { effects.Add(StandardWavesReverbGuid); } if (Reverb3dCheckBox.Checked) { effects.Add(StandardI3DL2ReverbGuid); } // Set effects. if (effects.Count == 0) { return; } ab.SetEffect(effects.ToArray()); int index; if (ChorusCheckBox.Checked) { index = effects.IndexOf(StandardChorusGuid); var chorus = ab.GetEffect <Chorus>(index); var chorusParamaters = chorus.AllParameters; ApplyChorusEffect(ref chorusParamaters); chorus.AllParameters = chorusParamaters; } if (CompressorCheckBox.Checked) { index = effects.IndexOf(StandardCompressorGuid); var compressor = ab.GetEffect <Compressor>(index); var compressorParamaters = compressor.AllParameters; ApplyCompressorEffect(ref compressorParamaters); compressor.AllParameters = compressorParamaters; } if (DistortionCheckBox.Checked) { index = effects.IndexOf(StandardDistortionGuid); var distortion = ab.GetEffect <Distortion>(index); var distortionParamaters = distortion.AllParameters; ApplyDistortionEffect(ref distortionParamaters); distortion.AllParameters = distortionParamaters; } if (EchoCheckBox.Checked) { index = effects.IndexOf(StandardEchoGuid); var echo = ab.GetEffect <Echo>(index); var echoParamaters = echo.AllParameters; ApplyEchoEffect(ref echoParamaters); echo.AllParameters = echoParamaters; } if (FlangerCheckBox.Checked) { index = effects.IndexOf(StandardFlangerGuid); var flanger = ab.GetEffect <Flanger>(index); var flangerParamaters = flanger.AllParameters; ApplyFlangerEffect(ref flangerParamaters); flanger.AllParameters = flangerParamaters; } if (GargleCheckBox.Checked) { index = effects.IndexOf(StandardGargleGuid); var gargle = ab.GetEffect <Gargle>(index); var gargleParamaters = gargle.AllParameters; ApplyGargleEffect(ref gargleParamaters); gargle.AllParameters = gargleParamaters; } if (ParamEqCheckBox.Checked) { index = effects.IndexOf(StandardParamEqGuid); var paramEq = ab.GetEffect <ParametricEqualizer>(index); var paramEqParamaters = paramEq.AllParameters; ApplyParamEqEffect(ref paramEqParamaters); paramEq.AllParameters = paramEqParamaters; } if (ReverbCheckBox.Checked) { index = effects.IndexOf(StandardWavesReverbGuid); var reverb = ab.GetEffect <WavesReverb>(index); var reverbParamaters = reverb.AllParameters; ApplyReverbEffect(ref reverbParamaters); reverb.AllParameters = reverbParamaters; } if (Reverb3dCheckBox.Checked) { index = effects.IndexOf(StandardI3DL2ReverbGuid); var reverb3D = ab.GetEffect <I3DL2Reverb>(index); var reverb3DParamaters = reverb3D.AllParameters; ApplyReverb3dEffect(ref reverb3DParamaters); reverb3D.AllParameters = reverb3DParamaters; } }