Что такое Core Audio?

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

Core Audio в iOS и OS X

Core Audio тесно интегрируется в iOS и OS X для высокой производительности и низкой задержки.

В OS X большинство служб Core Audio разделено на уровни поверх Уровня аппаратной абстракции (HAL) как показано на рисунке 1-1. Звуковые сигналы передают и от аппаратных средств до HAL. Можно получить доступ к использованию HAL Audio Hardware Services в платформе Core Audio при требовании аудио в реальном времени. Core MIDI (Цифровой интерфейс музыкальных инструментов) платформа обеспечивает подобные интерфейсы для работы с данными MIDI и устройствами.

  Архитектура Core Audio OS X рисунка 1-1
Mac OS X Core Audio architecture

Вы находите службы прикладного уровня Core Audio в Аудио платформах Панели инструментов и Аудиоустройства.

Core Audio в iOS оптимизирован для вычислительных ресурсов, доступных в мобильной платформе с батарейным питанием. Нет никакого API для служб, которыми должна управлять очень плотно операционная система — в частности, HAL и Набор I/O. Однако существуют дополнительные службы в iOS, не существующем в OS X. Например, Аудио Сеансовые службы позволяет Вам управлять аудио поведением своего приложения в контексте устройства, функционирующего как мобильный телефон и iPod. Рисунок 1-2 обеспечивает высокоуровневое представление аудио архитектуры в iOS.

Рисунок 1-2  архитектура Core Audio iOS
iOS Core Audio Architecture

Немного о цифровом аудио и линейном PCM

Службы Most Core Audio используют и управляют аудио в импульсно-кодово модулируемом линейном (линейный PCM) формат, наиболее распространенный несжатый формат данных цифрового аудио. Запись цифрового аудио создает данные PCM путем измерения аналога (реальный мир) величина звукового сигнала равномерно (частота дискретизации) и преобразования каждой выборки в численное значение. Стандартное аудио компакт-диска (CD) использует частоту дискретизации 44,1 кГц с 16-разрядным целым числом, описывающим каждую выборку — образование разрешения или битовой глубины.

  • Выборка является единственным численным значением для единственного канала.

  • Кадр является набором совпадающих временем выборок. Например, звуковой файл стерео имеет две выборки на кадр, один для левого канала и один для правильного канала.

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

В линейном аудио PCM демонстрационное значение варьируется линейно с амплитудой исходного сигнала, который это представляет. Например, 16-разрядные целочисленные выборки в стандартном аудио CD позволяют 65 536 возможных значений между тишиной и максимальным уровнем. Различием в амплитуде от одного цифрового значения до следующего всегда является то же.

Структуры данных Core Audio, объявленные в CoreAudioTypes.h заголовочный файл, может описать линейный PCM в любой частоте дискретизации и битовой глубине. Форматы Аудиоданных вдаются в большее количество подробностей по этой теме.

В OS X Core Audio ожидает, что аудиоданные будут в собственном порядке байтов, 32-разрядном линейном формате PCM с плавающей точкой. Можно использовать Audio Converter Services для перевода аудиоданных между различными линейными вариантами PCM. Вы также используете эти преобразователи для перевода между линейным PCM и сжатыми форматами аудио, такими как MP3 и Apple Lossless. Core Audio в OS X предоставляет кодеки для перевода наиболее распространенных форматов цифрового аудио (хотя это не предоставляет кодер для преобразования в MP3).

iOS использует аудиоданные целочисленной и фиксированной точки. Результатом являются более быстрые вычисления и меньше разрядки батареи при обработке аудио. iOS обеспечивает аудиоустройство Преобразователя и включает интерфейсы от Audio Converter Services. Для получения дополнительной информации на так называемых канонических форматах аудиоданных для iOS и OS X, посмотрите Канонические Форматы Аудиоданных.

В iOS и OS X, Core Audio поддерживает наиболее распространенные форматы файлов для того, чтобы сохранить и играть аудиоданные, как описано в Форматах аудиофайла iPhone и Поддерживаемых Форматах аудиофайла и Форматах данных в OS X.

Аудиоустройства

Аудиоустройства являются плагинами программного обеспечения те аудиоданные процесса. В OS X единственное аудиоустройство может использоваться одновременно неограниченным количеством каналов и приложений.

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

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

В приложениях Mac, которые Вы разрабатываете, можно использовать предоставленные систему или предоставленные третьими лицами аудиоустройства. Можно также разработать аудиоустройство как продукт самостоятельно. Пользователи могут использовать Ваши аудиоустройства в приложениях, таких как GarageBand и Логический Studio, а также во многих других хост-приложениях аудиоустройства.

Некоторые аудиоустройства Mac работают негласно для упрощения общих задач для Вас — таких как разделение сигнала или взаимодействие через интерфейс с аппаратными средствами. Другие появляются на экране, с их собственными пользовательскими интерфейсами, для предложения обработки сигналов и манипулирования. Например, модули эффекта могут подражать своим реальным дубликатам, таким как поле искажения гитариста. Другие аудиоустройства генерируют сигналы, или программно или в ответ на ввод MIDI.

Некоторые примеры аудиоустройств:

  • Сигнальный процессор (например, фильтр высоких частот, реверберация, компрессор или модуль искажения). Каждый из них является в общем модулем эффекта и выполняет цифровую обработку сигналов (DSP) в пути, подобном аппаратному полю эффектов или внешнему сигнальному процессору.

  • Музыкальный инструмент или синтезатор программного обеспечения. Их вызывают модулями инструментов (или, иногда, музыкальные устройства) и обычно генерируют музыкальные ноты в ответ на ввод MIDI.

  • Источник сигнала. В отличие от модуля инструментов, модуль генератора не активируется вводом MIDI, а скорее через код. Например, модуль генератора мог бы вычислить и генерировать синусоидальные волны, или он мог бы получить данные от файла или сетевого потока.

  • Интерфейс к аппаратному вводу или выводу. Для получения дополнительной информации о модулях I/O посмотрите Уровень аппаратной абстракции и Взаимодействующий через интерфейс с Аппаратными средствами.

  • Преобразователь форматов. Преобразователь может перевести данные между двумя линейными вариантами PCM, слиянием или разделить аудиопотоки, или выполнить время и передать изменения. Посмотрите Плагины Core Audio: Аудиоустройства и Кодеки для подробных данных.

  • Микшер или регулятор панорамы. Модуль микшера может объединить аудиотреки. Модуль регулировки панорамы может применить стерео или 3D эффекты панорамирования.

  • Модуль эффекта, работающий оффлайн. Оффлайновый модуль эффекта выполняет работу, которая или слишком интенсивна процессором или просто невозможна в режиме реального времени. Например, эффект, выполняющий реверсирование времени на файле, должен быть применен оффлайн.

В OS X Вы можете аудиоустройства смешивания и подгонки в любых перестановках, которых Вы или Ваш конечный пользователь требуете. Рисунок 1-3 показывает простую цепочку аудиоустройств. Существует модуль инструментов для генерации звукового сигнала на основе управляющей информации, полученной от внешней клавиатуры MIDI. Сгенерированное аудио тогда проходит через модули эффекта для применения полосовой фильтрации и искажения. Цепочку аудиоустройств вызывают графиком обработки аудиоданных.

Рисунок 1-3  простой график обработки аудиоданных
Three audio units, connected in series

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

При разработке приложений аудио Mac поддержка аудиоустройств позволяет Вам, и Ваши пользователи эффективно используют библиотеку существующих аудиоустройств (и третье лицо и предоставленный Apple) для расширения возможностей приложения.

Для экспериментирования с аудиоустройствами в OS X см. приложение AU Lab, доступное в установке Инструментов XCode в /Developer/Applications/Audio. AU Lab позволяет Вам аудиоустройства смешивания и подгонки для создания сигнальной цепочки с источника аудиосигналов на устройство вывода.

Посмотрите Предоставленные систему Аудиоустройства в OS X для перечисления аудиоустройств, поставляющих с OS X v10.5 и iOS 2.0.

Уровень аппаратной абстракции

Core Audio использует уровень аппаратной абстракции (HAL) для обеспечения непротиворечивого и предсказуемого интерфейса для приложений для взаимодействия с аппаратными средствами. HAL может также обеспечить информацию синхронизации для Вашего приложения, чтобы упростить синхронизацию или привести в соответствие с задержкой.

В большинстве случаев Ваш код не взаимодействует непосредственно с HAL. Apple предоставляет специальное аудиоустройство — вызвал модуль AUHAL в OS X и модуль AURemoteIO в iOS — который позволяет Вам передавать аудио с другого аудиоустройства на аппаратные средства. Точно так же ввод, прибывающий из аппаратных средств, направлен через модуль AUHAL (или модуль AURemoteIO в iOS) и сделан доступный для последующих аудиоустройств, как показано на рисунке 1-4.

  Аппаратный ввод рисунка 1-4 через HAL и модуль AUHAL
A microphone whose signal reaches the computer through the AUHAL unit

Модуль AUHAL (или модуль AURemoteIO) также заботятся о любом преобразовании данных или отображении канала, требуемом переводить аудиоданные между аудиоустройствами и аппаратными средствами.

Поддержка MIDI в OS X

Core MIDI является частью Core Audio, поддерживающего протокол MIDI. (MIDI Не доступен в iOS.) Core MIDI позволяет приложениям связываться с MIDI-устройствами, такими как клавиатуры и гитары. Ввод от MIDI-устройств может быть сохранен как данные MIDI или использоваться для управления модулем инструментов. Приложения могут также отправить данные MIDI в MIDI-устройства.

Core MIDI использует абстракции, чтобы представлять MIDI-устройства и подражать стандартным кабельным соединениям MIDI (MIDI В, MIDI и MIDI Через) при обеспечении ввода и вывода низкой задержки. Core Audio также поддерживает интерфейс программирования аудиоплеера, который можно использовать для игры ОСНОВАННОГО НА MIDI управления или музыкальных данных.

Для получения дополнительной информации о возможностях протокола MIDI, обратитесь на сайт Ассоциации Производителей MIDI, http://midi .org.

Аудио приложение установки MIDI

Аудио Приложение установки MIDI позволяет пользователям:

  • Укажите аудиовход по умолчанию и устройства вывода.

  • Сконфигурируйте свойства для устройств ввода и вывода, таких как частота дискретизации и битовая глубина.

  • Отобразите звуковые каналы на доступные динамики (для стерео, 5.1 окружают, и т.д.).

  • Создайте составные устройства. (Для получения информации о составных устройствах посмотрите Используя Составные устройства.)

  • Сконфигурируйте сети MIDI и MIDI-устройства.

Вы считаете Аудио Установкой MIDI в /Applications/Utilities папка.

Студия звукозаписи Core Audio Mac

Традиционное — некомпьютерный — студия звукозаписи может служить концептуальной основой для приближающегося Core Audio. Такая студия может иметь несколько «реальных» инструментов и модулей эффекта, подающих микшерный пульт, как показано на рисунке 1-5. Микшер может направить свой вывод к студийным мониторам и регистрирующему устройству (показанный здесь, довольно ретро способом, как магнитофон).

Рисунок 1-5  простая некомпьютерная студия звукозаписи
Connections in a traditional, non-computer based recording studio, centered on a mixing desk.

Многие части в традиционной студии могут быть заменены основанными на программном обеспечении эквивалентами — все из которых Вы уже встретились в этой главе. На настольной вычислительной платформе приложения цифрового аудио могут записать, синтезировать, отредактировать, смешать, обработать и воспроизвести аудио. Они могут также записать, отредактировать, обработать и воспроизвести данные MIDI, взаимодействующие через интерфейс с обоими аппаратными и программными обеспечениями инструменты MIDI. Приложения Mac полагаются на службы Core Audio для обработки всех этих задач, как показано на рисунке 1-6.

Рисунок 1-6  Core Audio «студия звукозаписи»
Connections in a a software-based recording studio, centered on a mixer audio unit.Connections in a a software-based recording studio, centered on a mixer audio unit.

Как Вы видите, аудиоустройства могут составить большую часть цепочки звукового сигнала. Другие интерфейсы Core Audio предоставляют поддержку прикладного уровня, позволяя приложениям получить аудио или данные MIDI в различных форматах и вывести его к файлам или устройствам вывода. Core Audio Services обсуждает составляющие интерфейсы Core Audio более подробно.

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

На мобильном устройстве, таком как iPhone или iPod touch, аудиосреда и вычислительные ресурсы оптимизированы для расширения времени работы от батареи. В конце концов, самые существенные идентификационные данные iPhone как телефон. От разработки или пользовательской перспективы, это не было бы целесообразно помещать iPhone в основе виртуальной студии звукозаписи. С другой стороны, специальные возможности iPhone — включая экстремальную мобильность, встроенную Добрый день сети, мультисенсорный интерфейс, и акселерометр и расположение, APIS — позволяет Вам вообразить и создать аудиоприложения, которые никогда не были возможны на рабочем столе.

Разработка Mac Используя Core Audio SDK

Для помощи аудио разработчикам Apple предоставляет комплект разработчика программного обеспечения (SDK) для Core Audio в OS X. SDK содержит много примеров кода, покрывающих и аудио и службы MIDI, а также инструменты диагностики и тестовые приложения. Примеры включают:

Этот документ указывает на дополнительные примеры в Core Audio на SDK, иллюстрирующий, как выполнить общие задачи.

SDK также содержит платформу C++ для создания аудиоустройств для OS X. Эта платформа упрощает объем работы, который необходимо сделать путем изоляции Вас от подробных данных интерфейса плагина Менеджера компонентов. SDK также содержит шаблоны для общих типов аудиоустройства; по большей части Вы только должны переопределить те методы, применяющиеся к Вашему пользовательскому аудиоустройству. Некоторые демонстрационные проекты аудиоустройства показывают эти шаблоны и платформы в использовании. Для получения дополнительной информации при использовании платформы и шаблонов, см. Руководство по программированию Аудиоустройства.

Core Audio SDK принимает Вас, будет использовать XCode в качестве Вашей среды разработки.

Можно загрузить последний SDK с http://developer .apple.com/sdk/. После установки файлы SDK расположены в /Developer/Examples/CoreAudio. Приложения HALLab and AU Lab расположены в /Developer/Applications/Audio.