Получение звука pcm для визуализации через Spotify iOS SDK
В настоящее время мы рассматриваем возможность использования нашего программного обеспечения для визуализации музыки, которое существует уже много лет, в приложение для iOS, которое воспроизводит музыку с помощью нового iOS Spotify SDK - посетите http://soundspectrum.com/ чтобы увидеть наши визуальные эффекты, такие как G-Force. и эон.
В любом случае, у нас есть демонстрационные проекты в Spotify iOS SDK, и все работает хорошо, и все выглядит хорошо, но главный шаг вперед - это получить доступ к аудио PCM, чтобы мы могли отправлять его в наши визуальные движки и т. Д.
Может ли разработчик Spotify или кто-либо из знакомых любезно предложить, какие возможности доступны для захвата аудио PCM? Блок аудио pcm может быть простым кольцевым буфером из нескольких тысяч последних сэмплов (который мы будем использовать для БПФ и т. Д.).
Заранее спасибо!
1 ответ
Подкласс SPTCoreAudioController
и сделать одну из двух вещей:
Override
connectOutputBus:ofNode:toInputBus:ofNode:inGraph:error:
и использоватьAudioUnitAddRenderNotify()
добавить обратный вызов рендеринга вdestinationNode
Аудиоустройство. Обратный вызов будет вызываться, когда визуализируется выходной узел, и даст вам доступ к аудио, когда он уходит к динамикам. Как только вы это сделаете, убедитесь, что вы звонитеsuper
Реализация звукового конвейера Spotify iOS SDK для правильной работы.Override
attemptToDeliverAudioFrames:ofCount:streamDescription:
, Это дает вам доступ к данным PCM, как они создаются библиотекой. Тем не менее, в конвейере по умолчанию происходит некоторая буферизация, поэтому данные, представленные в этом обратном вызове, могут отставать от того, что поступает на динамики, примерно на полсекунды, поэтому я бы рекомендовал использовать предложение 1 для этого. Вызовsuper
здесь, чтобы продолжить с конвейером по умолчанию.
Когда у вас есть свой собственный аудио контроллер, инициализируйте SPTAudioStreamingController
с этим и тебе должно быть хорошо идти.
Я фактически использовал предложение 1 для реализации API визуализатора iTunes в моем клиенте Mac OS X Spotify, который был построен с CocoaLibSpotify. Он не работает на 100% гладко (я думаю, что я делаю что-то не так с runloops и прочим), но он управляет G-Force и Whitecap довольно хорошо. Вы можете найти проект здесь, а визуализатор находится в VivaCoreAudioController.m. Класс аудиоконтроллера в CocoaLibSpotify и этот проект по сути такой же, как и в новом iOS SDK.