private void UpdatePhaseResponse() { var fr = _filter.FrequencyResponse(); switch (phaseViewComboBox.Text) { case "Phase unwrapped": phaseResponsePanel.Line = fr.PhaseUnwrapped.ToFloats(); break; case "Group delay": phaseResponsePanel.Line = _filter.Tf.GroupDelay().ToFloats(); // or like this: // fr.GroupDelay.ToFloats(); break; case "Phase delay": phaseResponsePanel.Line = _filter.Tf.PhaseDelay().ToFloats(); // or like this: // fr.PhaseDelay.ToFloats(); break; default: phaseResponsePanel.Line = fr.Phase.ToFloats(); break; } }
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; }