cue chunk
The cue chunk (with a trailing space) marks positions in the audio, such
as the start of each take or a point to jump to. Each marker has a numeric ID, and text
for it is kept separately in a LIST adtl chunk.
Fields
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 4 | char[4] | ckID | cue |
| 4 | 4 | u32 | ckSize | 4 + 24 × the number of cue points |
| 8 | 4 | u32 | dwCuePoints | the number of cue points |
| 12 | 24 each | record | points | the cue points, laid out below |
Cue point
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 4 | u32 | dwName | the cue point’s ID, unique in the file |
| 4 | 4 | u32 | dwPosition | the position in play order, in sample frames |
| 8 | 4 | char[4] | fccChunk | the chunk holding the sample, normally data |
| 12 | 4 | u32 | dwChunkStart | for a playlist of data chunks, the offset of that chunk; 0 with a single data chunk |
| 16 | 4 | u32 | dwBlockStart | for compressed data, the offset of the block holding the sample; 0 for PCM |
| 20 | 4 | u32 | dwSampleOffset | the sample frame within that block or chunk |
In a plain PCM file with one data chunk, dwPosition and
dwSampleOffset both hold the frame number of the marker.
Labels and regions
Text for the cue points goes in a LIST chunk with the list type
adtl, which holds one small chunk per piece of text:
| Chunk | Holds |
|---|---|
labl | a cue point ID (u32), then a NUL-terminated label |
note | a cue point ID (u32), then a NUL-terminated comment |
ltxt | a cue point ID, a length in frames, a purpose code, country, language, dialect and code page, then text: this turns a marker into a region |