tadzik85 napisał: gotowca może nie. Chodzi mi tylko o prosty sposób kompresji by uzyskać stały poziom sygnały. zniekształcenia dopuszczam niewielkie.
Najprostszy sposób to "miękki" ogranicznik. Jeżeli założymy, że masz próbki z zakresu -1 do +1, to każdą próbkę przepuszczasz przez funkcję wykładniczą: y = x^a. "a" jest stałym współczynnikiem, mniejszym od 1. 1 przepuszcza bez zmian, im bliżej zera, tym kompresja dynamiki będzie większa, ale zniekształcenia będą rosły. Sposób ten wprowadza spore zniekształcenia nieliniowe, będzie to brzmiało trochę jak przesterowany wzmacniacz lampowy. Oczywiście funkcję najwygodniej sobie stablicować, albo przybliżyć wielomianem.
Porządny kompresor dynamiki działa inaczej. Sygnał przechodzi przez wzmacniacz o regulowanym wzmocnieniu (czyli jest mnożony przez współczynnik zmienny w czasie). Współczynnik wzmocnienia pochodzi z toru pomocniczego, gdzie liczona jest wartość skuteczna przebiegu (true RMS) i przepuszczana jest przez filtr dolnoprzepustowy o niskiej częstotliwości granicznej (poniżej zakładanego pasma sygnału, a więc dla pełnego sygnału audio poniżej 20 Hz). Wzrost sygnału z filtra zmniejsza wzmocnienie. Taki kompresor wprowadza znacznie mniejsze zniekształcenia, bo nieliniowość do sygnału jest wprowadzana tylko w stanie nieustalonym (zmiana średniej głośności). W prostszych realizacjach zamiast wartości skutecznej można filtrować moduł wartości chwilowej.
Detale i schematy blokowe możesz znaleźć m. in. w wymienionej przeze mnie książce.