Я должен передать данные в метод FFT, который будет вычислять спектр.Я пытался думать неправильно.Мне нужно понять, как правильно передавать данные.
Как узнать, что присутствуют три основные группы частот: низкая, средняя и высокая?
Код:
List<double> List_db_For_FFT = new List<double>();
int Number_Of_db_List = 0;
private void AudioGraph_QuantumProcessed(AudioGraph sender, object args)
{
AudioFrame frame = frameOutputNode.GetFrame();
ProcessFrameOutput(frame);
}
unsafe private void ProcessFrameOutput(AudioFrame frame)
{
using (AudioBuffer buffer = frame.LockBuffer(AudioBufferAccessMode.Write))
using (IMemoryBufferReference reference = buffer.CreateReference())
{
byte* dataInBytes;
uint capacityInBytes;
float* dataInFloat;
// Get the buffer from the AudioFrame
((IMemoryBufferByteAccess)reference).GetBuffer(out dataInBytes, out capacityInBytes);
dataInFloat = (float*)dataInBytes;
List_db_For_FFT.Clear();
for (int i = 0; i <= 32; i++)
{
List_db_For_FFT.Add(dataInFloat[i]);
}
}
}
private void SpectrumTimer_Tick(object sender, object e)
{
Debug.WriteLine("List number: " + Number_Of_db_List.ToString());
for (int a = 0; a <= List_db_For_FFT.Count -1; a++)
{
Debug.WriteLine(List_db_For_FFT[a]);
}
Number_Of_db_List += 1;
}
Когда я писал это, я, кажется, получаю немного случайным образом в смысле первых 32 данных (потому что они должны быть степенью 2), как я могу исправить это?
(я не включилFFT код, потому что это следующий шаг, я хотел бы понять, как правильно передавать данные)
Заранее спасибо!