NGS2
NGS2 хранит описатели системы, рэка и голоса, разбирает обычные данные RIFF/WAVE и задаёт темп тихой гранулы 48 кГц, чтобы работник программного DSP не крутился. Сам синтез голоса неполон.
Заметки репозитория по 10 октября 2026 г.
Описатели и параметры
Игра создаёт систему NGS2, рэки и голоса, а затем обходит связный список изменений параметров. PS5PCEM выдаёт устойчивые описатели, проверяет, что потомок всё ещё принадлежит живому родителю, и обходит эти списки в пределах границы. Воспроизведение, пауза, возобновление, останов и снятие применяются, когда голос отрисовывается. Состояние сообщается точными 32-битными флагами, которые читает гость.
Разбирается обычная геометрия RIFF/WAVE. Нейтральная матрица панорамы сохраняется, поэтому голос, который ещё не панорамировали, не подхватывает устаревшую матрицу другого голоса. Гранула имеет тип float32.
Почему у гранулы есть темп
Каждая тихая гранула отрисовки идёт в темпе 48 кГц. Без этого ожидания работник программного DSP игры вызывает рендерер в плотном цикле и занимает целое ядро хоста. Темп совпадает с часами AudioOut, поэтому работник спит примерно длину гранулы.
Сами семплы — тишина. Настоящие синтез голоса NGS2 и смешивание не реализованы. Игра, чей саундтрек целиком производится внутри NGS2, не услышит эти голоса через этот путь. Играм, которые декодируют через AJM и подают PCM в AudioOut, синтез NGS2 не нужен.
Что реализовано
- Устойчивые описатели системы, рэка и голоса с проверками времени жизни родителя.
- Геометрия RIFF/WAVE, ограниченные списки параметров и точные 32-битные флаги состояния.
- Воспроизведение, пауза, возобновление, останов и снятие, применяемые при отрисовке, с нейтральной матрицей панорамы.
- Тихая гранула float32 в темпе 48 кГц.
Чего ещё нет
- Синтез голоса и микшер NGS2 не реализованы.
- Гранула с темпом — это тишина, поэтому партитура только на NGS2 остаётся тихой.
- Пользовательские плагины DSP внутри голоса вне этой модели.
Связанные механизмы
Чему посвящены эти страницы