[gst-devel] equalizer audio

Stefan Kost ensonic at hora-obscura.de
Mon Oct 5 22:15:15 CEST 2009


Stefan Kost schrieb:
> sabine donzé schrieb:
>> Hello,
>>
>> I've effectively an equalization thanks to your modifications on the
>> plugin.
>> The equalization is well working on a mono file. But I've some
>> problems with stereo files.
>>
>> In stereo, I always have to define a frequency at 4kHz so as to have a
>> cutting-frequency at 8kHz.
>> Moreover, I observe a difference between left channel and right
>> channel. If I define the frequency at 4khz and a bandwidth of 2kHz,
>> left channel has a cutting frequency at 7kHz and right channel has a
>> cutting frequency at 9kHz.
>> We also have a difference of 3dB after the equalized band.
>>
>> You can see in attachment the observed results, obtained with the
>> following command line:
>>
>> gst-launch filesrc=test.mp3 ! ffdemux_mp3 ! mfw_mp3decoder !
>> equalizer-nbands num-bands=1 band0::gain=-10 band0::freq=4000
>> band0::bandwidth=2000 ! alsasink
>>
>> First graph is obtained width a mono file, and second graph is
>> obtained with a stereo file.
>>
>> Do you have some explanation? Why the defined frequency is not the
>> same that the observed cutting frequency, and why have I a difference
>> between right channel and left channel?
>>
>> Thanks for your help,
>> Sabine
>>
>> 2009/2/3 Stefan Kost <ensonic at hora-obscura.de
>> <mailto:ensonic at hora-obscura.de>>
>>
>>     sabine donzé schrieb:
>>     > Hello,
>>     >
>>     > I'm using the equalizer-nbands plugin from gst-plugins-good_0.10.7.
>>     > However, if I configure the frequency for one or for each band, the
>>     > observed cutoff frequency is not the same than the defined
>>     frequency.
>>     >
>>     > For example:
>>     >
>>     > gst-launch filesrc location=toto.mp3 ! ffdemux_mp3 !
>>     mfw_mp3decoder !
>>     > equalizer-nbands num-bands=4 band0::gain=-21 band0::frequency=947
>>     > band0::bandwidth=100 ! alsasink
>>     >
>>     > I should have a cutting frequency at 957Hz for band0.
>>     > In logfile, I observe that gain, frequency and bandwidth have been
>>     > correctly changed. But in setup_filter function, frequency is not at
>>     > defined value:
>>     >
>>     > 0:00:00.516575000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 0]
>>     > = '66.234133'
>>     > 0:00:00.517031000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 1]
>>     > = '372.461899'
>>     > 0:00:00.517357000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 2]
>>     > = '2094.507176'
>>     > 0:00:00.517678000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 3]
>>     > = '11778.279410'
>>     > 0:00:00.518174000  1477 0x14018 LOG              equalizer
>>     >
>>     gstiirequalizer.c:290:gst_iir_equalizer_child_proxy_get_children_count:
>>     > we have 4 children
>>     > 0:00:00.518600000  1477 0x14018 LOG              equalizer
>>     >
>>     gstiirequalizer.c:281:gst_iir_equalizer_child_proxy_get_child_by_index:
>>     > return child[0] 'band0'
>>     > 0:00:00.519124000  1477 0x14018 DEBUG            equalizer
>>     >
>>     gstiirequalizer.c:136:gst_iir_equalizer_band_set_property:<band0> gain
>>     > = 0.000000 -> -21.000000
>>     >
>>     > 0:00:00.519571000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:146:gst_iir_equalizer_band_set_property:<band0>
>>     > changed gain = -21.000000
>>     > 0:00:00.520126000  1477 0x14018 LOG              equalizer
>>     >
>>     gstiirequalizer.c:290:gst_iir_equalizer_child_proxy_get_children_count:
>>     > we have 4 children
>>     > 0:00:00.520444000  1477 0x14018 LOG              equalizer
>>     >
>>     gstiirequalizer.c:281:gst_iir_equalizer_child_proxy_get_child_by_index:
>>     > return child[0] 'band0'
>>     > 0:00:00.520852000  1477 0x14018 DEBUG            equalizer
>>     >
>>     gstiirequalizer.c:154:gst_iir_equalizer_band_set_property:<band0> freq
>>     > = 66.234133 -> 947.000000
>>     > 0:00:00.521334000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:164:gst_iir_equalizer_band_set_property:<band0>
>>     > changed freq = 947.000000
>>     > 0:00:00.521767000  1477 0x14018 LOG              equalizer
>>     >
>>     gstiirequalizer.c:290:gst_iir_equalizer_child_proxy_get_children_count:
>>     > we have 4 children
>>     > 0:00:00.522071000  1477 0x14018 LOG              equalizer
>>     >
>>     gstiirequalizer.c:281:gst_iir_equalizer_child_proxy_get_child_by_index:
>>     > return child[0] 'band0'
>>     > 0:00:00.522568000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:172:gst_iir_equalizer_band_set_property:<band0>
>>     > width = 92.468265 -> 100.000000
>>     > 0:00:00.523032000  1477 0x14018 DEBUG            equalizer
>>     > gstiirequalizer.c:182:gst_iir_equalizer_band_set_property:<band0>
>>     > changed width = 100.000000
>>     > Setting pipeline to PAUSED ...
>>     > Pipeline is PREROLLING ...
>>     > 0:00:00.996510000  1477 0x2e7d0 DEBUG            equalizer
>>     > gstiirequalizer.c:451:gst_iir_equalizer_compute_frequencies:
>>     bands 4 -> 4
>>     > 0:00:00.997166000  1477 0x2e7d0 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 0]
>>     > = '66.234133'
>>     > 0:00:00.997577000  1477 0x2e7d0 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 1]
>>     > = '372.461899'
>>     > 0:00:00.997921000  1477 0x2e7d0 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 2]
>>     > = '2094.507176'
>>     > 0:00:00.998256000  1477 0x2e7d0 DEBUG            equalizer
>>     > gstiirequalizer.c:494:gst_iir_equalizer_compute_frequencies:
>>     band[ 3]
>>     > = '11778.279410'
>>     > 0:00:00.998887000  1477 0x2e7d0 INFO             equalizer
>>     > gstiirequalizer.c:438:setup_filter: gain =     -21, , bandwidth=
>>     > 92.468, frequency =  66.234, a0 = 0.98034,
>>     > 0:00:00.999431000  1477 0x2e7d0 INFO             equalizer
>>     > gstiirequalizer.c:438:setup_filter: gain =       0, , bandwidth=
>>     > 519.99, frequency =  372.46, a0 =       1, a1
>>     > 0:00:01.000021000  1477 0x2e7d0 INFO             equalizer
>>     > gstiirequalizer.c:438:setup_filter: gain =       0, , bandwidth=
>>     > 2924.1, frequency =  2094.5, a0 =       1, a1
>>     > 0:00:01.000526000  1477 0x2e7d0 INFO             equalizer
>>     > gstiirequalizer.c:438:setup_filter: gain =       0, , bandwidth=
>>     > 16443, frequency =   11778, a0 =       1, a1
>>     >
>>     >
>>     I filed a bug at
>>     http://bugzilla.gnome.org/show_bug.cgi?id=570343
>>     Will look at it over the next days.
>>
>>     Stefan
>>
>>     > Moreover, cutoff frequency observed at the end of audio chain is
>>     > around 200Hz
>>     >
>>     > I've also tried to define all bands, but cutting frequencies
>>     observed
>>     > are not coherent with defined frequencies.
>>     >
>>     > Moreover, according to configurations, we can have a difference
>>     of 6dB
>>     > between right way and left way.
>>     >
>>     > How does this plugin work? How configure it so as to have a cutting
>>     > frequency at 947Hz?
>>     > How to have the same output for right way and left way, or how to
>>     > configure the difference between right way and left way?
>>     >
>>     > Thanks for your help
>>     > Sabine
>>
> 
> Sorry for looon delay. I have had a quick look and filed
> https://bugzilla.gnome.org/show_bug.cgi?id=597397 now. I'll have a look
> at the code in the coming days. In the future it would be good if you
> can just file the bugs instead.
> 
> Stefan

and fixed :)

Stefan




More information about the gstreamer-devel mailing list