Преобразование .wav файла NAudio C#
Необходимо выполнить преобразование .wav-файла по формуле
0.5 x(n) + 0.25x(n-1) +0.25x(n-2) = y(n)
Мой код:
// Считываем данные исходного wav файла
using (var myReader = new NAudio.Wave.WaveFileReader(waveFilePath))
{
// Создание выходного файла.
// (DF) - от Digital Filtration
string newFilePath = waveFilePath.Replace(".wav", "(DF).wav");
using (FileStream newWavFile = File.Create(newFilePath))
{
using (NAudio.Wave.WaveFileWriter writer = new NAudio.Wave.WaveFileWriter(newWavFile, myReader.WaveFormat))
{
// Считываем и выполняем преобразование
int bytesRead = 0;
var readSample = new byte[myReader.WaveFormat.SampleRate];
var tmpSample = new byte[myReader.WaveFormat.SampleRate];
do
{
// Считываем сэмпл
bytesRead = myReader.Read(readSample, 0, readSample.Length);
// Преобразовываем по формуле
for (int n = 0; n < bytesRead; n++)
{
tmpSample[n] = (byte)(readSample[n] * 0.5);
// Формула
if (n >= 2)
tmpSample[n] = (byte)((readSample[n] * 0.5) + (readSample[n - 1] * 0.25) + (readSample[n - 2] * 0.25));
else if (n == 1)
tmpSample[n] = (byte)((readSample[n] * 0.5) + (readSample[n - 1] * 0.25));
else if (n == 0)
tmpSample[n] = (byte)((readSample[n] * 0.5));
}
writer.Write(tmpSample, 0, bytesRead);
}
while (bytesRead != 0);
}
}
// Выводим преобразованный файл на второй waveViewer
customWaveViewerOutSignal.WaveStream = new NAudio.Wave.WaveFileReader(newFilePath);
customWaveViewerOutSignal.FitToScreen();
}
Однако на выходе получается нечто странное
Не могу понять в чём ошибка. Буду благодарен любой помощи и советам по коду
