lordmulder / DynamicAudioNormalizer

Dynamic Audio Normalizer
Other
251 stars 36 forks source link

artifacts with default settings #25

Closed richardpl closed 2 years ago

richardpl commented 2 years ago

Clipping happens at start, try with this file: https://0x0.st/-gtd.wav

lordmulder commented 2 years ago

Is that file the original input or already processed by DynAudNorm?

If that is supposed to be the original input, then it's already heavily clipped and DynAudNorm cannot "magically" fix this 😮

Your provided file:

image

Zoomed in:

gtd-clipped

Regards.

richardpl commented 2 years ago

I fixed in in my version of filter. Your code just clips audio at start, badly.

lordmulder commented 2 years ago

I don't know what you fixed in "your version" of the filter, or what "your version" of the filter is. You did not explain that.

But, as pointed out above, the sample file that you provided already is heavily distorted. Load that file into Audacity (or whatever audio editor you prefer) and press play. Sounds totally distorted. And if you zoom in, you will see that this file sounds extremely distorted because it already is heavily clipped. Actually, just look at the screenshots I have posted above... 😏

So, again: If that is supposed to be the original input file, then it is perfectly expected to get clipping, because, well... the clipping is in the input! If you process a file which already is heavily distorted with DynAudNorm, then things can only get worse.

Regards.

richardpl commented 2 years ago

Input is in floating sample format wav. I fixed it in FFmpeg, do us you wish with your broken code.

lordmulder commented 2 years ago

I don't know why you give thumbs down. You still haven't clarified whether your sample file is supposed to be the original input (1) that results in clipping when processed by DynAudNorm, or whether it is processed output (2) produced by DynAudNorm.

In case (1), as pointed out before, your input already is heavily clipped/distorted and DynAudNorm cannot "magically" repair this; just load the file in Audacity or Audition to see/hear yourself, if you don't trust my screenshots. In case (2), I would need the original (unprocessed) input file in order to re-produce the issue, because the processed output (alone) is not very helpful here.

Input is in floating sample format wav

The DynAudNorm "core" library always processes samples as floating-point. The DynAudNorm CLI tools use libsndfile to read the input file and write the output file, which always returns/takes samples in floating-point format, regardless of file format:

sf_count_t  sf_readf_double(SNDFILE *sndfile, double *ptr, sf_count_t frames);

The data type used by the calling program and the data format of the file do not need to be the same.
Regardless of whether data in the file is 8, 16, 24 or 32 bit wide, the data will be read as floating
point data in the range [-1.0, 1.0]

I fixed it in FFmpeg, do us you wish with your broken code.

Please note that the "dynaudnorm" filter in FFmpeg is a separate codebase from my DynAudNorm project.

(it was completely re-written/adapted by FFmpge team)

Anyhow, it would be helpful, if you could elaborate on what exactly you "fixed" in FFmpeg code and how you did it 😃

Regards.

DualBrain commented 2 years ago

Input is in floating sample format wav. I fixed it in FFmpeg, do us you wish with your broken code. -- @richardpl

As someone who utilizes this project (as a consumer, not a contributor) and whom also utilizes ffmpeg... I'd really like to see @lordmulder's questions answered.

Also, the tone in your response... specifically the "do as you wish with your broken code" seems very off base given that everything I'm seeing is that @lordmulder is trying to understand and actually assist; but without clear input and cooperation, how is that supposed to happen. Taking it to insults is just distasteful and completely childish.

On that note... @lordmulder THANK YOU for the effort that you to put into this project.

lordmulder commented 2 years ago

No sufficient explanation provided. Closed.