File: BandPassDialog.h

package info (click to toggle)
kwave 25.04.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,272 kB
  • sloc: cpp: 56,173; xml: 817; perl: 688; sh: 57; makefile: 11
file content (135 lines) | stat: -rw-r--r-- 3,971 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/***************************************************************************
        BandPassDialog.h  -  dialog for the "band_pass" plugin
                             -------------------
    begin                : Tue Jun 24 2003
    copyright            : (C) 2003 by Dave Flogeras
    email                : d.flogeras@unb.ca
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef NOTCH_FILTER_DIALOG_H
#define NOTCH_FILTER_DIALOG_H

#include "config.h"

#include <QDialog>
#include <QObject>
#include <QString>
#include <QStringList>

#include "libkwave/PluginSetupDialog.h"
#include "ui_BandPassDlg.h"

class QWidget;

namespace Kwave
{

    class BandPass;

    class BandPassDialog: public QDialog,
                          public Kwave::PluginSetupDialog,
                          public Ui::BandPassDlg
    {
        Q_OBJECT
    public:

        /**
         * Constructor.
         * @param parent parent widget
         * @param sample_rate sample rate of the audio data to be processed,
         *                    needed for determining the allowed range of
         *                    the cutoff frequency
         */
        BandPassDialog(QWidget *parent, double sample_rate);

        /** Destructor */
        ~BandPassDialog() override;

        /** Returns the parameters as string list */
        QStringList params() override;

        /** Sets the from a list of parameters */
        void setParams(QStringList &params) override;

        /** retruns a pointer to this as a QDialog */
        QDialog *dialog() override { return this; }

    signals:

        /**
         * Emitted whenever the frequency changes
         * @param freq the frequency parameter in Hz
         */
        void freqChanged(double freq);

        /**
         * emitted whenever the bandwidth setting has changed
         * @param bw bandwith parameter [0 .. 1.0]
         */
        void bwChanged(double bw);

        /** Pre-listen mode has been started */
        void startPreListen();

        /** Pre-listen mode has been stopped */
        void stopPreListen();

    protected slots:

        /** called when the freq spinbox or slider value has changed */
        void freqValueChanged(int pos);

        /** called when the bw spinbox or slider value has changed */
        void bwValueChanged(int pos);

        /**
         * called when the "Listen" button has been toggled,
         * to start or stop the pre-listen mode
         */
        void listenToggled(bool listen);

        /**
         * called when the pre-listen mode stopped/aborted
         */
        void listenStopped();

    private slots:

        /** invoke the online help */
        void invokeHelp();

    protected:

        /** Update the graphic display */
        void updateDisplay();

    private:

        /** the cutoff frequency in Hz */
        double m_frequency;

        /** the bw in Hz */
        double m_bw;

        /** sample rate of the signal in samples/sec */
        double m_sample_rate;

        /** filter function for calculating the frequency response */
        Kwave::BandPass *m_filter;

    };
}

#endif /* NOTCH_FILTER_DIALOG_H */

//***************************************************************************
//***************************************************************************