Перейти к содержимому

Новая звуковая система (замена OpenAL)

IMPORTANT

Статус: WIP
Минимальная версия: 2.0

Обзор

Система заменяет устаревшую звуковую подсистему OpenAL / OpenAL Soft на современную аудиосистему с более точным пространственным позиционированием, улучшенным микшированием и расширенными возможностями обработки звука без использования сторонних библиотек для работы со звуком. Что даёт возможность писать собственные фильтры и делать более точные манипуляции со звуком.

Для реверберации используется Resonance Audio

Dev: SteamAudio (Phonon)

В коде есть первичная реализация SteamAudio (Phonon). Если кто-то захочет попробовать его, как альтернативу Resonance Audio, то может отключить #define DISABLE_STEAM_AUDIO.

image

Реализовано:

  • HRTF
  • Алгоритмический Reverb (без геометрии)

Основные изменения


1. Динамическая компрессия (Dynamic Range Compression)

Раньше:

  • Отсутствовала встроенная система управления динамическим диапазоном
  • Звук рендерился в u8 (диапазон от 0 до 256) [1 байт]

Сейчас:

  • Добавлена опциональная динамическая компрессия, работающая поверх финального микса
  • Обработка выполняется и рендерятся во float (диапазон от 0.0 до 10.0) [4 байта]
  • Пользователь может регулировать степень компрессии

Преимущества:

  • Улучшение слышимости тихих звуков
  • Защита от клиппинга на громких пиках
  • Более ровный и стабильный баланс громкости

2. Качество звука и требования к контенту

Раньше:

  • OpenAL Soft сглаживал многие артефакты автоматически

Сейчас:

  • Требуется ручная подготовка аудиоматериала
  • Инструментарий IX-Ray SDK не исправляет дефекты

Требования к .wav:

  • Частота: 44100 Гц.
  • Чистый старт и конец без шумов.
  • По желанию fade-in / fade-out.
  • Рекомендуется предварительная обработка (Reaper, Audition, RX).

3. Частота дискретизации

  • Звуковая система работает на фиксированной частоте 44100 Гц
  • Файлы с другой частотой не поддерживаются

4. Лимиты одновременных звуков

Раньше:

  • Лимит 256 слотов
  • При переполнении — звуки пропадали

Сейчас:

  • Поддерживается до 4096 звуков одновременно
  • Позволяет создавать более плотные и насыщенные акустические сцены

5. Система реверберации

EFX (старая система)

  • Тип: Preset-Based Auxiliary Reverb
  • Модель: Стандартные пресеты OpenAL (комната, туннель, холл)
  • Ограничения:
    • Ограниченное соответствие реальной акустике
    • Минимальная адаптация под уровень
    • Все звуки применяли реверберацию, даже находясь за пределами действия зоны

Resonance Audio (новая система)

  • Тип:
    Параметрическая алгоритмическая реверберация (Parametric Algorithmic Reverb)

  • Подход:

    • Resonance Audio автоматически вычисляет параметры реверберации (RT60, затухание, частотную характеристику) на основе:
      • размеров области
      • материалов
      • расположения источников и слушателя
    • Сами хвосты реверберации генерируются алгоритмически, без свёртки и без FDN
    • Ранние отражения имитируются упрощённой геометрической моделью помещения
  • Преимущества:

    • Контекстно-зависимое звучание
    • Автоматическая подстройка под окружающую среду
    • Лёгкая интеграция, минимум ручной настройки
    • Звуки вне зоны реверберации не применяют на себя семплинг, а играются как есть

Сравнение систем реверберации

ПараметрEFX (OpenAL)Resonance Audio
ТипПресетная алгоритмическаяПараметрическая алгоритмическая
Ранние отраженияПресетыМоделирование геометрией
Поздняя реверберацияАлгоритмическаяАлгоритмическая, параметры рассчитываются автоматически
РеализмСреднийВысокий (адаптация под окружение)
АдаптивностьНизкаяВысокая
НастройкаРучнаяПрактически автоматическая

6. Sound Debug Info

image

Реализован инструментарий для визуализации информации о звуках на сцене. Отображает:

  • Звуковые слоты
  • Используемые звуковые файлы
  • Реверб зоны на локации

Рекомендации для модмейкеров

1. Подготовка аудио

  • Использовать чистые .wav 44100 Гц
  • Делать fade-in/fade-out для всех файлов
  • Убирать щелчки, обрезанные хвосты и шумы
  • Проверять финальный результат через игру или Play In Editor в IX-Ray SDK

2. Учёт динамической компрессии

  • Проверять громкость на разных уровнях DRC
  • Не злоупотреблять максимальной громкостью
  • Балансировать источники вручную

3. Работа с реверберацией (Resonance Audio)

  • Назначать правильные материалы поверхностям (это в целом полезная практика для работы в X-Ray SDK)
  • Настраивать базовые пресеты в Shader Editor
  • Устанавливать пресет в соответствии с ожидаемой интенсивностью для зоны (Для тестов подойдёт Play In Editor режим)

Технические примечания

  • Для хранения используется кодек Vorbis.
  • Конвертация выполняется через инструменты IX-Ray SDK.

Опубликовано под лицензией MIT.