Waveform Audio File Format (WAVE, or WAV due to its filename extension;[3][6][7] pronounced /wæv/ or /wv/ [8]) is an audio file format standard for storing an audio bitstream on personal computers. The format was developed and published for the first time in 1991 by IBM and Microsoft. It is the main format used on Microsoft Windows systems for uncompressed audio. The usual bitstream encoding is the linear pulse-code modulation (LPCM) format.

Waveform Audio File Format (WAVE/WAV)
Filename extension
.wav .wave
Internet media type
audio/vnd.wave,[1] audio/wav, audio/wave, audio/x-wav[2]
Type codeWAVE
Uniform Type Identifier (UTI)com.microsoft.waveform-audio
Developed byIBM and Microsoft
Initial releaseAugust 1991; 33 years ago (1991-08)[3]
Latest release
Multiple Channel Audio Data and WAVE Files
7 March 2007; 17 years ago (2007-03-07) (update)[4][5]
Type of formatAudio file format, container format
Extended fromRIFF
Extended toBWF, RF64

WAV is an application of the Resource Interchange File Format (RIFF) bitstream format method for storing data in chunks, and thus is similar to the 8SVX and the Audio Interchange File Format (AIFF) format used on Amiga and Macintosh computers, respectively.

Description

edit

The WAV file is an instance of a Resource Interchange File Format (RIFF) defined by IBM and Microsoft.[3] The RIFF format acts as a wrapper for various audio coding formats.

Though a WAV file can contain compressed audio, the most common WAV audio format is uncompressed audio in the linear pulse-code modulation (LPCM) format. LPCM is also the standard audio coding format for audio CDs, which store two-channel LPCM audio sampled at 44.1 kHz with 16 bits per sample. Since LPCM is uncompressed and retains all of the samples of an audio track, professional users or audio experts may use the WAV format with LPCM audio for maximum audio quality.[9] WAV files can also be edited and manipulated with relative ease using software.

On Microsoft Windows, the WAV format supports compressed audio using the Audio Compression Manager (ACM). Any ACM codec can be used to compress a WAV file. The user interface (UI) for ACM may be accessed through various programs that use it, including Sound Recorder in some versions of Windows.

Beginning with Windows 2000, a WAVE_FORMAT_EXTENSIBLE header was defined which specifies multiple audio channel data along with speaker positions, eliminates ambiguity regarding sample types and container sizes in the standard WAV format and supports defining custom extensions to the format.[4][5][10]

File specifications

edit

RIFF

edit

A RIFF file is a tagged file format. It has a specific container format (a chunk) with a header that includes a four-character tag (FourCC) and the size (number of bytes) of the chunk. The tag specifies how the data within the chunk should be interpreted, and there are several standard FourCC tags. Tags consisting of all capital letters are reserved tags. The outermost chunk of a RIFF file has a RIFF tag; the first four bytes of chunk data are an additional FourCC tag that specify the form type and are followed by a sequence of subchunks. In the case of a WAV file, the additional tag is WAVE. The remainder of the RIFF data is a sequence of chunks describing the audio information.

The advantage of a tagged file format is that the format can be extended later while maintaining backward compatibility.[11] The rule for a RIFF (or WAV) reader is that it should ignore any tagged chunk that it does not recognize.[12] The reader will not be able to use the new information, but the reader should not be confused.

The specification for RIFF files includes the definition of an INFO chunk. The chunk may include information such as the title of the work, the author, the creation date, and copyright information. Although the INFO chunk was defined for RIFF in version 1.0, the chunk was not referenced in the formal specification of a WAV file. Many readers had trouble processing this. Consequently, the safest thing to do from an interchange standpoint was to omit the INFO chunk and other extensions and send a lowest-common-denominator file. There are other INFO chunk placement problems.

RIFF files were expected to be used in international environments, so there is CSET chunk to specify the country code, language, dialect, and code page for the strings in a RIFF file.[13] For example, specifying an appropriate CSET chunk should allow the strings in an INFO chunk (and other chunks throughout the RIFF file) to be interpreted as Cyrillic or Japanese characters.

RIFF also defines a JUNK chunk whose contents are uninteresting.[14] The chunk allows a chunk to be deleted by just changing its FourCC. The chunk could also be used to reserve some space for future edits so the file could be modified without being resized. A later definition of RIFF introduced a similar PAD chunk.[15]

RIFF WAVE

edit

The top-level definition of a WAV file is:[16]

<WAVE-form> → RIFF('WAVE'
                   <fmt-ck>            // Format of the file
                   [<fact-ck>]         // Fact chunk
                   [<cue-ck>]          // Cue points
                   [<playlist-ck>]     // Playlist
                   [<assoc-data-list>] // Associated data list
                   <wave-data> )       // Wave data

The top-level RIFF form uses a WAVE tag. It is followed by a mandatory <fmt-ck> chunk that describes the format of the sample data that follows. This chunk includes information such as the sample encoding, number of bits per channel, the number of channels, and the sample rate.

The WAV specification includes some optional features. The optional <fact-ck> chunk reports the number of samples for some compressed coding schemes. The <cue-ck> chunk identifies some significant sample numbers in the wave file. The <playlist-ck> chunk allows the samples to be played out of order or repeated rather than just from beginning to end. The associated data list (<assoc-data-list>) allows labels and notes to be attached to cue points; text annotation may be given for a group of samples (e.g., caption information).

Finally, the mandatory <wave-data> chunk contains the actual samples in the format previously specified.

Note that the WAV file definition does not show where an INFO chunk should be placed. It is also silent about the placement of a CSET chunk (which specifies the character set used).

The RIFF specification attempts to be a formal specification, but its formalism lacks the precision seen in other tagged formats. For example, the RIFF specification does not clearly distinguish between a set of subchunks and an ordered sequence of subchunks. The RIFF form chunk suggests it should be a sequence container. Sequencing information is specified in the RIFF form of a WAV file consistent with the formalism: "However, <fmt-ck> must always occur before <wave-data>, and both of these chunks are mandatory in a WAVE file."[17] The specification suggests a LIST chunk is also a sequence: "A LIST chunk contains a list, or ordered sequence, of subchunks."[18] However, the specification does not give a formal specification of the INFO chunk; an example INFO LIST chunk ignores the chunk sequence implied in the INFO description.[19] The LIST chunk definition for <wave-data> does use the LIST chunk as a sequence container with good formal semantics.

The WAV specification supports, and most WAV files use, a single contiguous array of audio samples. The specification also supports discrete blocks of samples and silence that are played in order. The specification for the sample data contains apparent errors:[20]

The <wave-data> contains the waveform data. It is defined as follows:
  <wave-data>  → { <data-ck> | <data-list> }
  <data-ck>    → data( <wave-data> )
  <wave-list>  → LIST( 'wavl' { <data-ck> | // Wave samples
                                <silence-ck> }... ) // Silence
  <silence-ck> → slnt( <dwSamples:DWORD> ) // Count of silent samples

Apparently <data-list> (undefined) and <wave-list> (defined but not referenced) should be identical. Even with this resolved, the productions then allow a <data-ck> to contain a recursive <wave-data> (which implies data interpretation problems). To avoid the recursion, the specification can be interpreted as:

<wave-data>  → { <data-ck> | <wave-list> }
  <data-ck>    → data( <bSampleData:BYTE> ... )
  <wave-list>  → LIST( 'wavl' { <data-ck> | // Wave samples
                                <silence-ck> }... ) // Silence
  <silence-ck> → slnt( <dwSamples:DWORD> ) // Count of silent samples

WAV files can contain embedded IFF lists, which can contain several sub-chunks.[21][22][23]

WAV file header

edit

This is an example of a WAV file header (44 bytes). Data is stored in little-endian byte order.

[Master RIFF chunk]
   FileTypeBlocID  (4 bytes) : Identifier « RIFF »  (0x52, 0x49, 0x46, 0x46)
   FileSize        (4 bytes) : Overall file size minus 8 bytes
   FileFormatID    (4 bytes) : Format = « WAVE »  (0x57, 0x41, 0x56, 0x45)

[Chunk describing the data format]
   FormatBlocID    (4 bytes) : Identifier « fmt␣ »  (0x66, 0x6D, 0x74, 0x20)
   BlocSize        (4 bytes) : Chunk size minus 8 bytes, which is 16 bytes here  (0x10)
   AudioFormat     (2 bytes) : Audio format (1: PCM integer, 3: IEEE 754 float)
   NbrChannels     (2 bytes) : Number of channels
   Frequency       (4 bytes) : Sample rate (in hertz)
   BytePerSec      (4 bytes) : Number of bytes to read per second (Frequency * BytePerBloc).
   BytePerBloc     (2 bytes) : Number of bytes per block (NbrChannels * BitsPerSample / 8).
   BitsPerSample   (2 bytes) : Number of bits per sample

[Chunk containing the sampled data]
   DataBlocID      (4 bytes) : Identifier « data »  (0x64, 0x61, 0x74, 0x61)
   DataSize        (4 bytes) : SampledData size
   SampledData

Metadata

edit

As a derivative of RIFF, WAV files can be tagged with metadata in the INFO chunk. In addition, WAV files can embed any kind of metadata, including but not limited to Extensible Metadata Platform (XMP) data[24] or ID3 tags[25] in extra chunks. The RIFF specification requires that applications ignore chunks they do not recognize and applications may not necessarily use this extra information.

Popularity

edit

Uncompressed WAV files are large, so file sharing of WAV files over the Internet is uncommon except among video, music and audio professionals. The high resolution of the format makes it suitable for retaining first generation archived files of high quality, for use on a system where disk space and network bandwidth are not constraints.

Use by broadcasters

edit

In spite of their large size, uncompressed WAV files are used by most radio broadcasters, especially those that have adopted a tapeless system.

  • BBC Radio in the UK requires LPCM 48 kHz 16-bit WAV audio as standard for all content made for broadcast on its stations.[26]
  • The UK Commercial radio company Global Radio uses 44.1 kHz 16-bit two-channel WAV files throughout their broadcast chain.
  • The ABC "D-Cart" system, which was developed by the Australian broadcaster, uses 48 kHz 16-bit two-channel WAV files.
  • The Digital Radio Mondiale consortium uses WAV files as an informal standard for transmitter simulation and receiver testing.

Limitations

edit

The WAV format is limited to files that are less than GiB, because of its use of a 32-bit unsigned integer to record the file size in the header. Although this is equivalent to about 6.8 hours of CD-quality audio at 44.1 kHz, 16-bit stereo, it is sometimes necessary to exceed this limit, especially when greater sampling rates, bit resolutions or channel count are required. The W64 format was therefore created for use in Sound Forge. Its 64-bit file size field in the header allows for much longer recording times. The RF64 format specified by the European Broadcasting Union has also been created to solve this problem.

Non-audio data

edit

Since the sampling rate of a WAV file can vary from Hz to 4.3 GHz, and the number of channels can be as high as 65535, WAV files have also been used for non-audio data. LTspice, for instance, can store multiple circuit trace waveforms in separate channels, at any appropriate sampling rate, with the full-scale range representing ±1 V or A rather than a sound pressure.[27]

Audio compact discs

edit

Audio compact discs (CDs) do not use the WAV file format, using instead Red Book audio. The commonality is that audio CDs are encoded as uncompressed 16-bit 44.1 kHz stereo LPCM, which is one of the formats supported by WAV.

Comparison of coding schemes

edit

Audio in WAV files can be encoded in a variety of audio coding formats, such as GSM or MP3, to reduce the file size. All WAV files; even those that use MP3 compression use the .wav extension.

This is a reference to compare the monophonic (not stereophonic) audio quality and compression bitrates of audio coding formats available for WAV files including LPCM, ADPCM, Microsoft GSM 06.10, CELP, SBC, Truespeech and MPEG Layer-3. These are the default ACM codecs that come with Windows.

Format Bitrate (kbit/s) 1 minute (KiB)
11,025 Hz 16 bit LPCM 176.4 1292
08,000 Hz 16 bit LPCM 128 0938
11,025 Hz 8 bit LPCM 088.2 0646
11,025 Hz μ-Law 088.2 0646
08,000 Hz 8 bit LPCM 064 0469
08,000 Hz μ-Law 064 0469
11,025 Hz 4 bit ADPCM 044.1 0323
08,000 Hz 4 bit ADPCM 032 0234
11,025 Hz GSM 06.10 018 0132
08,000 Hz MP3 16 kbit/s 016 0117
08,000 Hz GSM 06.10 013 0103
08,000 Hz Lernout & Hauspie SBC 12 kbit/s 012 0088
08,000 Hz DSP Group Truespeech 009 0066
08,000 Hz MP3 8 kbit/s 008 0060
08,000 Hz Lernout & Hauspie CELP 004.8 0035

See also

edit

References

edit
  1. ^ Fleischman, E. (June 1998). WAVE and AVI Codec Registries. IETF. doi:10.17487/RFC2361. RFC 2361. Retrieved 2009-12-06.
  2. ^ "File Extension .WAV Details". Filext.com. Retrieved 2015-08-10.
  3. ^ a b c IBM; Microsoft (August 1991). "Multimedia Programming Interface and Data Specifications 1.0" (PDF). Retrieved 2020-12-26.
  4. ^ a b P. Kabal (2006-06-19). "Audio File Format Specifications - WAVE or RIFF WAVE sound file". McGill University. Retrieved 2010-03-16.
  5. ^ a b "Multiple Channel Audio Data and WAVE Files". Microsoft Corporation. 2007-03-07. Retrieved 2010-03-16.
  6. ^ "WAVE Audio File Format". Library of Congress. 2008-09-12. Retrieved 2023-12-03.
  7. ^ Di Silvestro, Laile L.; Baribault, Greg (June 20, 1999). Waveform Audio File Format, MIME Sub-type Registration. IETF. I-D draft-ema-vpim-wav-00. Retrieved 2009-12-06.
  8. ^ "Definition of WAV file in English". Oxford English Living Dictionary. Archived from the original on February 7, 2018.
  9. ^ Branson, Ryan (21 October 2015) (21 October 2015). "What Makes WAV Better than MP3". Online Video Converter. Retrieved 18 June 2016.{{cite web}}: CS1 maint: numeric names: authors list (link)
  10. ^ EBU (July 2009), EBU Tech 3306 - MBWF / RF64: An Extended File Format for Audio (PDF), archived from the original (PDF) on 2009-11-22, retrieved 2010-01-19
  11. ^ IBM & Microsoft 1991, p. 1-1, "The main advantage of RIFF is its extensibility; file formats based on RIFF can be future-proofed, as format changes can be ignored by existing applications."
  12. ^ IBM & Microsoft 1991, PDF p. 56, "Programs must expect (and ignore) any unknown chunks encountered, as with all RIFF forms."
  13. ^ IBM & Microsoft 1991, pp. 2-17 to 2-18
  14. ^ IBM & Microsoft 1991, p. 2-18
  15. ^ Microsoft Multimedia Standards Update, New Multimedia Data Types and Data Techniques, Revision 3.0, April 15, 1994, page 6.
  16. ^ IBM & Microsoft 1991, PDF p. 56
  17. ^ IBM & Microsoft 1991, PDF p. 56
  18. ^ IBM & Microsoft 1991, PDF p. 23
  19. ^ IBM & Microsoft 1991, PDF p. 21, INAM appears before ICOP
  20. ^ Specification from IBM & Microsoft 1991 which also describes how the production syntax is interpreted.
  21. ^ "WAVE File Format". 1999-11-15. Archived from the original on 1999-11-15. Retrieved 2010-03-16.
  22. ^ "WAVE PCM soundfile format". 2003-01-20. Archived from the original on 2009-08-27. Retrieved 2010-03-16.
  23. ^ "The WAVE File Format". Archived from the original on 2011-07-22. Retrieved 2010-03-16.
  24. ^ XMP SPECIFICATION PART 3: STORAGE IN FILES (PDF). Adobe Systems Incorporated. 2016. pp. 24–25. Archived from the original (PDF) on 25 February 2018. Retrieved 8 January 2020.
  25. ^ "WAV". Audacity. Archived from the original on 2020-11-06. Retrieved 2020-01-08.
  26. ^ "Audio Quality Information & Standards for BBC Radio and BBC Sounds" (PDF). BBC. BBC Design & Engineering. 28 March 2022. p. 8. Archived from the original (PDF) on 28 May 2024. Retrieved 28 May 2024.
  27. ^ "LTspice IV" (PDF). Linear Technologies Corporation. 2009. p. 95. Archived from the original (PDF) on 2012-02-27. Retrieved 2015-09-04.
edit
  NODES
INTERN 3
Note 3
USERS 1