APU
From xboxdevwiki
The MCPX contains an APU (Audio Processing Unit).
- SSL = Stream Segment List
- SGE = Scatter Gather Entry
- PRD = Physical Resource Descriptor (Same thing as SGE?!)
Contents
Global Processor (GP)
- GPS = GP Scratch (?)
- GPF = GP FIFO
Encode Processor (EP)
The EP encodes the final AC3 stream for SPDIF. [FIXME] It is not used during the Boot Animation.
- EPS = EP Scratch (?)
- EPF = EP FIFO
Voice Processor (VP)
A powerful voice processor. There can be up to 256 voices[citation needed] and 64[citation needed] of those can be 3D.
Per-voice settings:
- Head-related transfer function
- Low-frequency oscillation
- Pitch
- Input type (8bit, 16bit, 24bit, ADPCM)
- Volume envelope
- 8 target bins, each with a custom volume for this voice
There are 32 bins which these voices will be mixed into.
Memory sections
- VPV = VP Voices
- VPHT = VP HRTF Target
- VPHC = VP HRTF Current
- VPSGE = VP SGEs
- VPSSL = VP SSLs
Voice lists
The voices are kept in a single-linked list. There are 3 voice lists:
- 2D
- 3D
- MP (Multipass?)
Voice structure
This is 0x80 bytes
Pitch calculation
The 16 bit signed pitch value (p) can be converted to and from a unsigned frequency in Hz (f) using the following formulas:
p = 4096 * log2(f / 48000) f = pow2(p / 4096) * 48000