Используя определенные аудиоустройства

Каждое аудиоустройство iOS имеет определенные общие черты со всеми другими и определенные вещи, уникальные для себя. Более ранние главы в этом документе описали общие аспекты, среди них потребность найти аудиоустройство во время выполнения, инстанцировать его и гарантировать, что его потоковые форматы установлены соответственно. Эта глава объясняет различия среди аудиоустройств и обеспечивает специфические особенности того, как использовать их.

Позже в главе, Ключи Идентификатора для Аудиоустройств перечисляют коды, необходимо определить местоположение динамично связываемых библиотек для каждого аудиоустройства во время выполнения.

Используя Модули I/O

iOS обеспечивает три I/O (ввод/вывод) модули. Подавляющее большинство приложений аудиоустройства использует Удаленный модуль I/O, соединяющийся с аппаратными средствами аудио ввода и вывода и обеспечивающий доступ низкой задержки к частному лицу, поступающему и исходящим значениям аудиосэмпла. Для приложений VoIP Обработка речи модуль I/O расширяет Удаленный модуль I/O путем добавления акустической отмены эха и других функций. Чтобы передать аудио обратно Вашему приложению, а не вывести аудио аппаратные средства, используйте Универсальное Устройство вывода.

Удаленный Модуль I/O

Удаленный модуль I/O (подтип kAudioUnitSubType_RemoteIO) подключения к оборудованию устройства для ввода, вывода или одновременного ввода и вывода. Используйте его для воспроизведения, записи или низкой задержки одновременный ввод и вывод, где не необходима отмена эха.

Аудио аппаратные средства устройства налагают свои форматы аудиопотока на обращающиеся исходящим образом стороны Удаленного модуля I/O, как описано в Понимании, Где и Как Установить Потоковые Форматы. Аудиоустройство обеспечивает преобразование формата между аппаратными форматами аудио и Вашим форматом аудио приложения, делая так посредством включенного аудиоустройства Преобразователя форматов.

Для примера кода, показывающего, как использовать это аудиоустройство, см. проект примера кода aurioTouch.

Таблица 3-1 предоставляет подробную информацию использования для этого аудиоустройства.

Таблица 3-1  Используя Удаленный модуль I/O

Функция аудиоустройства

Подробные данные

Элементы

Один входной элемент: элемент 1. Один выходной элемент: элемент 0.

По умолчанию входной элемент отключен, и выходной элемент включен. Если необходимо изменить это, обратитесь к описанию kAudioOutputUnitProperty_EnableIO свойство.

Рекомендуемые потоковые атрибуты формата

Потоковые примечания формата

Обращающиеся исходящим образом стороны Удаленного модуля I/O получают свои форматы от аудио аппаратных средств следующим образом:

  • Входной элемент (элемент 1) входной объем получает свой потоковый формат от в настоящее время активных аппаратных средств аудиовхода.

  • Выходной элемент (элемент 0) выходной объем получает свой потоковый формат от в настоящее время активных выходных аппаратных средств аудио.

Установите свой формат приложения на выходном объеме входного элемента. Входной элемент выполняет преобразование формата между своими объемами ввода и вывода по мере необходимости. Используйте аппаратную частоту дискретизации для своего потокового формата приложения.

Если входной объем выходного элемента питается соединением аудиоустройства, это получает свой потоковый формат от того соединения. Если, однако, это питается функцией обратного вызова рендеринга, установите свой формат приложения на нем.

Параметры

Ни один в iOS.

Свойства

Посмотрите I/O Audio Unit Properties.

Примечания свойства

Вы никогда не должны устанавливать kAudioUnitProperty_MaximumFramesPerSlice свойство на этом аудиоустройстве.

Обрабатывающий речь модуль I/O

Обработка речи модуль I/O (подтип kAudioUnitSubType_VoiceProcessingIO) имеет характеристики Удаленного модуля I/O и добавляет подавление эха для двухсторонней дуплексной коммуникации. Это также добавляет автоматическое исправление усиления, корректировку обрабатывающего речь качества и отключение звука. Это - корректный модуль I/O для использования для VoIP (Передача речи по протоколу IP) приложений.

Все соображения, перечисленные в Таблице 3-1, применяют также к Обработке речи модуль I/O. Кроме того, существуют определенные свойства, доступные для этого аудиоустройства, описанного в Voice-Processing I/O Audio Unit Properties.

Универсальное устройство вывода

Используйте это аудиоустройство подтипа kAudioUnitSubType_GenericOutput, при отправке вывода графика обработки аудиоданных к приложению, а не к выходным аппаратным средствам аудио. Вы обычно использовали бы Универсальное Устройство вывода для оффлайновой обработки аудиоданных. Точно так же, как другие модули I/O Универсальное Устройство вывода включает модуль Преобразователя форматов. Это позволяет Универсальному Устройству вывода выполнить преобразование формата между потоковым форматом, используемым в графике обработки аудиоданных и форматом, который Вы хотите.

Можно также использовать Универсальное Устройство вывода в качестве заключительного узла в подграфе, который Вы помещаете в родительский график обработки аудиоданных.

Используя модули микшера

iOS обеспечивает два модуля микшера. В большинстве случаев необходимо использовать Многоканальный модуль Микшера, обеспечивающий смешивание для любого числа моно или потоков стерео. При необходимости в функциях 3D модуля Микшера необходимо очень вероятно использовать OpenAL вместо этого. OpenAL создается поверх 3D модуля Микшера, обеспечивая эквивалентную производительность с более простым API, хорошо подходящим для игровой разработки приложений.

Многоканальный модуль микшера

Многоканальный модуль Микшера (подтип kAudioUnitSubType_MultiChannelMixer) берет любое число моно или потоков стерео и комбинирует их в единственный вывод стерео. Это управляет усилением звуковых частот для каждого ввода и для вывода и позволяет Вам включить или выключить каждый ввод отдельно. Запускаясь в iOS 4.0, Многоканальный Микшер поддерживает панорамирование стерео для каждого ввода.

Для примера кода, показывающего, как использовать это аудиоустройство, см. проект примера кода Аудио Микшер (MixerHost).

Таблица 3-2 предоставляет подробную информацию использования для этого аудиоустройства.

Таблица 3-2  Используя Многоканальный модуль Микшера

Функция аудиоустройства

Подробные данные

Элементы

Один или более входные элементы, каждый из которых может быть моно или стерео. Один выходной элемент стерео.

Рекомендуемые потоковые атрибуты формата

Потоковые примечания формата

На входном объеме управляйте потоковыми форматами следующим образом:

  • Если входная шина питается соединением аудиоустройства, она получает свой потоковый формат от того соединения.

  • Если входная шина питается функцией обратного вызова рендеринга, установите свой потоковый формат законченного приложения на шине. Используйте тот же потоковый формат, как используется для данных, предоставленных обратным вызовом.

На выходном объеме, набор просто частота дискретизации приложения.

Параметры

Посмотрите Multichannel Mixer Unit Parameters.

Свойства

kAudioUnitProperty_MeteringMode.

Примечания свойства

По умолчанию, kAudioUnitProperty_MaximumFramesPerSlice свойство установлено в значение 1 024, который не достаточен, когда спят экранные блокировки и дисплей. Если Ваше приложение играет аудио с заблокированным экраном, необходимо увеличить стоимость этого свойства, если аудиовход не активен. Сделайте следующим образом:

  • Если аудиовход активен, Вы не должны устанавливать значение для kAudioUnitProperty_MaximumFramesPerSlice свойство.

  • Если аудиовход не активен, установите это свойство в значение 4 096.

3D модуль микшера

3D модуль Микшера (подтип kAudioUnitSubType_3DMixer) панорамирование стерео средств управления, воспроизведите темп и усиление для каждого ввода и средств управления другие характеристики, такие как очевидное расстояние до слушателя. Вывод имеет контроль усилением звуковых частот. Для получения некоторое представление о том, что может сделать это аудиоустройство полагайте, что OpenAL в iOS реализован с помощью него.

В большинстве случаев при необходимости в функциях 3D модуля Микшера наилучший вариант состоит в том, чтобы использовать OpenAL. Для примера кода, показывающего, как использовать OpenAL, см. проект примера кода oalTouch.

Таблица 3-3 предоставляет подробную информацию использования для этого аудиоустройства.

Таблица 3-3  Используя 3D модуль Микшера

Функция аудиоустройства

Подробные данные

Элементы

Один или более входные элементы, каждый из которых моно. Один выходной элемент стерео.

Рекомендуемые потоковые атрибуты формата

Потоковые примечания формата

На входном объеме управляйте потоковыми форматами следующим образом:

  • Если входная шина питается соединением аудиоустройства, она получает свой потоковый формат от того соединения.

  • Если входная шина питается функцией обратного вызова рендеринга, установите свой потоковый формат законченного приложения на шине. Используйте тот же потоковый формат, как используется для данных, предоставленных обратным вызовом.

На выходном объеме, набор просто частота дискретизации приложения.

Параметры

Посмотрите 3D Mixer Unit Parameters.

Свойства

Посмотрите 3D Mixer Audio Unit Properties. Отметьте, однако, что большинство этих свойств реализовано только в версии Mac OS X этого аудиоустройства.

Примечания свойства

По умолчанию, kAudioUnitProperty_MaximumFramesPerSlice свойство установлено в значение 1 024, который не достаточен, когда спят экранные блокировки и дисплей. Если Ваше приложение играет аудио с заблокированным экраном, необходимо увеличить стоимость этого свойства, если аудиовход не активен. Сделайте следующим образом:

  • Если аудиовход активен, Вы не должны устанавливать значение для kAudioUnitProperty_MaximumFramesPerSlice свойство.

  • Если аудиовход не активен, установите это свойство в значение 4 096.

Используя модули эффекта

IPod модуль EQ (подтип kAudioUnitSubType_AUiPodEQ) единственный модуль эффекта, предоставленный в iOS 4. Это - тот же эквалайзер, используемый встроенным приложением iPod. Для просмотра пользовательского интерфейса приложения iPod для этого аудиоустройства перейдите к Настройкам> iPod> EQ. Это аудиоустройство предлагает ряд предварительно установленных кривых выравнивания, таких как Басовый Усилитель, Популярность и Произносимое слово.

Необходимо предоставить собственный пользовательский интерфейс к iPod модуль EQ, как Вы должны для любого из аудиоустройств. Проект кода испытательного образца iPodEQ AUGraph Микшера демонстрирует, как использовать iPod модуль EQ и показывает один способ обеспечить пользовательский интерфейс для него.

Таблица 3-4 предоставляет подробную информацию использования для этого аудиоустройства.

Таблица 3-4  Используя iPod модуль EQ

Функция аудиоустройства

Подробные данные

Элементы

Один моно элемент или элемент стереовхода. Один моно или выходной элемент стерео.

Рекомендуемые потоковые атрибуты формата

Потоковые примечания формата

На входном объеме управляйте потоковыми форматами следующим образом:

  • Если ввод питается соединением аудиоустройства, он получает свой потоковый формат от того соединения.

  • Если ввод питается функцией обратного вызова рендеринга, установите свой потоковый формат законченного приложения на шине. Используйте тот же потоковый формат, как используется для данных, предоставленных обратным вызовом.

На выходном объеме, устанавливает тот же полный потоковый формат, который Вы использовали для ввода.

Параметры

Ни один.

Свойства

kAudioUnitProperty_FactoryPresets и kAudioUnitProperty_PresentPreset

Примечания свойства

IPod модуль EQ обеспечивает ряд предопределенных тональных кривых выравнивания как предварительные установки фабрики. Получите массив доступных настроек EQ путем доступа к аудиоустройству kAudioUnitProperty_FactoryPresets свойство. Можно тогда применить установку при помощи его как значение для kAudioUnitProperty_PresentPreset свойство.

По умолчанию, kAudioUnitProperty_MaximumFramesPerSlice свойство установлено в значение 1 024, который не достаточен, когда спят экранные блокировки и дисплей. Если Ваше приложение играет аудио с заблокированным экраном, необходимо увеличить стоимость этого свойства, если аудиовход не активен. Сделайте следующим образом:

  • Если аудиовход активен, Вы не должны устанавливать значение для kAudioUnitProperty_MaximumFramesPerSlice свойство.

  • Если аудиовход не активен, установите это свойство в значение 4 096.

Ключи идентификатора для аудиоустройств

Эта таблица обеспечивает ключи идентификатора, необходимо получить доступ к динамично связываемым библиотекам для каждого аудиоустройства iOS, вместе с краткими описаниями аудиоустройств.

  Ключи Table 3-5 Identifier для доступа к динамично связываемым библиотекам для каждого аудиоустройства iOS

Имя и описание

Ключи идентификатора

Соответствующие коды с четырьмя символами

Преобразователь

Преобразования формата аудио поддержек в или от линейного PCM.

kAudioUnitType_FormatConverter

kAudioUnitSubType_AUConverter

kAudioUnitManufacturer_Apple

aufc

conv

appl

модуль Эквалайзера iPod

Обеспечивает функции эквалайзера iPod.

kAudioUnitType_Effect

kAudioUnitSubType_AUiPodEQ

kAudioUnitManufacturer_Apple

aufx

ipeq

appl

3D модуль Микшера

Поддержки, смешивающие многократные аудиопотоки, выходное панорамирование, преобразование частоты дискретизации и т.д.

kAudioUnitType_Mixer

kAudioUnitSubType_AU3DMixerEmbedded

kAudioUnitManufacturer_Apple

aumx

3dem

appl

Многоканальный модуль Микшера

Поддержки, смешивающие многократные аудиопотоки к единому потоку.

kAudioUnitType_Mixer

kAudioUnitSubType_MultiChannelMixer

kAudioUnitManufacturer_Apple

aumx

mcmx

appl

Универсальное Устройство вывода

Преобразование поддержек в и от линейного формата PCM; может использоваться, чтобы запустить и остановить график.

kAudioUnitType_Output

kAudioUnitSubType_GenericOutput

kAudioUnitManufacturer_Apple

auou

genr

appl

Удаленный модуль I/O

Подключения к оборудованию устройства для ввода, вывода или одновременного ввода и вывода.

kAudioUnitType_Output

kAudioUnitSubType_RemoteIO

kAudioUnitManufacturer_Apple

auou

rioc

appl

Речь, Обрабатывающая модуль I/O

Имеет характеристики модуля I/O и добавляет подавление эха для двухсторонней связи.

kAudioUnitType_Output

kAudioUnitSubType_VoiceProcessingIO

kAudioUnitManufacturer_Apple

auou

vpio

appl