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

Новая звуковая система (замена 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.