[FFmpeg-user] asubboost and asupercut

Michael Koch astroelectronic at t-online.de
Sat Nov 28 21:55:23 EET 2020


Am 28.11.2020 um 19:18 schrieb Paul B Mahol:
> On Sat, Nov 28, 2020 at 5:18 PM Michael Koch <astroelectronic at t-online.de>
> wrote:
>
>> Am 28.11.2020 um 14:48 schrieb Paul B Mahol:
>>> On Sat, Nov 28, 2020 at 2:46 PM Paul B Mahol <onemda at gmail.com> wrote:
>>>
>>>> On Sat, Nov 28, 2020 at 2:24 PM Michael Koch <
>> astroelectronic at t-online.de>
>>>> wrote:
>>>>
>>>>> Am 28.11.2020 um 13:44 schrieb Paul B Mahol:
>>>>>> On Sat, Nov 28, 2020 at 1:35 PM Michael Koch <
>>>>> astroelectronic at t-online.de>
>>>>>> wrote:
>>>>>>
>>>>>>> Am 28.11.2020 um 12:57 schrieb Paul B Mahol:
>>>>>>>> On Sat, Nov 28, 2020 at 12:41 PM Michael Koch <
>>>>>>> astroelectronic at t-online.de>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Am 27.11.2020 um 20:50 schrieb Paul B Mahol:
>>>>>>>>>> On Fri, Nov 27, 2020 at 8:24 PM Michael Koch <
>>>>>>>>> astroelectronic at t-online.de>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Am 27.11.2020 um 19:25 schrieb Paul B Mahol:
>>>>>>>>>>>> On Fri, Nov 27, 2020 at 7:09 PM Michael Koch <
>>>>>>>>>>> astroelectronic at t-online.de>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have a few questions about the asubboost and asupercut
>> filters.
>>>>>>>>>>>>> -- In asubboost it's not yet clear how the block diagram of the
>>>>>>> filter
>>>>>>>>>>>>> looks like. Especially the "decay" and "feedback" options are
>>>>>>> unclear.
>>>>>>>>>>>>> What's the input of the the delay line? Before or after the low
>>>>> pass
>>>>>>>>>>>>> filter? Where does the feedback go to? Before or after the
>>>>> lowpass
>>>>>>>>>>>>> filter? I have attached a sketch of a possible block diagram,
>> but
>>>>>>> it's
>>>>>>>>>>>>> only a wild guess.
>>>>>>>>>>>>>
>>>>>>>>>>>> This filter just adds delayed sub frequencies set by cut off
>>>>>>> frequency
>>>>>>>>>>> back
>>>>>>>>>>>> to output. Decay sets decay of old sub echo in buffer and
>> feedback
>>>>>>> sets
>>>>>>>>>>> how
>>>>>>>>>>>> much
>>>>>>>>>>>> new sub frequencies are added to the delay buffer.
>>>>>>>>> I did try to reverse engineer the asubboost filter from its output
>>>>>>>>> signal. Is the attached sketch correct?
>>>>>>>>> It seems the "feedback" parameter is unnecessary because it does
>>>>> exactly
>>>>>>>>> the same thing as "wet".
>>>>>>>>>
>>>>>>>> No, your reasoning is invalid.
>>>>>>>>
>>>>>>>> I do not have time to draw graphs or do consulting for free.
>>>>>>> When you swap the values of "wet" and "feedback", the output does
>>>>> always
>>>>>>> remain the same.
>>>>>>> If you think that I'm wrong, please show an example to prove the
>>>>> opposite.
>>>>>> Make sure that you take into account decay parameter, delay buffer is
>>>>> still
>>>>>> used.
>>>>> When you swap the values of "wet" and "feedback", the output does
>> always
>>>>> remain the same, regardless which values you use for "dry", "decay" and
>>>>> "delay".
>>>>> As can be shown with this example:
>>>>>
>>>>> set "A=0.4"
>>>>> set "B=0.7"
>>>>>
>>>>> ffmpeg -f lavfi -i aevalsrc='0.5*gt(t,0.1)':d=1 -lavfi
>>>>>
>> asplit[a][b];[b]asubboost=dry=0.3:wet=%A%:decay=0.4:feedback=%B%:delay=50[c],[a][c]join,showwaves=draw=full:s=800x300:r=1
>>>>> -frames 1 -y out1.png
>>>>>
>>>>> ffmpeg -f lavfi -i aevalsrc='0.5*gt(t,0.1)':d=1 -lavfi
>>>>>
>> asplit[a][b];[b]asubboost=dry=0.3:wet=%B%:decay=0.4:feedback=%A%:delay=50[c],[a][c]join,showwaves=draw=full:s=800x300:r=1
>>>>> -frames 1 -y out2.png
>>>>>
>>>>> ffmpeg -i out1.png -i out2.png -lavfi vstack -y out.png
>>>>>
>>>>>
>>>>> Red is input step signal, green is output step response of the
>> asubboost
>>>>> filter. In the lower half of the output image the "wet" and "feedback"
>>>>> values are swapped.
>>>>>
>>>> What we said previously about delay buffers and that above command?
>>>> It was literally less than 24h.
>> The previous example was "showfreqs" which has a frequency domain
>> output. Not suitable for analyzing filters which contain delays.
>> Now I'm using "showwaves" which has time domain output. That's a
>> different thing. Of course delay lines can be analyzed in time domain.
>>
>>
>>>> That command can not show you the action of delayed input as it is not
>>>> designed for it.
>> A step signal contains all frequencies and is the best possible source
>> for analyzing unknown black boxes that may contain delays. You can
>> replace the input by any other source, but you will never find any
>> difference in the two outputs. It's a fact, "wet" and "feedback" are
>> interchangeable.
>>
> Nope, you are very mistaken. Try with real audio.

You can use this example with any real audio input you want:

set "A=0.4"
set "B=0.7"

ffmpeg -i dog.mp3 -lavfi 
asubboost=dry=0.3:wet=%A%:decay=0.4:feedback=%B%:delay=50 -y out1.wav
ffmpeg -i dog.mp3 -lavfi 
asubboost=dry=0.3:wet=%B%:decay=0.4:feedback=%A%:delay=50 -y out2.wav
ffmpeg -i out1.wav -i out2.wav -lavfi [0][1]amerge,aeval=val(0)-val(1) 
-y out.wav

out.wav is the difference between out1.wav and out2.wav, and it's 
perfect silence. Which means the two inputs are equal.

Michael



More information about the ffmpeg-user mailing list