A simple decoder for WAV audio files.
NPM package: wav-file-decoder
Online demo: www.source-code.biz/snippets/typescript/wavFileDecoder
Examples of how to use it: github.com/chdh/wav-file-decoder/tree/main/test/src
Compagnion package: wav-file-encoder
function isWavFile (fileData: ArrayBufferView | ArrayBuffer) : boolean
fileData
: AnArrayBufferView
(e.g. Uint8Array or Node.js Buffer) or an ArrayBuffer that contains the raw data bytes of a WAV file.- Return value:
true
if the file looks like a valid and supported WAV file.
function decodeWavFile (fileData: ArrayBufferView | ArrayBuffer) : AudioData
fileData
: AnArrayBufferView
(e.g. Uint8Array or Node.js Buffer) or an ArrayBuffer that contains the raw data bytes of a WAV file.- Return value: A data structure containing the decoded WAV file data.
interface AudioData {
channelData: Float32Array[]; // arrays containing the audio samples (PCM data), one array per channel
sampleRate: number; // sample rate (samples per second)
numberOfChannels: number; // number of channels, same as channelData.length
audioEncoding: AudioEncoding; // audio encoding in the WAV file (int or float)
bitsPerSample: number; // number of bits per sample in the WAV file
wavFileTypeName: string; // combination of audioEncoding and bitsPerSample, e.g. "int16" or "float32"
}
enum AudioEncoding {
pcmInt, // 0 = PCM integer
pcmFloat // 1 = PCM float
}
The audio sample values in the channelData
arrays are within the range -1 to +1.
An exception is thrown when the passed file is not a WAV file or when the format of the WAV file is not supported.