Simple tools for reading and writing WAV and raw audio files. Written in pure Dart, with no dependencies.
This package currently supports reading and writing 8/16/24/32 bit PCM, and 32/64 bit float formats. Other formats can be added as needed (just file a bug).
This package also supports WAVE_FORMAT_EXTENSIBLE, but only for reading. Extensible WAVs are essentially treated as ordinary WAV files, because wValidBitsPerSample and dwChannelMask are ignored. Please file a bug if you have a use case for either of these metadata fields, or for writing extensible WAV files.
Usage
// Read a WAV file. final wav = await Wav.readFile(filename); // Look at its metadata. print(wav.format); print(wav.samplesPerSecond); // Mess with its audio data. for (final chan in wav.channels) { for (int i = 0; i < chan.length; ++i) { chan[i] /= 2; // Decrease the volume. } } // Write to another WAV file. await wav.writeFile(otherFilename);