lbajardsilogic@223
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@223
|
2
|
lbajardsilogic@223
|
3 /* Sound Access
|
lbajardsilogic@223
|
4 EASAIER client application.
|
benoitrigolleau@240
|
5 Silogic 2008. Laure Bajard.
|
lbajardsilogic@223
|
6
|
lbajardsilogic@223
|
7 Integration of the filter provided by:
|
lbajardsilogic@223
|
8 Dublin Institute of Technology - Audio Research Group 2007
|
lbajardsilogic@223
|
9 www.audioresearchgroup.com
|
lbajardsilogic@223
|
10 Author: Dan Barry
|
lbajardsilogic@223
|
11
|
lbajardsilogic@223
|
12 This program is free software; you can redistribute it and/or
|
lbajardsilogic@223
|
13 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@223
|
14 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@223
|
15 License, or (at your option) any later version. See the file
|
lbajardsilogic@223
|
16 COPYING included with this distribution for more information.
|
lbajardsilogic@223
|
17 */
|
lbajardsilogic@241
|
18
|
lbajardsilogic@241
|
19 #ifndef _EQUALIZER_FILTER_H_
|
lbajardsilogic@241
|
20 #define _EQUALIZER_FILTER_H_
|
lbajardsilogic@241
|
21
|
lbajardsilogic@241
|
22 #include <QMutex>
|
lbajardsilogic@241
|
23
|
lbajardsilogic@241
|
24 #include "base/PropertyContainer.h"
|
lbajardsilogic@241
|
25
|
lbajardsilogic@241
|
26 class EqualizerFilter : public PropertyContainer
|
lbajardsilogic@241
|
27 {
|
lbajardsilogic@241
|
28 Q_OBJECT
|
lbajardsilogic@241
|
29
|
lbajardsilogic@241
|
30 public:
|
lbajardsilogic@241
|
31 EqualizerFilter(size_t framesize, QMutex *mutex);
|
lbajardsilogic@241
|
32 virtual ~EqualizerFilter();
|
lbajardsilogic@241
|
33
|
lbajardsilogic@241
|
34 virtual QString getPropertyContainerIconName() const {return "";}
|
lbajardsilogic@241
|
35
|
lbajardsilogic@241
|
36 virtual QString getPropertyContainerName() const {return "Time and Pitch filter";}
|
lbajardsilogic@241
|
37
|
lbajardsilogic@241
|
38 virtual QString getPropertyGroupName(const PropertyName &) const;
|
lbajardsilogic@241
|
39
|
lbajardsilogic@241
|
40 virtual PropertyList getProperties() const;
|
lbajardsilogic@241
|
41 virtual QString getPropertyLabel(const PropertyName &) const;
|
lbajardsilogic@241
|
42 virtual PropertyType getPropertyType(const PropertyName &) const;
|
lbajardsilogic@241
|
43 virtual int getPropertyRangeAndValue(const PropertyName &,
|
lbajardsilogic@241
|
44 int *min, int *max, int *deflt) const;
|
lbajardsilogic@241
|
45 virtual QString getPropertyValueLabel(const PropertyName &,
|
lbajardsilogic@241
|
46 int value) const;
|
lbajardsilogic@241
|
47
|
lbajardsilogic@241
|
48 virtual void setProperty(const PropertyName &, int value);
|
lbajardsilogic@241
|
49 virtual void setProperty(const PropertyName &, QVector<float> value);
|
lbajardsilogic@241
|
50
|
lbajardsilogic@241
|
51 inline bool isEnabled() {return m_enabled;}
|
lbajardsilogic@241
|
52
|
lbajardsilogic@241
|
53 inline bool bypass() {return !m_enabled;}
|
lbajardsilogic@241
|
54 inline bool simpleMode() {return m_simpleMode;}
|
lbajardsilogic@241
|
55 inline int* gainband() {return m_gainband;}
|
lbajardsilogic@241
|
56
|
lbajardsilogic@241
|
57 inline QVector<float>& curve() {return m_eqcurve;}
|
lbajardsilogic@241
|
58
|
lbajardsilogic@241
|
59 void emitPlotFFTArray(float *signal, int framesize);
|
lbajardsilogic@241
|
60
|
lbajardsilogic@241
|
61 void create_filterbands();
|
lbajardsilogic@241
|
62
|
lbajardsilogic@241
|
63 signals:
|
lbajardsilogic@241
|
64 void filterEnabled(bool);
|
lbajardsilogic@241
|
65 void signalChanged(float *);
|
lbajardsilogic@241
|
66 void filterChanged(float *);
|
lbajardsilogic@241
|
67 void enableDrawCurve(bool);
|
lbajardsilogic@241
|
68
|
lbajardsilogic@241
|
69 public slots :
|
lbajardsilogic@241
|
70 void setFilterEnabled(bool b);
|
lbajardsilogic@241
|
71 void setFilterEnabled(int b);
|
lbajardsilogic@241
|
72
|
lbajardsilogic@241
|
73 protected:
|
lbajardsilogic@241
|
74
|
lbajardsilogic@241
|
75 QVector<float> m_eqcurve;
|
lbajardsilogic@241
|
76 float* m_curve;
|
lbajardsilogic@241
|
77 float* m_plotbandcurve;
|
lbajardsilogic@241
|
78
|
lbajardsilogic@241
|
79 bool m_enabled;
|
lbajardsilogic@241
|
80
|
lbajardsilogic@241
|
81 bool m_simpleMode;
|
lbajardsilogic@241
|
82
|
lbajardsilogic@241
|
83 int m_gainband[5];
|
lbajardsilogic@241
|
84 int m_nbBand;
|
lbajardsilogic@241
|
85
|
lbajardsilogic@241
|
86 int m_resolution;
|
lbajardsilogic@241
|
87
|
lbajardsilogic@241
|
88 float **band;
|
lbajardsilogic@241
|
89
|
lbajardsilogic@241
|
90 size_t m_framesize;
|
lbajardsilogic@241
|
91
|
lbajardsilogic@241
|
92 QMutex * m_mutex;
|
lbajardsilogic@241
|
93 };
|
lbajardsilogic@241
|
94
|
lbajardsilogic@223
|
95 #endif |