Введение
Часть I. Основы

Глава 1. От выдолбленной колоды к киберпространству
Что такое звук?
Естественные звуки
Электронные звуки
Звуки/которые мы слышим
Цифровой звук
Дополнительные источники информации

Глава 2. Восприятие звука человеком
Частота и высота тона
Высота тона в музыке
Высота тона и частота звука
Шум
Громкость, амплитуда и мощность
Общее качество звука

Глава 3. Хранение звука в цифровом виде
Дискретные форматы звука
Амплитудно-импульсная модуляция (АИМ)
Широтно-импульсная модуляция (ШИМ)
Импульсно-кодовая модуляция (ИКМ)
Побочные эффекты дискретизации
Наложение спектров
Наложение спектров в выходном сигнале
Передискретизация
Погрешность квантования
Сглаживание сигнала
Ограничение сигнала
Выборки с плавающей точкой

Глава 4. Структура для звука в C++
Класс AudioAbstract
Стереозвук
Согласование
Чтение и запись целых чисел
Класс SineWave


Часть II. Особенности работы со звуком в различных системах

Глава 5. Объекты-проигрыватели
Проигрыватели: основы
Реализация очереди
Открытие звукового файла

Глава 6. Воспроизведение звука в Windows
Воспроизведение
Вызов подсистемы
Выбор устройства
Пример приложения Windows

Глава 7. Воспроизведение звука в Mac OS
Вызов подсистемы
Двойная буферизация
Пример программы для Mac OS
Воспроизведение файла в Mac OS

Глава 8. Система UNIX и звук в сети
Серверы и потоки
Вызов подсистем и сообщения
Конфигурирование потока и подключение к серверу
Пример приложения для UNIX


Часть III. Компрессия


Глава 9. Компрессия звука
Сжатие информации без потерь
Нелинейная ИКМ
Дифференциальная ИКМ
Адаптивная ДИКМ
Методы компрессии с прогнозированием
Кодирование в частотных поддиапазонах
Компрессия речи человека
Использование опорных точек
Прогрессивная компрессия

Глава 10. Классы декомпрессоров
8-битная ИКМ
Знаковая 8-битная ИКМ
Беззнаковая 8-битная ИКМ
16-битная ИКМ
16-битная ИКМ формата MSB
16-битная ИКМ формата LSB

Глава 11. Нелинейные звуковые форматы
Логарифмическая компрессия
Компрессия m-Law
Компрессия A-Law
Свойства логарифмического кодирования

Глава 12. Дифференциальная ИКМ
Два вида ДИКМ-кодирования

Глава 13. Компрессия IMAADPCM
Общее описание работы
Декомпрессия
Компрессия
Практическая реализация IMA ADPCM
Вариант Microsoft IMA ADPCM
Вариант Apple IMA ADPCM
Сравнение модулей Microsoft и Apple
Несколько слов об IMA ADPCM
Как я разбирался с форматами ADPCM
Соавторы

Глава 14. Аудио MPEG
Обзор стандартов MPEG
Стандарт MPEG-1
Стандарт MPEG-2
Стандарт MPEG-З
Стандарт MPEG-4
Аудио MPEG
Общая структура
Обработка потока байтов
Заголовок фрейма MPEG
Слоты и фреймы
Синтез в поддиапазонах
Матрицирование
Коэффициенты взвешивания
MPEG-кодирование стереозвука
Уровень Layer 1
Хранение распределения в Layer 1
Масштабные коэффициенты в Layer 1
Хранение отсчетов в Layer 1
Передискретизация и масштабирование в Layer 1
Уровень Layer 2
Хранение распределения в Layer 2
Масштабные коэффициенты в Layer 2
Чтение выборок в Layer 2
Передискретизация в Layer 2
Уровень Layer 3
Программа чтения файлов MPEG
Источники дополнительной информации


Часть IV. Основные форматы файлов


Глава 15. Формат файла AU
Идентификация файлов AU
Чтение файлов AU
Запись файлов AU
Простой фильтр AU

Глава 16. Формат файла VOC
Идентификация файлов VOC
Заголовок файла формата VOC
Блоки данных
Блок признака окончания (тип 0)
Блок звуковых данных (тип 1)
Блок продолжения данных (тип 2)
Блок паузы (тип 3)
Маркерный блок (тип 4)
Текстовый блок (тип 5)
Циклы повторения (типы 6 и 7)
Блок расширения (тип 8)
Блок расширения (тип 9)
Другие блоки
Чтение файлов VOC

Глава 17. Формат файла WAVE
Идентификация WAVE-файлов
О файлах формата RIFF и IFF
OopMaTWAVE. Обзор
Класс WaveRead
Чтение файлов формата WAVE
Контейнеры
Контейнер RIFF WAVE
Блок fmt
Создание объекта декомпрессора
Блок data
Текстовые блоки

Глава 18. Форматы файлов AIFF и AIFF-C
Идентификация файлов AIFF
Класс AiffRead
Чтение файлов AIFF
Контейнеры
Контейнер FORM AIFF
Блок FVER
Блок СОММ
Bnoк SSND

Глава 19. Формат файла IFF/8SVX
Идентификация файлов IFF/8SVX
Обзор формата IFF/8SVX
Чтение файлов формата IFF/8SVX
Общие замечания
Контейнеры
Контейнер FORM 8SVX
Блок VHDR
Блок BODY
Ошибки IFF/8SVX
Текстовые блоки


Часть V. Форматы музыкальных файлов


Глава 20. Программирование музыки
Музыкальные инструменты
Ноты

Глава 21. Синтез музыкальных инструментов
Семплеры
Генератор синусоидального сигнала
Управление амплитудой
Управление огибающей в семплерах
Другие методы управления
Частотная модуляция и синтез
Колеблющаяся струна
Реализация алгоритма струны
Тестирование нот

Глава 22. Стандарт MIDI
Файлы формата Standard MIDI
Идентификация файлов MIDI
Блок заголовка MIDI
Дорожки MIDI
Целые значения переменной длины
Относительное время
Чтение дорожек MIDI
События MIDI
Соглашения по нумерации
Статус выполнения
Управление событиями MIDI
Чтение событий MIDI
Эксклюзивные системные сообщения
Мета-события
Синхронизация MIDI
Стандарт General MIDI
Загружаемые семплы
Проигрыватель MIDI
Постобработка потока событий MIDI
Базовый и расширенный MIDI
Воспроизведение потока событий MIDI
Каналы MIDI
Механизмы aftertouch и Pitch Wheel
Контроллеры и режимы
Реализация
Настройка нот в MIDI
Музыкальные инструменты MIDI
Предостережения
Канальный протокол MIDI
Команды реального времени
Другие форматы файлов MIDI
Стандарты MIDI

Глава 23. Формат файла MOD
Идентификация файлов MOD
Аппаратные средства Amiga
Формат MOD: обзор
Инструменты
Синхронизация
Ноты
Такты
Трафареты
Плей-лист
Детали формата
Инструменты
Ноты
Хранение музыкального произведения
Общая структура файла
Воспроизведение файлов MOD
Метод PlayBeat
Воспроизведение с эфффектами


Часть VI. Обработка звука


Глава 24. Преобразования Фурье
Основы преобразования Фурье
Синусоидальные сигналы
Как измерить одну частоту
Учет фазы
Реализация ДПФ
Масштабирование
Как оценить весь спектр
«Короткие» БПФ
Разложение «длинных» БПФ
Двухточечное БПФ
Четырехточечное БПФ
Формальный вывод БПФ
Программирование БПФ
Скоробь
Эксперименты с БПФ
Использование БПФ
Выбор окна
Замечания

Глава 25. Фильтрация
Наложение синусоид
КИХ-фильтр
Проектирование простых КИХ-фильтров
Реализация КИХ-фильтров
Фазовый сдвиг
БИХ-фильтры
Синтез с использованием фильтров


Часть VII. Приложения

Приложение А. Где можно взять исходные коды
Приложение В. Краткое введение в C++
Приложение С. Стиль программирования
Приложение D. Использованные системы
Приложение Е. Повторное использование моего
исходного программного кода
Алфавитный указатель