List chunk (of a RIFF file)

A LIST chunk defines a list of sub-chunks and has the following format.

Byte sequence description Length in bytes Starts with byte in the chunk Value
chunk ID 4 0x00 The ASCII character string "LIST"
size 4 0x04 The size of the sub-chunk less 8 (less the "chunk ID" and the "size")
list type ID 4 0x08 Various ASCII character strings. A common one is "INFO" (text information about copyright, authorship, etc.). Other examples, specific to various extensions of the RIFF format (WAVE, DLS, and others) are listed below
data various 0x0C Depends on the list type ID

LIST chunks in the RIFF context

The LIST chunk is defined in the Resource Interchange File Format (RIFF). The LIST chunk can therefore be a part of any file with a format that extends RIFF, such as WAVE, JPEG, or Downloadable Sound (DLS).

Some LIST types, such as INFO, are also part of the RIFF specifications. Thus, LIST chunks of type INFO can exist in any RIFF type files, including WAVE, DLS, and other. This also means that the some of the information in a LIST chunk of type INFO may have meaning in some files, but not in others. For example, this chunk may contain information about how an image was cropped, which is appropriate in the JPEG format, but not in the WAVE format.

Some LIST types are defined in formats that extend RIFF. Such formats, including WAVE and DLS, may specify list types that are specific to the format and will not exist in other formats that extend RIFF. The list type adtl is specific to the wave file format. Similarly, the DLS file format allows for LIST chunks with the type wvpl ("wave pool") or ins ("instruments").

List type INFO

LIST chunks of type INFO are common in formats that extend RIFF. When a LIST chunk carries the list type ID "INFO", the list contains information about the copyright, author, engineer of the file, and other similar text. The data of the LIST chunk is organized as follows.

Info ID (4 byte ASCII text) for information 1
Size of text 1
Text 1
Info ID (4 byte ASCII text) for information 2
Size of text 2
Text 2

Common info IDs in Wave files are as follows.

Info ID The corresponding text describes
IARL The location where the subject of the file is archived
IART The artist of the original subject of the file
ICMS The name of the person or organization that commissioned the original subject of the file
ICMT General comments about the file or its subject
ICOP Copyright information about the file (e.g., "Copyright Some Company 2011")
ICRD The date the subject of the file was created (creation date) (e.g., "2022-12-31")
ICRP Whether and how an image was cropped
IDIM The dimensions of the original subject of the file
IDPI Dots per inch settings used to digitize the file
IENG The name of the engineer who worked on the file
IGNR The genre of the subject
IKEY A list of keywords for the file or its subject
ILGT Lightness settings used to digitize the file
IMED Medium for the original subject of the file
INAM Title of the subject of the file (name)
IPLT The number of colors in the color palette used to digitize the file
IPRD Name of the title the subject was originally intended for
ISBJ Description of the contents of the file (subject)
ISFT Name of the software package used to create the file
ISRC The name of the person or organization that supplied the original subject of the file
ISRF The original form of the material that was digitized (source form)
ITCH The name of the technician who digitized the subject file

All text must be word aligned.

LIST chunk in the WAVE context

Besides LIST chunks of type INFO, a common LIST chunk wave files is the associated data list.

LIST chunk in the DLS context

The DLS format makes extensive use of the LIST chunks of various subtypes, in addition to the INFO subtype. The following are examples.

  • A LIST chunk of the subtype "wvpl" is a wave pool – a collection of wave samples that can be used to play various notes on various instruments. This wave pool chunk is itself a collection of LIST chunks of subtype "wave".
  • A LIST chunk of the subtype "wave" contains one wave sample. Most of this chunk follows the WAVE file format. This LIST chunk contains a format chunk, a data chunk, and a "wave sample" chunk. (This last "wave sample" subchunk is specific to the DLS format and defines the MIDI note that will be played by the sample prior to any pitch shifting).
  • A LIST chunk of the subtype "lins" is a list of instruments. It is itself a collection of LIST chunks of subtype "ins ". The instruments are those that can be played with the DLS file.
  • A LIST chunk of the subtype "ins " represents a MIDI instrument. It specifies which wave samples in the DLS file should be used to play which notes on the instrument.
  • A LIST chunk of the subtype "lrgn" is a list of regions or a list of articulations (see below).
  • A LIST chunk of the subtype "rgn " is a region. For a specific instrument, the region specifies a wave sample and which notes can be played by that wave sample, if that wave sample is pitch shifted, as well as how this sample should be played (e.g., an amplitude envelope, a low frequency oscillation, or other parameters).
  • A LIST chunk of the subtype "rgn2" is also a region, but its structure is defined in the second version (Level 2) of the DLS format.
  • A LIST chunk of the subtype "lart" is a collection of articulations. It shows how an instrument or a note in an instrument should be played (see "rgn " above).
  • A LIST chunk of the subtype "lar2" is also a collection of articulations, but its structure is defined in the second version (Level 2) of the DLS format.

See also:
Wave file format , Downloadable sounds (DLS) format

Comments

ISRC stands for "International standardised recording code".
It is not intended as a text field, but a data field with a specified 10 digit numerical input, that is a unique identifier for commercial sound recordings.
It is subsequently logged by the appropriate performing rights association in order to distribute royalty payments to composers.

Thanks for this helpful content. I wonder about the exact format of the sub-chunks for LIST type INFO.

In your writing, you have "Size of text" followed by "Text". Could you be more specific about byte sizes and string type?

In the IBM/Microsoft spec (https://www.aelius.com/njh/wavemetatools/doc/riffmci.pdf) it states that the sub-chunks would contain "ZSTR" which is just a null-terminated string. So that seems to contradict what you've written. But honestly, the IBM/Microsoft spec seems incomplete as to how these should be encoded, which is why I was happy to find your page.

Here is a piece of a LIST chunk from an actual WAVE file.

The chunk has the following hexadecimal values: 4C 49 53 54 46 00 00 00 49 4E 46 4F 49 4E 41 4D 06 00 00 00 53 68 61 6D 65 00 ... There is more, but the chunk is quite large and so I did not include all of it.

Let's break these hexadecimal values down.

4C 49 53 54 - these are the ASCII characters LIST
46 00 00 00 - this is the size of the chunk (46 hexadecimal is 70 decimal, so this chunk has 70 bytes)
49 4E 46 4F - these are the ASCII characters INFO
49 4E 41 4D - these are the ASCII characters INAM (so this little subchunk will contain the name of the product)
06 00 00 00 - the size of the name of the product is 6 byters
53 68 61 6D 65 00 - these are the 6 bytes. They are the 5 ASCII characters Shame, followed by a 0 (this is a song called Shame)

What follows after could be, for example, the 4 ASCII characters IART, noting the name of the artist, and so on.

Add new comment

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.