Буфер воспроизведения значений звука - iOS - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь воспроизвести NSArray сэмплов звуковых значений, которые я создал в Objective-C. Я сгенерировал значения без проблем, но как мне воспроизвести их через iPhone?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Я бы предложил преобразовать NSArray в объект NSData, а затем использовать метод AVAudioPlayer initWithData:error: ( см. Здесь ) для загрузки в качестве воспроизводимого звука.AVAudioPlayer имеет то преимущество, что он чрезвычайно прост в использовании по отношению к методам Audio Queue и Audio Unit.

То, как вы собираетесь конвертировать NSArray в NSData, зависит от типа ваших семплов ( это сообщение SO может дать представление о том, как это можно сделать, хотя процесс архивирования NSKeyedArchiver может обернуться вашими примерами).Я бы посоветовал, если ваш процесс генерации семплов позволяет, просто создать ваши семплы в объекте NSData и пропустить такое преобразование.

1 голос
/ 02 апреля 2012

Скопируйте значения из NSArray в массив C соответствующим образом масштабированных выборок PCM.Затем вы можете преобразовать этот массив в файл WAV, добавив заголовок RIFF и воспроизвести этот файл, используя AVAudioPlayer, или вы можете напрямую подать сэмплы PCM в буферы массива C аудио-очереди или аудиоустройства RemoteIO в их аудио-обратных вызовах.

...