0
votes

I am writing a wav player and I am using this file format specification: http://soundfile.sapp.org/doc/WaveFormat/.

As you can see, it expects:

  1. an initial "Riff Chunk" (which tells us whether this is a wav file or some other RIFF file type)
  2. followed by a "Format" chunk (which tells us things like the bit rate and number of channels).
  3. followed by a "Data" chunk that has all of the audio data in it.

I have an audio file which has a "LIST" chunk between the Format chunk and the Data chunk, which you can see visually when I hex-edit the file:

enter image description here

What is this LIST chunk, is it part of some standardized file format, and is there somewhere that has information on parsing it?

1

1 Answers

1
votes

Your example chunk contains a LIST of INFOrmation that includes the creating software (ISFT):

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.
...
ISFT Name of the software package used to create the file

https://www.recordingblogs.com/wiki/list-chunk-of-a-wave-file

There are other kinds of lists, but list of info is very common. The site above goes into great detail about what to expect, but in brief:

  • LIST is a well-defined container type in RIFF based files like WAVE and JPEG.
  • Not every file has a LIST container.
  • Not every LIST will contain the same kind of information. For example, WAVE may include duration; JPEG dimensions; JPEG and WAVE may both have author.
  • DLS type files rely on LIST containers to annotate all the malleable properties of the file: samples, regions, articulations, etc. any of which may be binary data.