可视化来自Spotify的流式音乐

时间:2014-04-01 15:30:02

标签: c# visualization naudio libspotify

我使用C#wrapper ohLibSpotify播放来自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的数据以创建实时可视化?有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

将音频样本等时域信号转换为频域信息的标准工具是傅里叶变换。

抓住您选择的快速傅立叶变换库并将其丢给您的数据;你将把信号分解成其组成频率。然后,您可以随意获取该数据并进行可视化。频谱图特别容易;你只需要绘制每个频率分量的大小与频率和时间的关系。