通过Spotify iOS SDK获取pcmaudio进行可视化

我们目前正在考虑将我们已经存在多年的音乐可视化软件join到iOS应用程序中,通过新的iOS Spotify SDK来播放音乐,请查看http://soundspectrum.com来查看我们的视觉效果,例如G-Force和永旺。

无论如何,我们已经将Spotify iOS SDK中的演示项目全部启动并运行,并且看起来不错,但向前迈进的主要一步是访问audiopcm,以便将其发送到我们的视觉引擎等。

Spotify的开发者或者知情的人可以提供一些可能性来获得pcmaudio吗? audioPCM模块可以像最近几千个样本(我们将用于FFT等)的循环缓冲区一样简单。

提前致谢!

子类SPTCoreAudioController并做两件事之一:

  1. 覆盖connectOutputBus:ofNode:toInputBus:ofNode:inGraph:error:并使用AudioUnitAddRenderNotify()将渲染callback添加到destinationNode的audio单元。 callback将在输出节点被渲染时被调用,并且会让您在audio离开时访问audio。 完成之后,请确保调用super实现来使Spotify iOS SDK的audiopipe道正常工作。

  2. 覆盖attemptToDeliverAudioFrames:ofCount:streamDescription: 这使您可以访问由库生成的PCM数据。 然而,在默认pipe道中有一些缓冲,所以在这个callback中给出的数据可能比发送给扬声器的数据低半秒,所以我build议使用build议1。 在这里调用super来继续默认的pipe道。

一旦你有你的自定义audio控制器,用它初始化一个SPTAudioStreamingController ,你应该很好去。

我实际上使用build议1来实现iTunes的可视化API在我的Mac OS X Spotify客户端是用CocoaLibSpotify构build的。 它不能100%顺利运行(我认为我在做runloops和东西时会出错),但是它让G-Force和Whitecap非常好。 你可以在这里find这个项目,可视化的东西在VivaCoreAudioController.m中 。 CocoaLibSpotify和该项目中的audio控制器类基本上与新iOS SDK中的相同。