Преобразование NAudio BiQuadFilter, вызывающее искажение - PullRequest
0 голосов
/ 12 апреля 2020

Введение

Целью написания этого кода является изменение входящего звука с микрофона с помощью преобразования BiQuadFilter для воспроизведения в виде монитора. Вот почему образцы захватываются и возвращаются в байтовый массив. Это немного грязно, но перед изменением PeakingEqs звук воспроизводится без проблем.

for (int i = 0; i < e.Buffer.Length; i += 2)
{
    short s = (short)(e.Buffer[i + 1] << 8 | e.Buffer[i]);
    float sample = (float)s / short.MaxValue;
    Update();
    for (int j = 0; j < filter.Length; j++)
    {
        if (filter[j] != null)
        {
            sample = filter[j].Transform(sample);
        }
    }
    short revert = (short)(sample * short.MaxValue);
    recorded[i] = (byte)(revert & 0xff);
    recorded[i + 1] = (byte)((revert >> 8) & 0xff);
}
graph.AddSamples(recorded, 0, recorded.Length);

Проблема

Значения усиления на ползунках эквалайзера приложения, когда они изменены даже немного, начинают вызывать звуковые щелчки и треск: в основном искажения.

...