Frequency response of an ffmpeg equalizer filter

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Frequency response of an ffmpeg equalizer filter

Nicolas VAMBAIRGUE
Hello,


I'm starting to use the ffmpeg filters, using the documentation. It
seems working but, I don't find the way to get the frequency response of
a filter. For example, let's say I'm applying this filter :

equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30

in the following command :

ffmpeg -re -i /home/dr_click/live.wav -acodec pcm_s16be -ar 44100 -ac 2
-f rtp -af
"equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30"
rtp://127.0.0.1:1234

It works, I'm hearing a distorted sound. And what I'd like to know, with
such a filter, is the db gain for the 2000 Hz signal or for the 150Hz
signal or any other frequency with a query like : give me your frequency
and I'll tell you which gain is applied at this frequency with the
defined filter.


Thank you for your help,


Nicolas

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Frequency response of an ffmpeg equalizer filter

Paul B Mahol
On 6/26/20, Nicolas VAMBAIRGUE <[hidden email]> wrote:

> Hello,
>
>
> I'm starting to use the ffmpeg filters, using the documentation. It
> seems working but, I don't find the way to get the frequency response of
> a filter. For example, let's say I'm applying this filter :
>
> equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30
>
> in the following command :
>
> ffmpeg -re -i /home/dr_click/live.wav -acodec pcm_s16be -ar 44100 -ac 2
> -f rtp -af
> "equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30"
> rtp://127.0.0.1:1234
>
> It works, I'm hearing a distorted sound. And what I'd like to know, with
> such a filter, is the db gain for the 2000 Hz signal or for the 150Hz
> signal or any other frequency with a query like : give me your frequency
> and I'll tell you which gain is applied at this frequency with the
> defined filter.

Yes, with anequalizer filter.

>
>
> Thank you for your help,
>
>
> Nicolas
>
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Frequency response of an ffmpeg equalizer filter

Nicolas VAMBAIRGUE

Le 26/06/2020 à 18:15, Paul B Mahol a écrit :

> On 6/26/20, Nicolas VAMBAIRGUE <[hidden email]> wrote:
>> Hello,
>>
>>
>> I'm starting to use the ffmpeg filters, using the documentation. It
>> seems working but, I don't find the way to get the frequency response of
>> a filter. For example, let's say I'm applying this filter :
>>
>> equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30
>>
>> in the following command :
>>
>> ffmpeg -re -i /home/dr_click/live.wav -acodec pcm_s16be -ar 44100 -ac 2
>> -f rtp -af
>> "equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30"
>> rtp://127.0.0.1:1234
>>
>> It works, I'm hearing a distorted sound. And what I'd like to know, with
>> such a filter, is the db gain for the 2000 Hz signal or for the 150Hz
>> signal or any other frequency with a query like : give me your frequency
>> and I'll tell you which gain is applied at this frequency with the
>> defined filter.
> Yes, with anequalizer filter.

         => Ok, so let's say I'm using this command with an anequaliwer

         =>_ffmpeg -re -i /home/dr_click/live.wav -af "anequalizer=c0
f=200 w=100 g=-10 t=0|c1 f=200 w=100 g=-10 t=0 curves=true" -acodec
pcm_s16be -ar 44100 -ac 2 -f rtp rtp://127.0.0.1:1234

         => How do I get the frequency graph of such a filter ? Is it
mandatory to get a video stream (and how to get / display it) ? Can't I
get command with the frequency as input and the gain as output ? Of
course, such a command would means I need to query the db output for
each interesting frequency.

>
>>
>> Thank you for your help,
>>
>>
>> Nicolas
>>
>> _______________________________________________
>> ffmpeg-user mailing list
>> [hidden email]
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> [hidden email] with subject "unsubscribe".
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Frequency response of an ffmpeg equalizer filter

Michael Koch
Am 26.06.2020 um 19:00 schrieb Nicolas VAMBAIRGUE:

>
> Le 26/06/2020 à 18:15, Paul B Mahol a écrit :
>> On 6/26/20, Nicolas VAMBAIRGUE <[hidden email]> wrote:
>>> Hello,
>>>
>>>
>>> I'm starting to use the ffmpeg filters, using the documentation. It
>>> seems working but, I don't find the way to get the frequency
>>> response of
>>> a filter. For example, let's say I'm applying this filter :
>>>
>>> equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30
>>>
>>>
>>> in the following command :
>>>
>>> ffmpeg -re -i /home/dr_click/live.wav -acodec pcm_s16be -ar 44100 -ac 2
>>> -f rtp -af
>>> "equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30"
>>>
>>> rtp://127.0.0.1:1234
>>>
>>> It works, I'm hearing a distorted sound. And what I'd like to know,
>>> with
>>> such a filter, is the db gain for the 2000 Hz signal or for the 150Hz
>>> signal or any other frequency with a query like : give me your
>>> frequency
>>> and I'll tell you which gain is applied at this frequency with the
>>> defined filter.
>> Yes, with anequalizer filter.
>
>         => Ok, so let's say I'm using this command with an anequaliwer
>
>         =>_ffmpeg -re -i /home/dr_click/live.wav -af "anequalizer=c0
> f=200 w=100 g=-10 t=0|c1 f=200 w=100 g=-10 t=0 curves=true" -acodec
> pcm_s16be -ar 44100 -ac 2 -f rtp rtp://127.0.0.1:1234
>
>         => How do I get the frequency graph of such a filter ? Is it
> mandatory to get a video stream (and how to get / display it) ? Can't
> I get command with the frequency as input and the gain as output ? Of
> course, such a command would means I need to query the db output for
> each interesting frequency.

Make a test file with 2kHz sine:
ffmpeg -f lavfi -i sine=2000 -t 5 -y test.wav

Analyze the volume of this file:
ffmpeg -i test.wav -af volumedetect -y out1.wav
The volume is written to the log file.

Then apply your filter and analyze the output again.

Michael

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Frequency response of an ffmpeg equalizer filter

Nicolas VAMBAIRGUE

Le 26/06/2020 à 19:11, Michael Koch a écrit :

> Am 26.06.2020 um 19:00 schrieb Nicolas VAMBAIRGUE:
>>
>> Le 26/06/2020 à 18:15, Paul B Mahol a écrit :
>>> On 6/26/20, Nicolas VAMBAIRGUE <[hidden email]> wrote:
>>>> Hello,
>>>>
>>>>
>>>> I'm starting to use the ffmpeg filters, using the documentation. It
>>>> seems working but, I don't find the way to get the frequency
>>>> response of
>>>> a filter. For example, let's say I'm applying this filter :
>>>>
>>>> equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30
>>>>
>>>>
>>>> in the following command :
>>>>
>>>> ffmpeg -re -i /home/dr_click/live.wav -acodec pcm_s16be -ar 44100
>>>> -ac 2
>>>> -f rtp -af
>>>> "equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30"
>>>>
>>>> rtp://127.0.0.1:1234
>>>>
>>>> It works, I'm hearing a distorted sound. And what I'd like to know,
>>>> with
>>>> such a filter, is the db gain for the 2000 Hz signal or for the 150Hz
>>>> signal or any other frequency with a query like : give me your
>>>> frequency
>>>> and I'll tell you which gain is applied at this frequency with the
>>>> defined filter.
>>> Yes, with anequalizer filter.
>>
>>         => Ok, so let's say I'm using this command with an anequaliwer
>>
>>         =>_ffmpeg -re -i /home/dr_click/live.wav -af "anequalizer=c0
>> f=200 w=100 g=-10 t=0|c1 f=200 w=100 g=-10 t=0 curves=true" -acodec
>> pcm_s16be -ar 44100 -ac 2 -f rtp rtp://127.0.0.1:1234
>>
>>         => How do I get the frequency graph of such a filter ? Is it
>> mandatory to get a video stream (and how to get / display it) ? Can't
>> I get command with the frequency as input and the gain as output ? Of
>> course, such a command would means I need to query the db output for
>> each interesting frequency.
>
> Make a test file with 2kHz sine:
> ffmpeg -f lavfi -i sine=2000 -t 5 -y test.wav
>
> Analyze the volume of this file:
> ffmpeg -i test.wav -af volumedetect -y out1.wav
> The volume is written to the log file.
>
> Then apply your filter and analyze the output again.
>
> Michael


         => Thank you again for your answer Michael but, I think I
probably didn't expressed my question with the right words. Let's forget
the file in and the file out to focus only on the filter :
"anequalizer=c0 f=200 w=100 g=-10 t=0|c1 f=200 w=100 g=-10 t=0"

         => What I want to know, before applying any input signal is the
result of this mathematical function : f(frequency) = gain. For example,
this filter is centered on 200 Hz with a bandwith of 100Hz and a gain of
-10 db. So, all the 200Hz frequencies will be attenuated by -10 db. But
what for the 250Hz frequencies in the signal ? Still -10 db ? Or -9 ? Or
-7.5 ? Same question for the 350 Hz frequencies in the signal.

         => The result given like a mathematical function, a cloud of
dots, an image or anything else that could help me to draw such a graph
:
https://s1.qwant.com/thumbr/0x380/0/5/cfb0ceac6e3b4fdd73923eaaf68e76c58991b4de8ac088f4dfad665d5b8c34/parametric.png?u=https%3A%2F%2Fcdn.tutsplus.com%2Faudio%2Fuploads%2Flegacy%2Fqt_040_eq%2Fparametric.png&q=0&b=1&p=0&a=1

         => I wish my question is more clear now.

         => And thank you again for your answers and your help :-)

>
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Frequency response of an ffmpeg equalizer filter

Michael Koch

>>>
>>>         => How do I get the frequency graph of such a filter ? Is it
>>> mandatory to get a video stream (and how to get / display it) ?
>>> Can't I get command with the frequency as input and the gain as
>>> output ? Of course, such a command would means I need to query the
>>> db output for each interesting frequency.
>>
>> Make a test file with 2kHz sine:
>> ffmpeg -f lavfi -i sine=2000 -t 5 -y test.wav
>>
>> Analyze the volume of this file:
>> ffmpeg -i test.wav -af volumedetect -y out1.wav
>> The volume is written to the log file.
>>
>> Then apply your filter and analyze the output again.
>>
>> Michael
>
>
>         => Thank you again for your answer Michael but, I think I
> probably didn't expressed my question with the right words. Let's
> forget the file in and the file out to focus only on the filter :
> "anequalizer=c0 f=200 w=100 g=-10 t=0|c1 f=200 w=100 g=-10 t=0"
>
>         => What I want to know, before applying any input signal is
> the result of this mathematical function : f(frequency) = gain. For
> example, this filter is centered on 200 Hz with a bandwith of 100Hz
> and a gain of -10 db. So, all the 200Hz frequencies will be attenuated
> by -10 db. But what for the 250Hz frequencies in the signal ? Still
> -10 db ? Or -9 ? Or -7.5 ? Same question for the 350 Hz frequencies in
> the signal.
>

Unfortunately the filter steepness is undocumented. I don't know if
ffmpeg can analyze the filter curve for all frequencies at the same
time. I have no other idea than analyzing one frequency after the other.

Michael









> => The result given like a mathematical function, a cloud of dots, an
> image or anything else that could help me to draw such a graph :
> https://s1.qwant.com/thumbr/0x380/0/5/cfb0ceac6e3b4fdd73923eaaf68e76c58991b4de8ac088f4dfad665d5b8c34/parametric.png?u=https%3A%2F%2Fcdn.tutsplus.com%2Faudio%2Fuploads%2Flegacy%2Fqt_040_eq%2Fparametric.png&q=0&b=1&p=0&a=1
>
>         => I wish my question is more clear now.
>
>         => And thank you again for your answers and your help :-)
>
>>
>> _______________________________________________
>> ffmpeg-user mailing list
>> [hidden email]
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> [hidden email] with subject "unsubscribe".
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".


--
**********************************************
   ASTRO ELECTRONIC   Dipl.-Ing. Michael Koch
        Raabestr. 43   37412 Herzberg
           www.astro-electronic.de
   Tel. +49 5521 854265   Fax +49 5521 854266
**********************************************

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Frequency response of an ffmpeg equalizer filter

Paul B Mahol
In reply to this post by Nicolas VAMBAIRGUE
On 6/26/20, Nicolas VAMBAIRGUE <[hidden email]> wrote:

>
> Le 26/06/2020 à 18:15, Paul B Mahol a écrit :
>> On 6/26/20, Nicolas VAMBAIRGUE <[hidden email]> wrote:
>>> Hello,
>>>
>>>
>>> I'm starting to use the ffmpeg filters, using the documentation. It
>>> seems working but, I don't find the way to get the frequency response of
>>> a filter. For example, let's say I'm applying this filter :
>>>
>>> equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30
>>>
>>> in the following command :
>>>
>>> ffmpeg -re -i /home/dr_click/live.wav -acodec pcm_s16be -ar 44100 -ac 2
>>> -f rtp -af
>>> "equalizer=f=7000:t=q:w=2:g=2,equalizer=f=1000:t=q:w=1:g=3,equalizer=f=80:t=q:w=2:g=-30"
>>> rtp://127.0.0.1:1234
>>>
>>> It works, I'm hearing a distorted sound. And what I'd like to know, with
>>> such a filter, is the db gain for the 2000 Hz signal or for the 150Hz
>>> signal or any other frequency with a query like : give me your frequency
>>> and I'll tell you which gain is applied at this frequency with the
>>> defined filter.
>> Yes, with anequalizer filter.
>
>          => Ok, so let's say I'm using this command with an anequaliwer
>
>          =>_ffmpeg -re -i /home/dr_click/live.wav -af "anequalizer=c0
> f=200 w=100 g=-10 t=0|c1 f=200 w=100 g=-10 t=0 curves=true" -acodec
> pcm_s16be -ar 44100 -ac 2 -f rtp rtp://127.0.0.1:1234
>
>          => How do I get the frequency graph of such a filter ? Is it
> mandatory to get a video stream (and how to get / display it) ? Can't I
> get command with the frequency as input and the gain as output ? Of
> course, such a command would means I need to query the db output for
> each interesting frequency.

No, only way currently is inspecting graphical output of filter.

>
>>
>>>
>>> Thank you for your help,
>>>
>>>
>>> Nicolas
>>>
>>> _______________________________________________
>>> ffmpeg-user mailing list
>>> [hidden email]
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>>
>>> To unsubscribe, visit link above, or email
>>> [hidden email] with subject "unsubscribe".
>> _______________________________________________
>> ffmpeg-user mailing list
>> [hidden email]
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> [hidden email] with subject "unsubscribe".
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".