Изучаем Core Audio. Практическое руководство по программированию звука в Mac и iOS
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Год издания: 2023
Кол-во страниц: 361
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-89818-639-5
Артикул: 817131.01.99
Звук оказывает мощное и самое непосредственное воздействие на человеческий мозг. Благодаря подсистеме Apple Core Audio мы сможете задействовать эту мощь в своих программах для Mac и iOS: захватывать звук с устройств ввода, накладывать эффекты в реальном времени, воспроизводить MP3-файлы, играть на виртуальных музыкальных инструментах, слушать веб-радио, поддерживать технологию VoIP и т.д. Самая развитая из всех когда-либо созданных систем программирования звука, Core Audio отнюдь не проста. В этом издании один из лучших авторов книг по программирования в iOS Крис Адамсон и легендарный специалист по Core Audio Кэвин Авила во всех подробностях рассказывают об этой потрясающей подсистеме, чтобы программисты на платформах Mac и iOS могли воспользоваться всеми ее возможностями.
Издание предназначено для программистов различного уровня подготовки, создающих приложения в Mac OS и iOS.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Изучаем Core Audio Практическое руководство по программированию звука в Mac и iOS Крис Адамсон, Кэвин Авила
Learning Core Audio A Hands-On Guide to Audio Programming for Mac and iOS Chris Adamson, Kevin Avila
Изучаем Core Audio Практическое руководство по программированию звука в Mac и iOS Москва, 2023 Крис Адамсон, Кэвин Авила 2-е издание, электронное
УДК 004.451iOS ББК 32.973.26-018.2 А28 А28 Адамсон, Крис. Изучаем Core Audio. Практическое руководство по программированию звука в Mac и iOS / К. Адамсон, К. Авила ; пер. с англ. — 2-е изд., эл. — 1 файл pdf : 361 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-639-5 Звук оказывает мощное и самое непосредственное воздействие на человеческий мозг. Благодаря подсистеме Apple Core Audio мы сможете задействовать эту мощь в своих программах для Mac и iOS: захватывать звук с устройств ввода, накладывать эффекты в реальном времени, воспроизводить MP3-файлы, играть на виртуальных музыкальных инструментах, слушать веб-радио, поддерживать технологию VoIP и т.д. Самая развитая из всех когда-либо созданных систем программирования звука, Core Audio отнюдь не проста. В этом издании один из лучших авторов книг по программирования в iOS Крис Адамсон и легендарный специалист по Core Audio Кэвин Авила во всех подробностях рассказывают об этой потрясающей подсистеме, чтобы программисты на платформах Mac и iOS могли воспользоваться всеми ее возможностями. Издание предназначено для программистов различного уровня подготовки, создающих приложения в Mac OS и iOS. УДК 004.451iOS ББК 32.973.26-018.2 Электронное издание на основе печатного издания: Изучаем Core Audio. Практическое руководство по программированию звука в Mac и iOS / К. Адамсон, К. Авила ; пер. с англ. — Москва : ДМК Пресс, 2016. — 360 с. — ISBN 978-5-97060-413-7. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-639-5 © Pearson Education, Inc. © Оформление, перевод ДМК Пресс, 2016
Содержание Благодарности ................................................................................ 9 Об авторах ...................................................................................... 11 Предисловие ................................................................................. 12 Введение ........................................................................................ 17 Часть I. ПРИНЦИПЫ РАБОТЫ CORE AUDIO ............................. 31 Глава 1. Общие сведения о Core Audio .................................... 31 Основные каркасы подсистемы Core Audio ......................................... 32 Соглашения, применяемые в Core Audio ............................................. 35 Первое приложение с применением Core Audio .................................. 36 Запуск примера .............................................................................. 40 Свойства Core Audio ........................................................................... 42 Резюме .............................................................................................. 44 Глава 2. Кое-что о звуке .............................................................. 46 Создание звуковых колебаний ........................................................... 46 Цифровой звук ................................................................................... 48 Отсчеты – сделай сам ........................................................................ 54 Буферы .............................................................................................. 64 Звуковые форматы ............................................................................. 65 Резюме .............................................................................................. 66 Глава 3. Обработка звука с помощью Core Audio.................. 68 Форматы звуковых данных ................................................................. 68 Пример: определение формата....................................................... 72 Канонические форматы ...................................................................... 79 Обработка звука с помощью аудиоблоков .......................................... 80 Модель вытягивания .......................................................................... 83 Резюме .............................................................................................. 84 Часть II. ПРОСТЫЕ ОПЕРАЦИИ СО ЗВУКОМ ........................... 85 Глава 4. Запись ............................................................................. 85 Все об аудиоочередях ........................................................................ 86
Содержание Разработка рекордера ....................................................................... 87 Функция CheckError() ......................................................................... 90 Создание и использование аудиоочереди .......................................... 92 Служебные функции для аудиоочереди ............................................ 100 Функция обратного вызова для записи звуковых данных ............... 104 Резюме ............................................................................................ 108 Глава 5. Воспроизведение ....................................................... 110 Постановка задачи ........................................................................... 110 Подготовка очереди для воспроизведения звукового файла ............ 112 Подготовка буферов для воспроизведения ................................... 115 Запуск очереди воспроизведения ................................................. 118 Служебные функции для воспроизведения ...................................... 119 Обработка сигнатуры формата ...................................................... 120 Вычисление размера буфера и ожидаемого числа пакетов ........... 121 Функция обратного вызова для аудиоочереди воспроизведения ..... 122 Резюме ............................................................................................ 127 Глава 6. Преобразование ......................................................... 129 Утилита afconvert .............................................................................. 129 Использование службы Audio Converter Services .............................. 132 Подготовка файлов .......................................................................... 135 Вызов службы Audio Converter Services.......................................... 138 Реализация функции обратного вызова для конвертера ................ 143 Преобразование с применением службы Extended Audio File Services ............................................................................................ 147 Чтение и преобразование данных с помощью расширенных звуковых файлов ........................................................................... 151 Резюме ............................................................................................ 154 Часть III. БОЛЕЕ СЛОЖНЫЕ ОПЕРАЦИИ СО ЗВУКОМ ........ 156 Глава 7. Аудиоблоки: генераторы, эффекты и рендеринг .................................................................................. 156 Там, где вершится волшебство ......................................................... 157 Как работает каркас Audio Units ........................................................ 158 Какие существуют аудиоблоки ......................................................... 160 Первое знакомство с аудиоблоками ................................................. 164 Функция main() .............................................................................. 166 Создание графа аудиоблоков ........................................................ 169 Конфигурирование аудиоблока плеера файлов ............................. 173 Синтез речи и наложение эффектов с помощью аудиоблоков .......... 178 Составные части графа синтеза речи ............................................ 179 Создание графа синтеза речи ....................................................... 181 Конфигурирование синтезатора речи ........................................... 183
Содержание Добавление эффектов .................................................................. 184 Включение собственного кода в процесс рендеринга звука ............. 187 Цикл рендеринга аудиоблока ........................................................ 188 Пример нестандартного рендеринга ............................................. 190 Создание и соединение аудиоблоков ............................................ 192 Функция обратного вызова рендеринга......................................... 194 Резюме ............................................................................................ 199 Глава 8. Аудиоблоки: ввод и микширование ....................... 201 Работа с устройствами ввода ........................................................... 202 Соединение блоков ввода и вывода .............................................. 204 Кольцевые буферы спешат на помощь .......................................... 205 Использование кольцевого буфера при работе с аудиоблоками ..... 207 Создание блока AUHAL для ввода .................................................. 210 Функция обратного вызова ввода .................................................. 219 Построение графа для воспроизведения отсчетов из кольцевого буфера ................................................................... 221 Функция обратного вызова рендеринга для программы сквозного воспроизведения .......................................................... 224 Запуск программы сквозного воспроизведения ............................ 226 Микширование ................................................................................. 227 Резюме ............................................................................................ 235 Глава 9. Позиционный звук ...................................................... 236 Звук в пространстве ......................................................................... 236 OpenAL API ....................................................................................... 239 Размещение звука в пространстве ................................................... 243 Подготовка к написанию программы ............................................. 244 Использование объектов OpenAL .................................................. 247 Изменение позиции источника ...................................................... 254 Загрузка отсчетов для буфера OpenAL .......................................... 255 Потоковая передача звука в OpenAL ................................................. 259 Подготовительные действия в примере работы с потоковым API OpenAL .................................................................................... 260 Подготовка ExtAudioFile к потоковому воспроизведению ............... 265 Повторное заполнение буферов OpenAL ....................................... 267 Резюме ............................................................................................ 270 Часть IV. ДОПОЛНИТЕЛЬНЫЕ ТЕМЫ ...................................... 272 Глава 10. Core Audio в системе iOS ........................................ 272 А та ли это Core Audio? ..................................................................... 272 Мирное сосуществование: служба Audio Session Services ................ 274 Пример работы с аудиосеансом ....................................................... 276 Подготовительные действия ......................................................... 277
Содержание Инициализация аудиосеанса и аудиоочереди ............................... 281 Метод генерации звука нужной высоты ......................................... 285 Обработка прерываний в iOS ......................................................... 287 Аудиоблоки в iOS .............................................................................. 290 Разработка приложения для сквозного воспроизведения звука с помощью блока удаленного ввода-вывода в iOS ......................... 292 Подготовительные действия ......................................................... 293 Настройка аудиоблока удаленного ввода-вывода для захвата и воспроизведения ....................................................................... 297 Обратный вызов от блока удаленного ввода-вывода ..................... 304 Другие приемы работы со звуком в iOS ............................................ 307 Дистанционное управление в iOS .................................................. 307 Аппаратные неожиданности в iOS ................................................. 309 Резюме ............................................................................................ 310 Глава 11. Core MIDI ..................................................................... 311 Концепции MIDI ................................................................................ 311 Core MIDI .......................................................................................... 312 Архитектура Core MIDI ................................................................... 313 Терминология Core MIDI ................................................................ 313 Свойства Core MIDI ....................................................................... 315 Сообщения MIDI ............................................................................ 315 Инструментальные блоки ................................................................. 316 Разработка простого MIDI-синтезатора ............................................ 317 Подключение к MIDI-устройству .................................................... 320 Обработка уведомлений и событий MIDI .......................................... 323 Воспроизведение графа ............................................................... 325 Создание событий MIDI .................................................................... 326 Подготовка к разработке программы MIDIWifiSource ..................... 326 Подготовка к передаче MIDI по сети Wi-Fi ...................................... 328 Отправка сообщений MIDI ............................................................. 331 Настройка Mac для получения данных MIDI по сети Wi-Fi ............... 333 Резюме: MIDI – это хорошо, но как насчет мобильности? ................. 335 Глава 12. Кода ............................................................................. 337 Еще немного Core Audio ................................................................... 337 Что дальше? ..................................................................................... 338 Цифровая обработка сигналов ...................................................... 339 Lion и iOS 5 ....................................................................................... 340 AUSampler ..................................................................................... 340 Core Audio в iOS 5 .......................................................................... 345 Сообщество Core Audio .................................................................... 346 Резюме: неплохо звучит ................................................................... 347 Предметный указатель ............................................................. 349
Благодарности От Криса Адамсона Эта книга не состоялась бы без помощи со стороны Кэвина Авилы и Майка Ли, нашедшего издательство, которое не только не отшатнулось при мысли о книге, посвященной трудной, узкоспециализированной теме программирования для Mac и iOS, но даже нашло особое удовольствие в том, чтобы выпустить ее на рынок. Они знали, что вот уже много лет публика жаждет получить изложение технологии Core Audio в такой форме, которая позволила бы среднему программисту по-настоящему воспользоваться ее фантастической мощью. За кулисами работу над книгой от начала до конца курировал Чак Топорек (Chuck Toporek), который подгонял меня, когда что-то стопорилось. И за то, что книга все-таки вышла в свет, его следует благодарить больше, чем кого-либо другого. Мы не смогли бы довести дело до конца без щедрой поддержки со стороны сообщества разработчиков Core Audio, особенно участников списка рассылки coreaudio-api. Идейный отец Core Audio Уильям Стюарт (William Stewart) и Дуг Уайат (Doug Wyatt) из компании Apple не раз тратили свое время, чтобы ответить на вопросы, отправленные в этот список, и помочь нам выйти из очередного тупика. Мы также благодарны многочисленным техническим рецензентам и читателям предварительной версии книги, которые сообщали об ошибках и делились своими впечатлениями по мере того, как книга постепенно двигалась к завершению. Из домашних я благодарю свою жену Кэлли и наших детей, Киган и Куинн, за то, что они предоставили мне свободу действий и не шарахались, когда из папиного кабинета в подвальном этаже дома доносилась очередная порция проклятий из-за того, что пример никак не хотел работать правильно. Ну и обязательные для такой книги упоминания о музыке, которую мы слушали: на этот раз это были рок-группы We Are The City,
And You Will Know Us by the Trail of Dead, Daft Punk, Dr. Dog, Fun и (очень кстати) Хацунэ Мику1. От Кэвина Авилы Я благодарен Большому Взрыву, гравитации и акту любви между моими родителями, из-за которых эта книга стала возможной. Чак Топорек (@chuckdude), Крис Адамсон (@invalidname), Майк Ли (@bmf): нет слов, чтобы выразить мою признательность за кровь, пот и мысли, которые вы вложили не только в эту книгу, но и во все сообщество разработчиков. Спасибо вам! Билл Стюарт (Bill Stewart), Джефф Мур (Jeff Moore), Дуг Уайат, Майкл Хопкинс (Michael Hopkins), Боб Эрон (Bob Aron), Джеймс Маккартни (James McCartney), Мехул Триведи (Mehul Trivedi), Синтия Максвелл (Cynthia Maxwell), Тори Уолкер (Torrey Walker), Ник Томпсон (Nick Thompson), мэтью Мора (Matthew Mora), Брэд Форд (Brad Ford), Марей Джейсон (Murray Jason) и Эдвард Агабег (Edward Agabeg): спасибо за то, что разделяете со мной страсть к познанию тайн звука. Отдельное спасибо Дэвиду Авила (David Avila), Дэниэлю Кауфману (Daniel Kaufman), Андрэ Лабраншу (Andre LaBranche), Квентину Карничелли (Quentin Carnicelli), Эдду Вину (Ed Wynne) и Стиву Джобсу. Звучит на моем iPod: AC/DC, Rush, Beach Boys, Sublime, Primus, KRS-One, Beastie Boys, Mac Dre,Vokab Kompany и великий, как никто другой, Джордж Карлин. 1 Актуальный список недавно прослушанных композиций см. по адресу www.last.fm/user/invalidname. 10 Благодарности