NGS2
NGS2 keeps system, rack and voice handles, parses ordinary RIFF/WAVE data, and paces a silent 48 kHz grain so a software-DSP worker cannot spin. Voice synthesis itself is incomplete.
Repository notes through October 10, 2026
Handles and parameters
A title creates an NGS2 system, racks and voices and then walks a linked list of parameter changes. PS5PCEM issues stable handles, checks that a child still belongs to a live parent, and walks those lists inside a bound. Play, pause, resume, stop and kill are applied when the voice is rendered. State is reported with the exact 32-bit flags the guest reads.
Ordinary RIFF/WAVE geometry is parsed. A neutral pan matrix is preserved, so a voice that has not been panned does not pick up a stale matrix from another voice. The grain is float32.
Why the grain is paced
Each silent render grain is paced at 48 kHz. Without that wait, a title's software-DSP worker calls the renderer in a tight loop and takes a whole host core. The pace matches the AudioOut clock so the worker sleeps for about the length of the grain.
The samples themselves are silence. Actual NGS2 voice synthesis and mixing are not implemented. A title whose soundtrack is produced entirely inside NGS2 will not hear those voices through this path. Titles that decode with AJM and submit PCM to AudioOut do not need NGS2 synthesis.
What is implemented
- Stable system, rack and voice handles with parent lifetime checks.
- RIFF/WAVE geometry, bounded parameter lists, and exact 32-bit state flags.
- Play, pause, resume, stop and kill applied on render, with a neutral pan matrix.
- A silent float32 grain paced at 48 kHz.
What is still missing
- Voice synthesis and the NGS2 mixer are not implemented.
- The paced grain is silence, so an NGS2-only score stays quiet.
- Custom DSP plugins inside a voice are outside this model.
Related mechanisms
What these pages are