Chodzi mi o proces zwiększania lub zmniejszania amplitudy dźwięku względem największej wartości amplitudy tego sygnału. Efekt ten można spotkać w każdym edytorze dźwięku np. Sound Forge czy WaveLab.
Poniżej przedstawiam fragment kodu:
Legenda:
byteSamples - tablica próbek pliku 8 bit mono, format microsoft wav
Opis działania: Zamieniam próbki z postaci 0..255 na postać -128..128
Teraz chciałbym zmniejszyć wartości próbek o 10 i wracam do poprzedniej postaci 0..255;
W zamian dostaje zniekształcony sygnał. Na czym polega mój błąd? Proszę o pomoc, pozdrawiam
Poniżej przedstawiam fragment kodu:
for(unsigned int i = bSection; i < eSection; ++i){
inputSample[j] = (int)(waveFile->byteSamples[i]) - 128;
++j;
}
Legenda:
byteSamples - tablica próbek pliku 8 bit mono, format microsoft wav
Opis działania: Zamieniam próbki z postaci 0..255 na postać -128..128
//zmniejszam amplitude
for(unsigned int i = 0; i < size; ++i){
if(inputSample[i] >= 0)
{
inputSample[i] -= 10;
}
if(inputSample[i] < 0)
{
inputSample[i] += 10;
}
inputSample[i] += 128;
}
Teraz chciałbym zmniejszyć wartości próbek o 10 i wracam do poprzedniej postaci 0..255;
W zamian dostaje zniekształcony sygnał. Na czym polega mój błąd? Proszę o pomoc, pozdrawiam