2
* Copyright (C) <2007> Stefan Kost <ensonic@users.sf.net>
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Library General Public
6
* License as published by the Free Software Foundation; either
7
* version 2 of the License, or (at your option) any later version.
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Library General Public License for more details.
14
* You should have received a copy of the GNU Library General Public
15
* License along with this library; if not, write to the
16
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
* Boston, MA 02111-1307, USA.
21
* SECTION:element-equalizer-10bands
22
* @short_description: 10-band equalizer
26
* The 10 band equalizer element allows to change the gain of 10 equally distributed
27
* frequency bands between 30 Hz and 15 kHz.
29
* <title>Example launch line</title>
32
* gst-launch filesrc location=song.ogg ! oggdemux ! vorbisdec ! audioconvert ! equalizer-10bands band2=3.0 ! alsasink
34
* This raises the volume of the 3rd band which is at 119 Hz by 3 db.
43
#include "gstiirequalizer.h"
44
#include "gstiirequalizer10bands.h"
61
static void gst_iir_equalizer_10bands_set_property (GObject * object,
62
guint prop_id, const GValue * value, GParamSpec * pspec);
63
static void gst_iir_equalizer_10bands_get_property (GObject * object,
64
guint prop_id, GValue * value, GParamSpec * pspec);
66
GST_DEBUG_CATEGORY_EXTERN (equalizer_debug);
67
#define GST_CAT_DEFAULT equalizer_debug
69
GST_BOILERPLATE (GstIirEqualizer10Bands, gst_iir_equalizer_10bands,
70
GstIirEqualizer, GST_TYPE_IIR_EQUALIZER);
72
/* equalizer implementation */
75
gst_iir_equalizer_10bands_base_init (gpointer g_class)
77
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
78
const GstElementDetails iir_equalizer_details =
79
GST_ELEMENT_DETAILS ("10 Band Equalizer",
80
"Filter/Effect/Audio",
81
"Direct Form 10 band IIR equalizer",
82
"Stefan Kost <ensonic@users.sf.net>");
84
gst_element_class_set_details (element_class, &iir_equalizer_details);
88
gst_iir_equalizer_10bands_class_init (GstIirEqualizer10BandsClass * klass)
90
GObjectClass *gobject_class = (GObjectClass *) klass;
92
gobject_class->set_property = gst_iir_equalizer_10bands_set_property;
93
gobject_class->get_property = gst_iir_equalizer_10bands_get_property;
95
g_object_class_install_property (gobject_class, ARG_BAND0,
96
g_param_spec_double ("band0", "29 Hz",
97
"gain for the frequency band 29 Hz, ranging from -24 dB to +12 dB",
98
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
99
g_object_class_install_property (gobject_class, ARG_BAND1,
100
g_param_spec_double ("band1", "59 Hz",
101
"gain for the frequency band 59 Hz, ranging from -24 dB to +12 dB",
102
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
103
g_object_class_install_property (gobject_class, ARG_BAND2,
104
g_param_spec_double ("band2", "119 Hz",
105
"gain for the frequency band 119 Hz, ranging from -24 dB to +12 dB",
106
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
107
g_object_class_install_property (gobject_class, ARG_BAND3,
108
g_param_spec_double ("band3", "227 Hz",
109
"gain for the frequency band 227 Hz, ranging from -24 dB to +12 dB",
110
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
111
g_object_class_install_property (gobject_class, ARG_BAND4,
112
g_param_spec_double ("band4", "474 Hz",
113
"gain for the frequency band 474 Hz, ranging from -24 dB to +12 dB",
114
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
115
g_object_class_install_property (gobject_class, ARG_BAND5,
116
g_param_spec_double ("band5", "947 Hz",
117
"gain for the frequency band 947 Hz, ranging from -24 dB to +12 dB",
118
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
119
g_object_class_install_property (gobject_class, ARG_BAND6,
120
g_param_spec_double ("band6", "1889 Hz",
121
"gain for the frequency band 1889 Hz, ranging from -24 dB to +12 dB",
122
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
123
g_object_class_install_property (gobject_class, ARG_BAND7,
124
g_param_spec_double ("band7", "3770 Hz",
125
"gain for the frequency band 3770 Hz, ranging from -24 dB to +12 dB",
126
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
127
g_object_class_install_property (gobject_class, ARG_BAND8,
128
g_param_spec_double ("band8", "7523 Hz",
129
"gain for the frequency band 7523 Hz, ranging from -24 dB to +12 dB",
130
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
131
g_object_class_install_property (gobject_class, ARG_BAND9,
132
g_param_spec_double ("band9", "15011 Hz",
133
"gain for the frequency band 15011 Hz, ranging from -24 dB to +12 dB",
134
-24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
138
gst_iir_equalizer_10bands_init (GstIirEqualizer10Bands * equ_n,
139
GstIirEqualizer10BandsClass * g_class)
141
GstIirEqualizer *equ = GST_IIR_EQUALIZER (equ_n);
143
gst_iir_equalizer_compute_frequencies (equ, 10);
147
gst_iir_equalizer_10bands_set_property (GObject * object, guint prop_id,
148
const GValue * value, GParamSpec * pspec)
150
GstIirEqualizer *equ = GST_IIR_EQUALIZER (object);
154
gst_child_proxy_set_property (GST_OBJECT (equ), "band0::gain", value);
157
gst_child_proxy_set_property (GST_OBJECT (equ), "band1::gain", value);
160
gst_child_proxy_set_property (GST_OBJECT (equ), "band2::gain", value);
163
gst_child_proxy_set_property (GST_OBJECT (equ), "band3::gain", value);
166
gst_child_proxy_set_property (GST_OBJECT (equ), "band4::gain", value);
169
gst_child_proxy_set_property (GST_OBJECT (equ), "band5::gain", value);
172
gst_child_proxy_set_property (GST_OBJECT (equ), "band6::gain", value);
175
gst_child_proxy_set_property (GST_OBJECT (equ), "band7::gain", value);
178
gst_child_proxy_set_property (GST_OBJECT (equ), "band8::gain", value);
181
gst_child_proxy_set_property (GST_OBJECT (equ), "band9::gain", value);
184
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
190
gst_iir_equalizer_10bands_get_property (GObject * object, guint prop_id,
191
GValue * value, GParamSpec * pspec)
193
GstIirEqualizer *equ = GST_IIR_EQUALIZER (object);
197
gst_child_proxy_get_property (GST_OBJECT (equ), "band0::gain", value);
200
gst_child_proxy_get_property (GST_OBJECT (equ), "band1::gain", value);
203
gst_child_proxy_get_property (GST_OBJECT (equ), "band2::gain", value);
206
gst_child_proxy_get_property (GST_OBJECT (equ), "band3::gain", value);
209
gst_child_proxy_get_property (GST_OBJECT (equ), "band4::gain", value);
212
gst_child_proxy_get_property (GST_OBJECT (equ), "band5::gain", value);
215
gst_child_proxy_get_property (GST_OBJECT (equ), "band6::gain", value);
218
gst_child_proxy_get_property (GST_OBJECT (equ), "band7::gain", value);
221
gst_child_proxy_get_property (GST_OBJECT (equ), "band8::gain", value);
224
gst_child_proxy_get_property (GST_OBJECT (equ), "band9::gain", value);
227
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);