Введение
Целью написания этого кода является изменение входящего звука с микрофона с помощью преобразования 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);
Проблема
Значения усиления на ползунках эквалайзера приложения, когда они изменены даже немного, начинают вызывать звуковые щелчки и треск: в основном искажения.