Введение
Глава 1. Основы основ
Принципы и термины компьютерного звука
Частота дискретизации (Sample Rate) и Качество выборки (Sample Quality)....
Стерео звук
Звуковые форматы, сжатие и кодеки
Микширование (mixing) звука
Краткая история звука в видеоиграх
MIDI
DLS1
DLS2
CD Звук (Redbook Audio)
И когда же это все уйдет на покой?
Покупка или создание звукового движка
BASS
MikMod
FMOD
ModPlug
Miles Sound System
Заключение
Часть I. Основы звукового движка
Глава 2. Введение в DirectAudio
Основы DirectX Audio
DirectMusic, DirectSound или DirectX Audio?
Первичный и вторичный буферы
Стриминг
Как настроить ваш компилятор для DirectX Audio
Глобальная или локальная конфигурация проекта
Построение примеров в этой книге
Создание ваших собственных проектов
ToneGenerator: простой пример DirectX Audio
Что такое ToneGenerator?
Инициализация DirectSound
Создание вторичного буфера
Создание шума
Проигрывание буфера
Освобождение памяти
Заключение
Глава 3. Воспроизведение волнового звука
Звуковые эффекты с DirectMusic
Loader
Segment
Performance
Другие объекты
Обработка ошибок в звуковом движке
Стоит ли использовать обработку исключительных ситуаций?
Правила, чтобы выжить, используя обработку исключительных ситуаций
Основы звукового движка
Исключительные ситуации в звуковом движке
Построение CAudioManager
Интеллектуальные указатели
CSound
Воспроизведение звука
Загрузка звуков
Определение, воспроизводится ли звук
Выгрузка звука
Альтернативные способы воспроизведения звука
DirectSound
Windows API Waveform Audio
Windows MCI
Заключение
Глава 4. Загрузка WAV файлов
Строение WAV файла
RIFF
Chunks
Главный чанк
Чанк формата
Чанк данных
Воплощение всего этого в жизнь
Другие способы загрузить WAV файлы
Загрузка из памяти
Загрузка из CWAVFile
Загрузка из ресурсов
Определение директории поиска
Заключение
Глава 5. Контролируемая неконтролируемость
Одновременное воспроизведение звуков
Первичные и Вторичные сегменты DirectMusic
Прощай, PlaySegment, здравствуй, PlaySegmentEx
Экземпляры звука
Создание CSoundInstance
Корректировка методов CSound
Воспроизведение звуков в цикле (Looping)
Управление громкостью с помощью DirectX Audio
Звуковые дорожки
Громкость отдельного сегмента
Глобальная громкость
Подытоживая способы управления громкостью с помощью DirectX....
Управление громкостью с помощью микширующего API
Архитектура микширующего API
Как изменять параметры микшера
Построение CMixer
Заключение
Глава 6. Воспроизведение MIDI
Как работает MIDI
Борьба классов
Загрузка и воспроизведение MIDI файлов
Улучшение звукового движка
Получение указателя CMIDIMusic
Изменение темпа
Сравнение настроек темпа с помощью дорожки или объекта Performance....
Получение темпа
Масштабирующий множитель темпа
Детектирование ритма
Уведомление DirectMusic
Вставка извещений в звуковой движок
Организация многопоточной обработки детектирования сообщений
MIDI без DirectMusic
Заключение
Глава 7. Воспроизведение MP3 и WMA
Воспроизведение MPEG Layer 3 (MP3)
Как работает MP3
Файловый формат MP3
MP3 в DirectMusic, когда WAV -- это не WAV
Воспроизведение MP3 с помощью DirectShow
Воспроизведение Windows Media Audio (WMA)
Заключение
Глава 8. Воспроизведение Ogg Vorbis
Структура Ogg Vorbis
Библиотеки Ogg и Vorbis
Библиотека Vorbisenc
Библиотека Vorbisfile
Получение помощи
От нуля к Vorbis
Использование Vorbis
Использование Vorbisfile API
Добавление Ogg Vorbis в звуковой движок
Заключение
Глава 9. Воспроизведение аудио компакт-дисков
Использование MCI для аудио компакт-дисков
Нумерация, открытие и закрытие приборов
Форматы времени MCI
Воспроизведение трека
Остановка
Приостановка и возобновление работы
Определение позиции воспроизведения
Выдвигание компакт-диска
Детектирование смены компакт-диска
Выяснение содержимого компакт-диска
Синхронное или асинхронное выполнение команд
Управление громкостью аудио компакт-диска
Образец программы CD Player
Заключение
Глава 10. Воспроизведение трекерной музыки
Введение в трекерную музыку
Использование MikMod в трекерной музыке
Установка MikMod
Помощь в MikMod
Использование MikMod в звуковом движке
Заключение
Часть II. Продвинутые возможности звукового движка
Глава 11. Динамическая музыка
Элементы динамической музыки
Коллекции DLS
Ноты
Треки
Партии
Каналы воспроизведения (PChannels)
Схемы
Вариации
Мотивы
Украшения (Embellishments)
Ансамбли
Стили
Ритмы и ритмические уровни
DirectMusic в понятиях трекерной музыки
Ряды -- это ноты DirectMusic
Столбцы -- это партии DirectMusic
Схемы -- все те же схемы
Списки порядка -- это треки ритмических уровней и стилей
Списки выборок -- это DLS коллекции
Параметры выборок -- это ансамбли
Подводим итоги: DirectMusic дает больше, чем трекерная музыка
Программирование динамической музыки
Класс CDinamicMusic
Настройка
Воспроизведение динамической музыки
Изменение Ритмического уровня
Воспроизведение мотивов
Заключение
Глава 12. Скрипты и эффекты
Аудио скриптинг
Зачем использовать аудио скриптинг?
Основы аудио скриптинга
Точка зрения звукового дизайнера
Точка зрения разработчика
Аудио скриптинг: подытожим
Эффекты
Добавление эффектов, используя DirectMusic Producer
Добавление эффектов в текущем времени
Эффекты: подытожим
Заключение
Глава 13. 3D звук, используя DirectX Audio
Основы 3D звука
Приемники и буферы
Эффект Доплера
Свойства буферов и приемников
Изменения немедленные и отложенные
Программирование 3D звука
C3DsoundListener
Изменения в CAudioManager
C3DsoundEffect
Пример программы про дальний космос
Заключение
Глава 14. 3D звук, используя OpenAL
Различия между OpenAL и 3D звуком в DirectX Audio
Источники, буферы и приемники
Больше не COM
Свойства буфера
Свойства источника
Свойства приемника
Добавление OpenAL в звуковой движок
Инсталляция OpenAL
Структура библиотеки OpenAL
Новые классы OpenAL AudioEngine
Инициализация и деинициализация OpenAL
Проверка ошибок в OpenAL
Создание и уничтожение буферов
Создание и уничтожение источников
Воспроизведение источников
Пример про дальний космос в OpenAL
Заключение
Глава 15. Продвинутые возможности 3D звука
Моделирование окружающей среды
Моделирование окружения с использованием I3DL2
Создание редактора окружения
I3DL2: подытожим
EAX
Кодировка Dolby Digital
Заключение
Глава 16. DirectPlay Voice
DirectPlay Voice API
Основы
Топология сети DirectPlay Voice
Для начала, краткий курс DirectPlay
Использование CNetConnectWizard
Программирование DirectPlay Voice
Голоса как буферы 3D звука
Заключение
Глава 17. Визуализация звука
Дискретное преобразование Фурье
Резонанс
Как вы слышите
Математическое задание резонанса
Одним синусом нам не обойтись
Число Найквиста
Дискретное преобразование Фурье
Анимация анализатора спектра
Пример программы
Загрузка файла
CDiscreteFourierTransform
Визуализация графика
Быстрые преобразования Фурье (Fast Fourier Transform)
Заключение
Заключение
Приложение А. Создание динамической музыки
Установка DirectMusic Producer
Настройка вашей MIDI клавиатуры
Если ваша MIDI клавиатура не работает
Создание нормальной музыки
Создание объектов
Значки, расширения и форматы файлов
Создание DLS коллекции
Настройка ансамбля
Создание вашей первой схемы
Завершение ввода схем
Объединение схем в сегмент
Зацикливание сегмента
Сохранение в Runtime формате
Динамическая музыка
Добавление вариаций
Создание украшений
Добавление мотивов
Аккорды композиции и треки аккордов
Создание альтернативных схем
Сохранение в Runtime формате (опять)
Заключение
Приложение Б. Советы по созданию игрового аудио
Музыка
Музыкантом можно и не быть
Использование популярных мелодий в вашей игре
Найм местного таланта
Звуковые эффекты
Как определить, когда использовать звуковой эффект....
Коллекции звуковых эффектов
Создание ваших собственных звуковых эффектов....
Скачивание звуковых эффектов из Интернета
Речь
Найм актеров и актрис для озучивания
Проблема локализации
Синхронизация движений губ
Заключение
Предметный указатель