engrus

7-Zip plugins\WavPack7z

WavPack7z is a plugin for the popular 7-Zip archiver. It allows you to pack uncompressed PCM audio data using the highly efficient WavPack compression algorithm.

Take a look at the screenshot below to see how efficiently WavPack7z can compress audio data:

WavPack codec

WavPack7z can automatically detect and pack files of the following types:

  • .wav (including bwf/rf64 и Multiple Data Chunks (Legasy Audition Format) formats)
  • .caf (Core Audio Format)
  • .w64 (Sony Wave64)
  • .dff (Philips DSDIFF)
  • .dsf (Sony DSD stream)
  • .aif, .afc (Аudio Interchange File Format, including AIFF-C format)

WavPack7z can also pack files containing raw audio data.

The following audio data parameters are allowed:

  • The number of channels: 1-256
  • Bits per sample: 1-32
  • Data type: integer or float (signed or unsigned)

WavPack7z also allows you to unpack files from Zip archives packed with WavPack method.

Installation

The WavPack7z distribution package is a Zip file that contains two folders (named "32" and "64") and a ReadMe.txt file. The folders contain the 32-bit and 64-bit versions of WavPack7z, respectively. To install WavPack7z, first create a folder named "Codecs" in the 7-Zip installation folder. Then copy the files from the "32" or "64" folder, depending on the 7-Zip edition that you are using (32-bit or 64-bit), to the "Codecs" folder. After that, each time you launch 7-Zip, it will automatically find the WavPack7z plugin and use it to support the WavPack compression method.

Usage

An important note: Use the WavPack method only to compress PCM audio data. If you try to compress any other data, 7-Zip will display an error message like this: WavPack error

To pack a file using WavPack, select the standard "Add to archive..." 7-Zip command. When the "Add to Archive" dialog box appears, select the 7z archive format

Pack to WavPack in 7-Zip

7-Zip doesn’t allow you to directly select the WavPack compression algorithm when packing files into a 7z file, so you need to enter the packing parameters into the Parameters field. We recommend that you use the following parameters string:

yx=0 0=WavPack2 1=lzma:d20 b0s1:1

The string consists of three logical parts. The first part (yx=0) disables intelligent file type detection in 7-Zip, which would otherwise automatically apply the additional Delta filter if a .wav file is detected. The second part (0=WavPack2) enables the WavPack compression method. The third part (1=lzma:d20 b0s1:1) sets the compression method for the headers and footers of the audio files to further improve the compression level.

You can set any compression level, from Fastest to Ultra, but the optimal compression level in terms of compression speed and output file size is Normal.

Compressing raw audio data

Raw audio data doesn’t have any headers, so it cannot be detected automatically. For example, think about an audio CD image file. If you want to compress raw audio data, you need to extend the second part of the parameters string (you can replace each N with a parameter value):

0=WavPack2:a=N:fb=N:o=N:mc=N:lp=N:d=Nb:c=Nb

You can omit any parameters except for "a" if they have a default value.

  • The "a" parameter sets the data type:
    ValueEndiannessData type
    Little-endianBig-endianSigned integerUnsigned integerFloat
    1++
    2++
    3++
    4++
    5++
    6++
  • The "fb" parameter sets the bits per sample. The default value is 16.
  • The "o" parameter sets the channel mask. For more details, read the Microsoft article. The default value is 0 (no information on channel type).
  • The "mc" parameter sets the number of channels. The default value is 2.
  • The "lp" parameter sets the sampling rate (Hz). The default value is 44100.
  • The "d" parameter sets the file header size (bytes). The default value is 0 (no header).
  • The "c" parameter sets the audio data size (bytes). The default value is 0, which means that the audio data fills the file to the very end. If this parameter is specified, the footer size will be calculated automatically based on the header size and the audio data size.

The default parameter values are intended for packing an audio CD image using the short parameters string (0=WavPack2:a=1).

Current version

  • Plugin version: 1.2.3
  • Distribution package size: 475 KB
  • Distribution package release date: 12 Sep 2018

Note for software developers

If you are interested in technical details, click the link to read about the WavPack7z implementation.

If you are going to add support for WavPack7z into your software, surely you would like to improve your users’ experience. WavPack7z supports the 7z Parameter API, which you can use to eliminate the need for manually entering the compression parameters. Thanks to the 7z Parameter API, your software can use any new 7-Zip plugin that supports the API and automatically display any modifiable parameters in a user-friendly manner based only on the data sent by the plugin.