Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Изучаем Core Audio. Практическое руководство по программированию звука в Mac и iOS

Покупка
Артикул: 817131.01.99
Доступ онлайн
519 ₽
В корзину
Звук оказывает мощное и самое непосредственное воздействие на человеческий мозг. Благодаря подсистеме Apple Core Audio мы сможете задействовать эту мощь в своих программах для Mac и iOS: захватывать звук с устройств ввода, накладывать эффекты в реальном времени, воспроизводить MP3-файлы, играть на виртуальных музыкальных инструментах, слушать веб-радио, поддерживать технологию VoIP и т.д. Самая развитая из всех когда-либо созданных систем программирования звука, Core Audio отнюдь не проста. В этом издании один из лучших авторов книг по программирования в iOS Крис Адамсон и легендарный специалист по Core Audio Кэвин Авила во всех подробностях рассказывают об этой потрясающей подсистеме, чтобы программисты на платформах Mac и iOS могли воспользоваться всеми ее возможностями. Издание предназначено для программистов различного уровня подготовки, создающих приложения в Mac OS и iOS.
Адамсон, К. Изучаем Core Audio. Практическое руководство по программированию звука в Mac и iOS : практическое руководство / К. Адамсон, К. Авила. - пер. с англ. — 2-е изд. - Москва : ДМК Пресс, 2023. - 361 с. - ISBN 978-5-89818-639-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/2108532 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Изучаем 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
Благодарности

Доступ онлайн
519 ₽
В корзину