procesamiento de audio uwp AudioGraph

Estoy trabajando en un proyecto winodws IoT que controla una tira de led basada en una entrada de audio. Ahora tengo algún código que ingresa el audio y lo escribe en un búfer con la API AudioGraph, pero no sé cómo puedo procesar el audio con algunos datos útiles.

mi código hasta ahora:

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;


        }
    }

Así que termino con mi búfer como flotador. Pero, ¿cómo puedo cambiar esto a datos útiles que permitan crear algo así como un analizador de espectro?

Editar:

Tal vez tenga que hacer esta pregunta menos específica para el audiograma. Yo uso una API para obtener mi entrada de audio. Los datos que obtengo de la API son un byte * y puedo convertirlos en flotante * ¿Cómo puedo cambiarlos desde el byte * o el flotante * a otros datos que puedo usar para crear algunos códigos de colores?

Aprendí a hacer un análisis FFT en el flotador * para obtener 164 leds * 3 (rgb) = 492 bins. Y procese estos datos aún más para obtener algunos valores entre 0 y 255.

Entonces, ¿cómo puedo procesar este flotante * o byte * para obtener estos datos útiles? ¿O cómo empiezo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta