rysowanie przebiegu - konwertowanie go na DB

Mam plik wave, mam funkcję, która pobiera 2 próbki na piksel, a następnie rysuję z nimi linie. szybkie i bezbolesne, zanim zajmę się powiększaniem. Nie mogę bez problemu wyświetlić wartości amplitudy

to jest dokładny obraz przebiegu. w tym celu użyłem następującego kodu

//tempAllChannels[numOfSamples] holds amplitude data for the entire wav
//oneChannel[numOfPixels*2] will hold 2 values per pixel in display area, an average of min amp, and average of max
for(int i = 0; i < numOfSamples; i++)//loop through all samples in wave file
{
    if (tempAllChannels[i] < 0) min += tempAllChannels[i];//if neg amp value, add amp value to min
    if (tempAllChannels[i] >= 0) max += tempAllChannels[i]; 

    if(i%factor==0 && i!=0)     //factor is (numofsamples in wav)/(numofpixels) in display area
    {
        min = min/factor;       //get average amp value
        max = max/factor;
        oneChannel[j]=max;
        oneChannel[j+1]=min;
        j+=2;                   //iterate for next time
        min = 0;                //reset for next time
        max = 0;
    }   
}

i to świetnie, ale muszę wyświetlać w db, więc ciszej obrazy fal nie są śmiesznie małe, ale kiedy dokonam następującej zmiany w powyższym kodzie

oneChannel[j]=10*log10(max);
oneChannel[j+1]=-10*log10(-min);

obraz fali wygląda tak.

co nie jest dokładne, wygląda na to, że jest zgnieciony. Czy coś jest nie tak z tym, co robię? Muszę znaleźć sposób na konwersję z amplitudy do decybeli, zachowując dynamikę. im myślę, że nie powinienem brać średnią po przekonwertowaniu na DB.

questionAnswers(1)

yourAnswerToTheQuestion