【发布时间】:2015-01-28 02:10:23
【问题描述】:
我是整个音频处理领域的新手,我想知道如何从 FFT 输出中提取低音、中音和高音。我目前正在使用它来获取数据:https://stackoverflow.com/a/20414331/2714577 使用 Naudio。
但我使用的 fftlength 为 1024(需要速度)。出于颜色目的,我正在尝试以 0-255 等格式获取这 3 个部分。
我目前有这个:
double[] data = new double[512];
void FftCalculated(object sender, FftEventArgs e)
{
for (int j = 0; j < e.Result.Length / 2; j++)
{
double magnitude = Math.Sqrt(e.Result[j].X * e.Result[j].X + e.Result[j].Y * e.Result[j].Y);
double dbValue = 20 * Math.Log10(magnitude);
data[j] = dbValue;
}
double d = 0;
for (int i = 20; i < 89; i++)
{
d += data[i];
}
double m = 0;
for (int i = 150; i < 255; i++)
{
m += data[i];
}
double t = 0;
for (int i = 300; i < 512; i++)
{
t += data[i];
}
Debug.Message(""+d+" |||| "+m+" |||| "+t);
}
返回:
这是对的吗?如何将这些数据转化为更有用的东西?
【问题讨论】: