Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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;
        }