【问题标题】:Visualization of streamed music from Spotify来自 Spotify 的流媒体音乐的可视化
【发布时间】:2014-05-12 11:44:15
【问题描述】:

我正在使用 C# 包装器 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 的数据以创建实时可视化?有人可以解释一下吗?

【问题讨论】:

    标签: c# visualization naudio libspotify


    【解决方案1】:

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

    获取您选择的快速傅立叶变换库并将其用于您的数据;您将信号分解为其组成频率。然后,您可以获取该数据并以您喜欢的方式进行可视化。频谱图特别容易;您只需要绘制每个频率分量的幅度与频率和时间的关系。

    【讨论】:

    • 我已经管理了 FFT 并收到了一个包含从 -1 到 1 的值的 double[]。您能否更详细地解释一下“绘制每个频率分量的幅度与频率和时间的关系”是什么意思以及你将如何编码那部分?
    • 这个答案有解释傅里叶变换输出的提示:stackoverflow.com/questions/604453/…
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2013-02-25
    • 1970-01-01
    • 2013-11-25
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多