VAB (PS Sound Source Data)
Group of VAG waveforms and their playback attributes.
| Header file | .VH |
|---|---|
| Body file | .VB |
| ID | VABp |
This is an old revision of this page, as edited by RemmyLee at 02:27, 23 October 2026. Edit this revision | Latest revision
Overview
The VAB format manages several VAG files as one group. It is handled as a single file at runtime.1
A VAB file holds the sounds and sound effects that are used in a scene.1
VAB data is managed in a hierarchy of programs and tones. The hierarchy supports multitimbral (multisampling) functions.1
The limits are as follows:
| Item | Maximum |
|---|---|
| Programs per VAB | 128 |
| Tone lists per program | 16 |
| VAG files per VAB | 254 |
Several tone lists can reference the same waveform. Each tone list sets its own playback parameters, so one waveform can give different sounds.1
Organization
A VAB has a header (.VH) and a body (.VB).2
The header has the following fields:
| Field | Byte count |
|---|---|
| ID (VABp) | 4 |
| Version | 4 |
| VAB ID | 4 |
| Waveform size | 4 |
| System reserved | 2 |
| Number of programs | 2 |
| Number of tones | 2 |
| VAG count | 2 |
| Master volume | 1 |
| Master pan | 1 |
| Bank attribute 1 (user defined) | 1 |
| Bank attribute 2 (user defined) | 1 |
| System reserved | 4 |
| Program attribute table | 16 x 128 |
| Tone attribute table | 32 x 16 x number of programs |
| VAG offset table | 512 |
The body (.VB) holds the VAG waveforms from VAG (0) to the VAG count. Each VAG can be up to 516,096 bytes.2
Structure
Each attribute in the header can be set at execution time through a structure.2
The header holds the following structures:
| Area | Structure |
|---|---|
| First 32 bytes | VabHdr |
| Program attribute table | ProgAtr, one for each of 128 programs |
| Tone attribute table | VagAtr, one for each tone |
The structures are described in the libsnd section of the Run-Time Library Reference.2
VAG Offset Table
The VAG offset table holds the size of each VAG as a 16-bit short. The size is shifted right by 3 bits.2
The manual gives this example:3
| VAG# | 0 | 1 | 2 |
|---|---|---|---|
| VAG offset table | 0x1000 | 0x0800 | 0x0200 |
| Actual size | 0x8000 | 0x4000 | 0x1000 |
| Offset | 0x8000 | 0xc000 | 0xd000 |