Ginsu Wave Content

From Burnout Wiki
GinsuWaveContent
aka Ginsu Wave Content
No Example
Resource names Unknown
Type ID 0xA021
Category Sound
Memory
distribution
Main Memory only
Imports Unknown
Imported by Unknown
Editor
available?
Partial decoder, complete encoder
Decode with NFS_gin_decode (audio only)*
*Requires manual header removal
Encode with NFS GINTool**
**Requires manual header creation

Ginsu is the primary audio format used for continuous engine/exhaust sounds.

Decoding

Ginsu resources can be decoded using a tool such as Ginsu Converter.

Structures

Note: Ginsus begin with a Binary File resource.

rw::audio::core::GinsuDataLayout

The header for the audio data.

Offset Length Type Name Description Comments
0x0 0x4 char[4] id Magic Gnsu
0x4 0x2 char[2] ver Version number 20
0x6 0x2 short flags Always null
0x8 0x4 float minFrequency Minimum RPM
0xc 0x4 float maxFrequency Maximum RPM
0x10 0x4 int segCount Number of segments Always 50
0x14 0x4 int cycleCount Number of cycles
0x18 0x4 int sampleCount Total number of samples
0x1c 0x4 int sampleRate Sample rate (Hz)
0x20 0x1 uchar[1] data Ginsu data See data
0x21 0x3 Padding

Data

The header is followed by two tables of 32-bit integers representing sample indices.

The first table defines the segments, likely so only a particular portion of the audio is loaded at a given time. This always has 51 entries (though the count value is always 50) with an additional 4 bytes of padding following it.

The second table defines the cycles. Each cycle is a specific point in the rev range; at any time, it may be played continuously, switched to the next or previous cycle, or stopped altogether. A 10-second Ginsu normally contains around 400 cycles. Cycles can be automatically generated by a tool such as Crankcase Audio REV.

Audio data immediately follows the tables. It uses a proprietary lossy codec most closely related to 4-bit ADPCM.