N64 Audio Tuning Guide
Speed Upgrades
Please optimize CPU to minimize the RSP task list.
Step 1. Basics
- Reduce pitch conversion as much as possible. Although no one method is
preferred over another, where necessary, convert in a manner that will
change the pitch slowly.
- Improve cache effectiveness by increasing the size of the DMA buffer.
Reducing the number of revolutions in a large DMA is decidedly more effective
than using numerous smaller DMAs.
- The effects should not be too elaborate (e.g., echo filter processing,
reverb).
Step 2. Using SGI sound and sequence players
- Do not use pitch bends very often, and do not use them close together.
- Do not use detailed fade-ins and fade-outs.
- Do not sound a continuous string of short musical tones. These three
(A~C) involve numerous pitch and volume conversions that require many task
lists and lengthy RSP processing.
- Make the release time as short as possible. This pertains to B. above.
A short release time is preferred to avoid wasting physical voices.
- Do not create the percussion installment using a key map. Searching for
waveform data allocated in the map takes too much time.
Step 3. Using customized players
Creating Synthesizer Drivers
- Do not rewrite unchanged parameters. This will reduce calculation time.
However, enough additional RAM is necessary.
- Synchronize the timing of parameter changes. This shortens the task lists.
- Make the callback intervals uniform. (Sacrifice the time base.)
- Select a value that does not cause variance in the number of a player's
callback revolutions during 1 frame. Perform C and D to avoid detailed
processing during a short time.
- To the greatest extent possible, execute voice management yourself. Make
the CPU, not the driver, execute voice allocation from virtual to physical
voices.
Step 4. Acceleration through coordinated operation with graphics
- By using a RDRAM FIFO buffered microcode, the RSP wait time is used more
effectively. Usually, the RSP processing time is shorter than the RDP
processing time.
- Create Audio using 2 frames. If there are 30 game frames per second or
less, audio processing time is reduced by doubling all of the buffers.
Required RAM upgrades
Step 1. Make reductions to current state
- Reduce the waveform cache (DMA buffer) to its minimum. This reduces CPU
speed.
- Reduce the number of ADPCM prediction factors. Do this when using the
tabledesign tool.
- Minimize the amount of RAM used by loading the minimum required data at
each frame instead of loading the data for several frames at one time.
Step 2. When creating player types yourself
- Customize bank file formats. As long as the ALWave Table structure exists
in the synthesizer driver, any format will do.
- Customize the sequence format. Compressing the SGI compact sequence
player format is best.
- Convert two players' functions into one. Separate sound and sequence
players are not necessary.
Step 3. Selecting optimum sampling rate
The RSP can process a maximum of 160 samples per frame. If the maximum number
of samples to be processed per frame is slightly smaller than a multiple of
160, the command list can be shortened and the overhead that is needed by
RSP processing may be kept to a minimum.
If, for example, 640 samples are required to be processed, the command list
is divided into 4 processes (frames) of 160 samples each (160 x 4 = 640).
Therefore, the RSP processes 4 times and there is no waste in the process.
If on the other hand 650 samples are required and the command list is divided
into 5 processes of 160, 160, 160, 160, and 10 samples, the RSP must process
5 times. The last process occurs for only 10 samples. This is a waste of
processing time.
For example, when RSP processing uses three subframes, the following results are obtained.
160[samples] x 3[subframes] x 60[frames] = 28800[Hz]
If approximately 27 KHz is selected, the RSP performs 3 processes of 160,
160, and 131 samples. The command list buffer can be shortened and the waste
of processing time is held to a minimum. However, the user must customize the
audio player and adjust the callback interval.
© 1999 Nintendo of America Inc.