UWP AudioGraph обработка аудио

Я работаю над IoT-проектом winodws, который управляет светодиодной полосой на основе аудиовхода. Теперь у меня есть некоторый код, который получает аудио и записывает его в буфер с помощью AudioGraph API, но я не знаю, как я могу обработать аудио с некоторыми полезными данными.

мой код до сих пор:

private async void MainPage_Loaded(object sender, RoutedEventArgs eventArgs)
{
        try
        {
            // Initialize the led strip
            //await this.pixelStrip.Begin();

            sampleAggregator.FftCalculated += new EventHandler<FftEventArgs>(FftCalculated);
            sampleAggregator.PerformFFT = true;

            // Create graph
            AudioGraphSettings settings = new AudioGraphSettings(AudioRenderCategory.Media);
            settings.DesiredSamplesPerQuantum = fftLength;
            settings.DesiredRenderDeviceAudioProcessing = Windows.Media.AudioProcessing.Default;
            settings.QuantumSizeSelectionMode = QuantumSizeSelectionMode.ClosestToDesired;

            CreateAudioGraphResult result = await AudioGraph.CreateAsync(settings);
            if (result.Status != AudioGraphCreationStatus.Success)
            {
                // Cannot create graph
                return;
            }
            graph = result.Graph;

            // Create a device input node using the default audio input device
            CreateAudioDeviceInputNodeResult deviceInputNodeResult = await graph.CreateDeviceInputNodeAsync(MediaCategory.Other);

            if (deviceInputNodeResult.Status != AudioDeviceNodeCreationStatus.Success)
            {
                return;
            }

            deviceInputNode = deviceInputNodeResult.DeviceInputNode;

            frameOutputNode = graph.CreateFrameOutputNode();
            frameOutputNode.Start();
            graph.QuantumProcessed += AudioGraph_QuantumProcessed;

            // Because we are using lowest latency setting, we need to handle device disconnection errors
            graph.UnrecoverableErrorOccurred += Graph_UnrecoverableErrorOccurred;

            graph.Start();
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.ToString());
        }
    }

    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;


        }
    }

Итак, я заканчиваю свой буфер как float. Но как я могу изменить это, чтобы использовать полезные данные, которые позволяют создать что-то вроде анализатора спектра?

Редактировать:

Может быть, я должен сделать этот вопрос менее конкретным для аудиографа. Я использую API для получения аудиовхода. Данные, которые я получаю от API, являются байтами *, и я могу преобразовать их в число с плавающей точкой * Как я могу изменить их с байта * или числа с плавающей точкой * на некоторые другие данные, которые я могу использовать для создания некоторых цветовых кодов.

Я подумал о том, чтобы провести некоторый FFT-анализ поплавка *, чтобы получить 164 светодиода * 3 (rgb) = 492 ячейки. И обработайте эти данные дальше, чтобы получить значения от 0 до 255.

Итак, как я могу обработать этот float * или байт *, чтобы получить эти полезные данные? Или как мне начать?

Ответы на вопрос(2)

Ваш ответ на вопрос