- LossyWAV
Infobox Software
name = lossyWAV
caption =
developer = Nick Currie, David Robinson
latest_release_version = 1.1.0
latest_release_date =July 12 2008
latest preview version = 1.1.1e
latest preview date =September 30 2008
operating_system =Microsoft Windows
genre =Digital signal processing
license = GNU GPLv3+
website = lossyWAV is a free, lossy, audio pre-processor and is an implementation of the lossyFLAC method proposed by David Robinson at hydrogenaudio.org. It is designed to be used onPCM audio contained in theWAV file format in conjunction with certain lossless audio codecs to which it adds a lossy / hybrid variant. It reduces the bit depth of the input signal on a block by block basis by rounding lower significant bits (lsbs) to zero which adds a predetermined level of white noise to the output, at or below the pre-existing noise floor. When the processed file is losslessly encoded using one of the aforementioned lossless audio codecs, the resulting bitrate of the encoded file is significantly reduced compared to encoding the unpreprocessed original audio data. The option is available to the user to create a correction file which can be utilised to revert the .lossy.wav file to lossless.lossyWAV's primary goal is to maintain transparency with a high degree of confidence when processing any audio data.
Codec compatibility
* Combinations of lossyWAV with each specific encoder are referred to as lossyX, where X is an abbreviation of the lossless codec name.
There is also [http://www.hometheaterhifi.com/volume_8_4/dvd-benchmark-part-6-dvd-audio-11-2001.html#Meridian%20Lossless%20Packing%20(MLP)%20in%20a%20Nutshell evidence] — so-called "Bit Shifting" — to suggest that lossyWAV may work with MLP, but this remains untested due to prohibitive prices of encoders.
A comparison of portable media players is here, which shows FLAC and WMA Lossless compatibility among listed players.Any player supported by [http://www.rockbox.org Rockbox] can use FLAC or WavPack files after installing Rockbox.
Important note
NB: when encoding using a lossless codec, please ensure that the block size of the lossless codec matches that of lossyWAV (default = 512 samples). If this is not done then the lossless encoding of the processed WAV file will (almost certainly) be larger than it would otherwise have been. This is achieved by adding the "Encoder Parameters" in the table above to the command line of the lossless codec in question.
Bonus feature
Another, possibly not obvious, feature of lossyWAV is that the processed output can be "transcoded" from one lossless codec to another lossless codec with absolutely no loss of quality whatsoever. This is solely due to the fact that lossyWAV output is designed to be losslessly encoded - something that lossless codecs do very well indeed.
History
lossyWAV is an implementation of the lossyFLAC method proposed by [http://www.hydrogenaudio.org/forums/index.php?showuser=409 David Robinson] at hydrogenaudio, which is a method of carefully reducing the bitdepth of samples, therefore utilising the wasted bits feature of the FLAC lossless codec. The aim is to transparently reduce audio bit depth by making some lower significant bits (lsb's) zero, which adds white noise at a predetermined level to the output, at or below the noise floor of the existing audio. FLAC detects consistently zeroed lower significant bits within each single frame which results in significantly increased coding efficiency. [http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=55522&view=findpost&p=498179] In this way the user can enjoy audio encoded using the same codec (which may be all important from a hardware compatibility perspective) at a reduced bitrate compared to the lossless version.
[http://www.hydrogenaudio.org/forums/index.php?showuser=42400 Nick Currie] ported the original
MATLAB implementation toBorland Delphi with a liberal sprinkling ofIA-32 andx87 Assembly Language for speed.Subsequently, lossyFLAC proved itself to work with other lossless codecs, so the application name was changed to lossyWAV.
Since then, Nick has heavily developed and built upon lossyWAV, with valuable tuning performed by [http://www.hydrogenaudio.org/forums/index.php?showuser=25015 Horst Albrecht] at Hydrogenaudio. Although the current lossyWAV implementation has built on David's original method, the method itself still very much belongs to its author.
The implementation of
noise shaping to modify the added noise due to bit removal was achieved at version 1.1.0, aided by [http://www.hydrogenaudio.org/forums/index.php?showuser=12875 Sebastian Gesemann] at hydrogenaudio. This noise shaping implementation is fixed, however an adaptive version based on a method proposed by Sebastian is in development.Indicative bitrate reduction
It must be stressed that lossyWAV is a pure variable bit-depth pre-processor in that the overall sample size remains the same after processing but the number of significant bits used for the samples in a codec-block can change on a block-by-block basis. Bits-to-remove from the audio data are calculated on a block-by-block basis (codec-block length = 512 samples, 11.6msec @ 44.1kHz) using overlapping
fast Fourier Transform (FFT) analyses of at least two lengths (default quality preset (--standard) = 32, 64 & 1024 samples). After some manipulation, the results of each FFT analysis for a specific codec-block are then grouped and the minimum value used to determine bits-to-remove for the whole codec-block. Bit removal addswhite noise to the output, however the level of the added noise associated with the removal of a number of bits has been pre-calculated and the number of bits to remove will depend on the level of the noise floor of the codec-block in question. Each sample in the codec-block is then rounded such that the firstlsb's are zero. In this way the wasted bits feature of FLAC et al is exploited. [http://flac.sourceforge.net/format.html#subframe_header]File identification
lossyWAV-processed WAV files are named with a double filename extension, .lossy.wav, to make them instantly identifiable. e.g. ".lossy.flac" would indicate an audio file which was processed using lossyWAV, and subsequently encoded using FLAC. [http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=55522&view=findpost&p=498559]
The --correction parameter is used when processing to create a correction file which is named with the .lwcdf.wav double filename extension. When recombined with the corresponding .lossy.wav, using the --merge parameter, the original file will be reconstituted.
lossyWAV inserts a variable-length 'fact' chunk into the output
WAV file immediately after the 'fmt ' chunk. This takes the form:
Where the version, date & time and user settings are copied. Additionally, if a lossyWAV 'fact' chunk is found in thefact//lossyWAV @ dd/mm/yyyy hh:mm:ss, --standard WAV file to be processed, the processing will be halted (exit code = 16) to prevent re-processing of an already processed file.The --check parameter can be used to determine whether a file has previously been processed without trying to process it, exit code = 16 if already processed (i.e. lossyWAV 'fact' chunk found); exit code = 0 if not.
Quality presets
*--insane: (-q 10.0) Highest quality preset, generally considered to be excessive;
*--extreme: (-q 7.5) High quality preset, disc space-saving alternative to lossless archiving for large audio collections, considered to be suitable for transcoding to other lossy codecs;
*--standard: (-q 5.0) Default preset, generally accepted to be transparent;
*--portable: (-q 2.5) DAP quality preset for use on a compatible DAP. [http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=56129&view=findpost&p=531316]upported input formats
*
WAV : 9-bit to 32-bit integer samples; sample rate ≥ 32 kHz; 1 to 8 channel PCM. Very high sample rates (>48kHz) have not been extensively tested. Tunings have been focused on 16-bit, 44.1 kHz samples (i.e. Red Book PCM).References
There are no references other than the original method proposal and initial development thread at the hydrogenaudio.org forums (which is not considered by wikipedia to be an adequate reference). This project has been initiated, progressed and completed to the release of lossyWAV 1.1.0 purely through the use of the hydrogenaudio forums by the developers to communicate ideas.
External links
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=55522 Original lossyFLAC thread] - Introduction of the method by David Robinson (Replay Gain developer) at hydrogenaudio.org and initial development;
* [http://wiki.hydrogenaudio.org/index.php?title=LossyWAV lossyWAV wiki entry at hydrogenaudio.org]
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=56129 lossyWAV Development thread] - Conversion of the original Matlab script to Delphi and evolution of the method;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=63225 lossyWAV 1.0.0 release thread] - Release of version 1.0.0b on 12 May 2008;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=63254 lossyWAV 1.1.0 development thread] - Further development including channel independent bit-removal and implementation ofnoise shaping .
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=64617 lossyWAV 1.1.0 release thread] - Release of version 1.1.0 on 12 July 2008;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=65499 lossyWAV 1.2.0 Development Thread] - Latest release candidate and beta version in the first post;
Wikimedia Foundation. 2010.