этот вопрос наиболее актуален для пользователей, имеющих опыт использования пакета JTransform для быстрых преобразований Фурье. Я пытаюсь в конечном итоге создать эквалайзер в рамках более крупного аудио проекта в реальном времени. Прямо сейчас я просто пытался применить преобразование Фурье, затем использовать обратный метод, чтобы вернуть исходные данные, а затем вывести этот звук. То, что я получаю, это сильно искаженный звук. Интересно, есть ли у кого-нибудь такой опыт?
Я применяю преобразование в методе обратного вызова после выборки аудиовхода.
public void onMarkerReached(AudioRecord recorder)
double[] input = new double[buffers[ix].length];
for(int i=0;i<input.length;i++)
{
input[i] = (double)buffers[ix][i];
}
DoubleFFT_1D ft = new DoubleFFT_1D(input.length);
ft.realForward(input);
//some filtering here
ft.realInverse(input, false);
for(int i=0;i<input.length;i++)
{
buffers[ix][i] = (short)input[i];
}
player.write(buffers[ix], 0,
buffers[ix].length);
}
}
Я теряю часть сигнала в результате сохранения только действительной части преобразования? Так как это только аудиоданные, вход должен быть только реальным, верно? Не уверен, что я делаю что-то здесь не так, любой вклад будет принята с благодарностью!