private void AnalyzeCustomLpFilter() { var order = 23; var freq = 0.22; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); _filter = new FirFilter(DesignFilter.FirWinLp(order, freq)); // for double precision and FDA: //var tf = new TransferFunction(DesignFilter.FirWinLp(order, freq)); //_filter = new FirFilter(tf); filterParamsDataGrid.RowCount = 2; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq; }
private void AnalyzeCustomFirFilter() { var b = new List <double>(); var size = filterParamsDataGrid.RowCount; if (size == 0) { b.AddRange(new [] { 1, 0.4, -0.6 }); } else { for (var i = 0; i < filterParamsDataGrid.RowCount; i++) { var param = filterParamsDataGrid.Rows[i].Cells[0].Value; if (param.ToString().StartsWith("b")) { b.Add(Convert.ToDouble(filterParamsDataGrid.Rows[i].Cells[1].Value)); } } } _filter = new FirFilter(b); filterParamsDataGrid.RowCount = b.Count + 1; for (var i = 0; i < b.Count; i++) { filterParamsDataGrid.Rows[i].Cells[0].Value = "b" + i; filterParamsDataGrid.Rows[i].Cells[1].Value = b[i]; } filterParamsDataGrid.Rows[b.Count].Cells[0].Value = "a0"; filterParamsDataGrid.Rows[b.Count].Cells[1].Value = 1.0; }
private void AnalyzeCustomBandpassFilter() { var order = 231; var freq1 = 0.06; var freq2 = 0.2; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq1 = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); freq2 = Convert.ToDouble(filterParamsDataGrid.Rows[2].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); //_filter = new FirFilter(DesignFilter.FirWinBp(order, freq1, freq2)); // for double precision and FDA: var tf = new TransferFunction(DesignFilter.FirWinBp(order, freq1, freq2)); _filter = new FirFilter(tf); filterParamsDataGrid.RowCount = 3; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq1"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq1; filterParamsDataGrid.Rows[2].Cells[0].Value = "freq2"; filterParamsDataGrid.Rows[2].Cells[1].Value = freq2; }
private void AnalyzeEllipticFilter() { var order = 4; var freq = 0.15; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); // example how to convert linear scale specifications to decibel scale: var deltaPass = 0.96; var deltaStop = 0.04; var ripplePassDb = Utils.Scale.ToDecibel(1 / deltaPass); var attenuateDb = Utils.Scale.ToDecibel(1 / deltaStop); _filter = new Filters.Elliptic.LowPassFilter(freq, order, ripplePassDb, attenuateDb); filterParamsDataGrid.RowCount = 2; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq; }
private void AnalyzeCustomBandpassFilter() { var order = 231; var freq1 = 0.06; var freq2 = 0.2; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq1 = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); freq2 = Convert.ToDouble(filterParamsDataGrid.Rows[2].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); _filter = DesignFilter.FirBp(order, freq1, freq2); filterParamsDataGrid.RowCount = 3; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq1"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq1; filterParamsDataGrid.Rows[2].Cells[0].Value = "freq2"; filterParamsDataGrid.Rows[2].Cells[1].Value = freq2; }
private void AnalyzeCustomIirFilter() { var b = new List <double>(); var a = new List <double>(); if (filterParamsDataGrid.RowCount == 0) { b.AddRange(new[] { 1, -0.4, 0.6 }); a.AddRange(new[] { 1, 0.4, 0.2 }); } else { for (var i = 0; i < filterParamsDataGrid.RowCount; i++) { var param = filterParamsDataGrid.Rows[i].Cells[0].Value; if (param.ToString().StartsWith("b")) { b.Add(Convert.ToSingle(filterParamsDataGrid.Rows[i].Cells[1].Value)); } else { a.Add(Convert.ToSingle(filterParamsDataGrid.Rows[i].Cells[1].Value)); } } } // lose some precision: _filter = new IirFilter(b, a); // double precision: // _filter = new IirFilter(new TransferFunction(b.ToArray(), a.ToArray())); filterParamsDataGrid.RowCount = a.Count + b.Count; var pos = 0; for (var i = 0; i < b.Count; i++, pos++) { filterParamsDataGrid.Rows[pos].Cells[0].Value = "b" + i; filterParamsDataGrid.Rows[pos].Cells[1].Value = b[i]; } for (var i = 0; i < a.Count; i++, pos++) { filterParamsDataGrid.Rows[pos].Cells[0].Value = "a" + i; filterParamsDataGrid.Rows[pos].Cells[1].Value = a[i]; } }
private void AnalyzePreemphasisFilter() { var pre = 0.95; if (filterParamsDataGrid.RowCount > 0) { pre = Convert.ToDouble(filterParamsDataGrid.Rows[0].Cells[1].Value); } _filter = new PreEmphasisFilter(pre); filterParamsDataGrid.RowCount = 1; filterParamsDataGrid.Rows[0].Cells[0].Value = "a"; filterParamsDataGrid.Rows[0].Cells[1].Value = pre.ToString("F2"); orderNumeratorTextBox.Text = "1"; orderDenominatorTextBox.Text = "0"; }
private void AnalyzeSavitzkyGolayFilter() { var size = 9; if (filterParamsDataGrid.RowCount > 0) { size = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); } orderNumeratorTextBox.Text = (size - 1).ToString(); orderDenominatorTextBox.Text = "0"; _filter = new SavitzkyGolayFilter(size); filterParamsDataGrid.RowCount = 1; filterParamsDataGrid.Rows[0].Cells[0].Value = "size"; filterParamsDataGrid.Rows[0].Cells[1].Value = size; }
private void AnalyzeRecursiveMovingAverageFilter() { var size = 3; if (filterParamsDataGrid.RowCount > 0) { size = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); } orderNumeratorTextBox.Text = (size - 1).ToString(); orderDenominatorTextBox.Text = "0"; _filter = new MovingAverageRecursiveFilter(size); filterParamsDataGrid.RowCount = 1; filterParamsDataGrid.Rows[0].Cells[0].Value = "size"; filterParamsDataGrid.Rows[0].Cells[1].Value = size; }
/// <summary> /// Constructor /// </summary> /// <param name="gain"></param> /// <param name="mix"></param> /// <param name="q"></param> /// <param name="dist"></param> /// <param name="rh"></param> /// <param name="rl"></param> public TubeDistortionEffect(float gain = 20.0f, float mix = 0.9f, float q = -0.2f, float dist = 5, float rh = 0.995f, float rl = 0.5f) { Gain = gain; Mix = mix; Q = q; Dist = dist; Rh = rh; Rl = rl; var filter1 = new IirFilter(new[] { 1.0, -2, 1 }, new[] { 1.0, -2 * Rh, Rh * Rh }); var filter2 = new IirFilter(new[] { 1.0 - Rl }, new[] { 1.0, -Rl }); _outputFilter = filter1 * filter2; }
private void AnalyzeThiranFilter() { var order = 10; var delta = 10.3; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); delta = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); _filter = new ThiranFilter(order, order + delta); filterParamsDataGrid.RowCount = 2; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "delta"; filterParamsDataGrid.Rows[1].Cells[1].Value = delta; }
private void AnalyzeBesselFilter() { var order = 4; var freq = 0.15; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); _filter = new Filters.Bessel.LowPassFilter(freq, order); filterParamsDataGrid.RowCount = 2; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq; }
private void AnalyzeChebyshevIIFilter() { var order = 4; var freq = 0.25; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); _filter = new Filters.ChebyshevII.BandStopFilter(freq, 0.4, order); filterParamsDataGrid.RowCount = 2; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq; }
private void AnalyzeCustomLpFilter() { var order = 15; var freq = 0.1; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); freq = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); _filter = DesignFilter.FirLp(order, freq); filterParamsDataGrid.RowCount = 2; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "freq"; filterParamsDataGrid.Rows[1].Cells[1].Value = freq; }
private void AnalyzeEquirippleLpFilter() { var order = 47; var fp = 0.15; var fa = 0.18; var ripplePass = 1.0; // dB var rippleStop = 42.0; // dB if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); fp = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); fa = Convert.ToDouble(filterParamsDataGrid.Rows[2].Cells[1].Value); ripplePass = Convert.ToDouble(filterParamsDataGrid.Rows[3].Cells[1].Value); rippleStop = Convert.ToDouble(filterParamsDataGrid.Rows[4].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); var wp = Remez.DbToPassbandWeight(ripplePass); var wa = Remez.DbToStopbandWeight(rippleStop); _filter = new FirFilter(DesignFilter.FirEquirippleLp(order, fp, fa, wp, wa)); filterParamsDataGrid.RowCount = 5; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "fp"; filterParamsDataGrid.Rows[1].Cells[1].Value = fp; filterParamsDataGrid.Rows[2].Cells[0].Value = "fa"; filterParamsDataGrid.Rows[2].Cells[1].Value = fa; filterParamsDataGrid.Rows[3].Cells[0].Value = "rp"; filterParamsDataGrid.Rows[3].Cells[1].Value = ripplePass; filterParamsDataGrid.Rows[4].Cells[0].Value = "rs"; filterParamsDataGrid.Rows[4].Cells[1].Value = rippleStop; }
private void buttonAnalyzeFilter_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; switch (filterTypesComboBox.Text) { case "Custom IIR": AnalyzeCustomIirFilter(); break; case "Custom FIR": AnalyzeCustomFirFilter(); break; case "BiQuad LP": case "BiQuad HP": case "BiQuad BP": case "BiQuad notch": case "BiQuad allpass": case "BiQuad peaking": case "BiQuad lowshelf": case "BiQuad highshelf": AnalyzeBiQuadFilter(filterTypesComboBox.Text); break; case "One-pole LP": _filter = new Filters.OnePole.LowPassFilter(0.25); break; case "One-pole HP": _filter = new Filters.OnePole.HighPassFilter(0.25); break; case "Comb feed-forward": _filter = new CombFeedforwardFilter(500); break; case "Comb feed-back": _filter = new CombFeedbackFilter(1800); break; case "Moving average": AnalyzeMovingAverageFilter(); break; case "Moving average recursive": AnalyzeRecursiveMovingAverageFilter(); break; case "Savitzky-Golay": AnalyzeSavitzkyGolayFilter(); break; case "Pre-emphasis": AnalyzePreemphasisFilter(); break; case "De-emphasis": _filter = new DeEmphasisFilter(); break; case "DC removal": _filter = new DcRemovalFilter(); break; case "RASTA": _filter = new RastaFilter(); break; case "Butterworth": AnalyzeButterworthFilter(); break; case "Elliptic": AnalyzeEllipticFilter(); break; case "Chebyshev-I": AnalyzeChebyshevIFilter(); break; case "Chebyshev-II": AnalyzeChebyshevIIFilter(); break; case "Bessel": AnalyzeBesselFilter(); break; case "Thiran": AnalyzeThiranFilter(); break; case "Equiripple LP": AnalyzeEquirippleLpFilter(); break; case "Equiripple BS": AnalyzeEquirippleBsFilter(); break; case "Custom LP/HP": AnalyzeCustomLpFilter(); break; case "Custom BP/BR": AnalyzeCustomBandpassFilter(); break; } // we can load TF from csv file: //using (var csv = new FileStream("fir.csv", FileMode.Open)) //{ // _filter = new FirFilter(TransferFunction.FromCsv(csv)); //} var tf = _filter.Tf; // we can save TF to csv file: //using (var csv = new FileStream("fir.csv", FileMode.Create)) //{ // tf.ToCsv(csv); //} magnitudeResponsePanel.Line = tf.FrequencyResponse().Magnitude.ToFloats(); UpdatePhaseResponse(); // adjust this if you need finer precision: tf.CalculateZpIterations = int.Parse(zpIterationsTextBox.Text); if (tf.Numerator.Length + tf.Denominator.Length < 70) { poleZeroPanel.Zeros = tf.Zeros; poleZeroPanel.Poles = tf.Poles; } numeratorListBox.DataSource = tf.Numerator; denominatorListBox.DataSource = tf.Denominator; Cursor.Current = Cursors.Default; }
private void buttonAnalyzeFilter_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; switch (filterTypesComboBox.Text) { case "Custom IIR": AnalyzeCustomIirFilter(); break; case "Custom FIR": AnalyzeCustomFirFilter(); break; case "BiQuad LP": case "BiQuad HP": case "BiQuad BP": case "BiQuad notch": case "BiQuad allpass": case "BiQuad peaking": case "BiQuad lowshelf": case "BiQuad highshelf": AnalyzeBiQuadFilter(filterTypesComboBox.Text); break; case "One-pole LP": _filter = new Filters.OnePole.LowPassFilter(0.25); break; case "One-pole HP": _filter = new Filters.OnePole.HighPassFilter(0.25); break; case "Comb feed-forward": _filter = new CombFeedforwardFilter(500); break; case "Comb feed-back": _filter = new CombFeedbackFilter(1800); break; case "Moving average": AnalyzeMovingAverageFilter(); break; case "Moving average recursive": AnalyzeRecursiveMovingAverageFilter(); break; case "Pre-emphasis": AnalyzePreemphasisFilter(); break; case "De-emphasis": _filter = new DeEmphasisFilter(); break; case "DC removal": _filter = new DcRemovalFilter(); break; case "RASTA": _filter = new RastaFilter(); break; case "Butterworth": AnalyzeButterworthFilter(); break; case "Custom LP/HP": AnalyzeCustomLpFilter(); break; } magnitudeResponsePanel.Line = _filter.FrequencyResponse().Magnitude.ToFloats(); UpdatePhaseResponse(); if (_filter.Tf.Numerator.Length + _filter.Tf.Denominator.Length < 50) { poleZeroPanel.Zeros = _filter.Tf.Zeros; poleZeroPanel.Poles = _filter.Tf.Poles; } numeratorListBox.DataSource = _filter.Tf.Numerator; denominatorListBox.DataSource = _filter.Tf.Denominator; //using (var csv = new FileStream("fir.csv", FileMode.Open)) //{ // _filter = FirFilter.FromCsv(csv); //} Cursor.Current = Cursors.Default; }
private void AnalyzeBiQuadFilter(string filterType) { var freq = 0.1; var q = 1.0; var gain = 9.0; for (var i = 0; i < filterParamsDataGrid.RowCount; i++) { if (filterParamsDataGrid.Rows[i].Cells[0].Value.ToString() == "freq") { freq = Convert.ToDouble(filterParamsDataGrid.Rows[i].Cells[1].Value); } if (filterParamsDataGrid.Rows[i].Cells[0].Value.ToString() == "q") { q = Convert.ToDouble(filterParamsDataGrid.Rows[i].Cells[1].Value); } if (filterParamsDataGrid.Rows[i].Cells[0].Value.ToString() == "gain") { gain = Convert.ToDouble(filterParamsDataGrid.Rows[i].Cells[1].Value); } } string[] parameters = { "freq", "q" }; double[] values = { freq, q }; switch (filterType) { case "BiQuad LP": _filter = new LowPassFilter(freq, q); break; case "BiQuad HP": _filter = new HighPassFilter(freq, q); break; case "BiQuad BP": _filter = new Filters.BiQuad.BandPassFilter(freq, q); break; case "BiQuad notch": _filter = new NotchFilter(freq, q); break; case "BiQuad allpass": _filter = new AllPassFilter(freq, q); break; case "BiQuad peaking": _filter = new PeakFilter(freq, q, gain); parameters = new[] { "freq", "q", "gain" }; values = new[] { freq, q, gain }; break; case "BiQuad lowshelf": _filter = new LowShelfFilter(freq, q, gain); parameters = new[] { "freq", "q", "gain" }; values = new[] { freq, q, gain }; break; case "BiQuad highshelf": _filter = new HighShelfFilter(freq, q, gain); parameters = new[] { "freq", "q", "gain" }; values = new[] { freq, q, gain }; break; } filterParamsDataGrid.RowCount = parameters.Length; for (var i = 0; i < parameters.Length; i++) { filterParamsDataGrid.Rows[i].Cells[0].Value = parameters[i]; filterParamsDataGrid.Rows[i].Cells[1].Value = values[i]; } orderNumeratorTextBox.Text = "2"; orderDenominatorTextBox.Text = "2"; }
private void AnalyzeEquirippleBsFilter() { var order = 51; var fp1 = 0.19; var fa1 = 0.21; var fa2 = 0.39; var fp2 = 0.41; var ripplePass1 = 1.0; var rippleStop = 24.0; var ripplePass2 = 3.0; if (filterParamsDataGrid.RowCount > 0) { order = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value); fp1 = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value); fa1 = Convert.ToDouble(filterParamsDataGrid.Rows[2].Cells[1].Value); fa2 = Convert.ToDouble(filterParamsDataGrid.Rows[3].Cells[1].Value); fp2 = Convert.ToDouble(filterParamsDataGrid.Rows[4].Cells[1].Value); ripplePass1 = Convert.ToDouble(filterParamsDataGrid.Rows[5].Cells[1].Value); rippleStop = Convert.ToDouble(filterParamsDataGrid.Rows[6].Cells[1].Value); ripplePass2 = Convert.ToDouble(filterParamsDataGrid.Rows[7].Cells[1].Value); } orderNumeratorTextBox.Text = (order - 1).ToString(); orderDenominatorTextBox.Text = (order - 1).ToString(); var freqs = new[] { 0, fp1, fa1, fa2, fp2, 0.5 }; var weights = new[] { Remez.DbToPassbandWeight(ripplePass1), Remez.DbToStopbandWeight(rippleStop), Remez.DbToPassbandWeight(ripplePass2), }; var remez = new Remez(order, freqs, new double[] { 1, 0, 1 }, weights); _filter = new FirFilter(remez.Design()); var extrema = string.Join("\t", Enumerable.Range(0, remez.K).Select(e => remez.ExtremalFrequencies[e].ToString("F5"))); var message = $"Iterations: {remez.Iterations}\n\nEstimated order: {Remez.EstimateOrder(freqs, weights)}\n\nExtrema:\n{extrema}"; MessageBox.Show(message); filterParamsDataGrid.RowCount = 8; filterParamsDataGrid.Rows[0].Cells[0].Value = "order"; filterParamsDataGrid.Rows[0].Cells[1].Value = order; filterParamsDataGrid.Rows[1].Cells[0].Value = "fp1"; filterParamsDataGrid.Rows[1].Cells[1].Value = fp1; filterParamsDataGrid.Rows[2].Cells[0].Value = "fa1"; filterParamsDataGrid.Rows[2].Cells[1].Value = fa1; filterParamsDataGrid.Rows[3].Cells[0].Value = "fa2"; filterParamsDataGrid.Rows[3].Cells[1].Value = fa2; filterParamsDataGrid.Rows[4].Cells[0].Value = "fp2"; filterParamsDataGrid.Rows[4].Cells[1].Value = fp2; filterParamsDataGrid.Rows[5].Cells[0].Value = "rp1"; filterParamsDataGrid.Rows[5].Cells[1].Value = ripplePass1; filterParamsDataGrid.Rows[6].Cells[0].Value = "rs"; filterParamsDataGrid.Rows[6].Cells[1].Value = rippleStop; filterParamsDataGrid.Rows[7].Cells[0].Value = "rp2"; filterParamsDataGrid.Rows[7].Cells[1].Value = ripplePass2; }