Re: Audio Compressor

"Renato S. Yamane" <[email protected]>
Newsgroups gmane.comp.gnu.octave.general
Message-ID <CANJjkzuUAU==Q9+1osW=++zEWkhOu3X2PGPAMtbxNNYuYrVwLA@mail.gmail.com>
Hi,

Em ter., 18 de ago. de 2020 às 16:27, Ian McCallion <[email protected]>
escreveu:

> 1. Your while loop looks very strange to me and I believe the identical
> result would be achieved much faster by simply omitting the while and
> endwhile statements.
>

Without the "while" will not be possible get the Crest Factor desired,
because when I just set everything greater than 1 to 1, and everything
lower than -1 to -1, the RMS level will be changed.
The "while" function will check the newer RMS level and calculated it again.


> 2.  The statement:
>      normalized = filtered / (rms(filtered) / 10^(-crest_factor/20));
>      normalises the signal to an RMS level of -6dB below 1. An RMS below 1
> does not of
>      course guarantee there will be no samples greater than 1, but unless
> your signal is very
>      peculiar I would expect there to be very few or none.
>

This is why I'm using the "while" function, to reduce the number of samples
greater than 1 & lower than -1


> Possibly therefore the following code would meet your needs without the
> need for complex compression.
>
> crest_factor = 6;
> typenoise = noise(10*44100, 1, 'pink');
> [z, p, k] = butter(4, [100/(44100/2), 500/(44100/2)]);
> sos = zp2sos (z, p, k);
> filtered = sosfilt(sos, typenoise);
> normalized = filtered / (rms(filtered) / 10^(-crest_factor/20));
> NumberOfClippedSamples = nnz( normalized > 1 |normalized<-1)
> normalized(normalized > 1) = 1;
> normalized(normalized < -1) = -1;
>

In your example, I'm getting a Crest Factor of -6,36 instead of -6 (this
0,36dB is too much) and almost 20000 samples clipped.
I would like to avoid this approach "*normalized(normalized > 1) = 1*" to
avoid a* hard clipping*.
What I'm looking for is a kind of Hard Limiter instead of a Hard Clipping.

Many thanks,
Renato
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.