C# Spotify流媒体音乐的可视化

C# Spotify流媒体音乐的可视化,c#,visualization,naudio,libspotify,C#,Visualization,Naudio,Libspotify,我正在用C#包装器将Spotify的音乐流媒体化,并用NAudio播放。现在我正试图为我接收到的数据创建一个频谱可视化 当我从libspotify获取数据时,将调用以下回调: public void MusicDeliveryCallback(SpotifySession session, AudioFormat format, IntPtr frames, int num_frames) { //handle received music data from spotify for s

我正在用C#包装器将Spotify的音乐流媒体化,并用NAudio播放。现在我正试图为我接收到的数据创建一个频谱可视化

当我从libspotify获取数据时,将调用以下回调:

public void MusicDeliveryCallback(SpotifySession session, AudioFormat format, IntPtr frames, int num_frames)
{
    //handle received music data from spotify for streaming
    //format: audio format for streaming
    //frames: pointer to the byte-data in storage

    var size = num_frames * format.channels * 2;
    if (size != 0)
    {
        _copiedFrames = new byte[size];
        Marshal.Copy(frames, _copiedFrames, 0, size);   //Copy Pointer Bytes to _copiedFrames
        _bufferedWaveProvider.AddSamples(_copiedFrames, 0, size);    //adding bytes from _copiedFrames as samples
    }
}

可以分析我传递给BufferedWaveProvider的数据以创建实时可视化吗?有人能解释一下如何将音频样本等时域信号转换为频域信息的标准工具是傅里叶变换


抓起你选择的快速傅立叶变换库,将它扔向你的数据;你将得到信号分解成它的组成频率。然后,您可以获取这些数据,并以自己喜欢的方式进行可视化。光谱图特别容易;您只需要绘制每个频率分量的幅度与频率和时间的关系。

我已经管理了FFT,并收到了一个包含-1到1的值的双[]。您能否更详细地解释“绘制每个频率分量的幅度与频率和时间的关系”的含义以及如何对该部分进行编码?此答案提供了解释傅里叶变换输出的提示: