lossyWAV 1.4.2, Copyright (C) 2007-2016 Nick Currie. Copyleft.
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful,but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR APARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see .
Process Description:
lossyWAV is a near lossless audio processor which dynamically reduces the
bitdepth of the signal on a block-by-block basis. Bitdepth reduction adds noiseto the processed output. The amount of permissible added noise is based on
analysis of the signal levels in the default frequency range 20Hz to 16kHz.
If signals above the upper limiting frequency are at an even lower level, they
can be swamped by the added noise. This is usually inaudible, but the behaviourcan be changed by specifying a different --limit (in the range 10kHz to 20kHz).
For many audio signals there is little content at very high frequencies and
forcing lossyWAV to keep the added noise level lower than the content at these
frequencies can increase the bitrate of the losslessly compressed output
dramatically for no perceptible benefit.
The noise added by the process is shaped using an adaptive method provided by
Sebastian Gesemann. This method, as implemented in lossyWAV, aims to use the
signal itself as the basis of the filter used for noise shaping. Adaptive noiseshaping is enabled by default.
Usage : lossyWAV
Example : lossyWAV musicfile.wav
Quality Options:
-q, --quality where t is one of the following (default = standard):
I, insane highest quality output, suitable for transcoding;
E, extreme higher quality output, suitable for transcoding;
H, high high quality output, suitable for transcoding;
S, standard default quality output, considered to be transparent;
C, economic intermediate quality output, likely to be transparent;
P, portable good quality output for DAP use, may not be transparent;
X, extraportable lowest quality output, probably not transparent.
Standard Options:
-C, --correction write correction file for processed WAV file; default=off.-f, --force forcibly over-write output file if it exists; default=off.-h, --help display help.
-L, --longhelp display extended help.
-M, --merge merge existing lossy.wav and lwcdf.wav files.
-o, --outdir destination directory for the output file(s).
-v, --version display the lossyWAV version number.
-w, --writetolog create (or add to) lossyWAV.log in the output directory.
Advanced Options:
- take WAV input from STDIN.
-c, --check check if WAV file has already been processed; default=off. errorlevel=16 if already processed, 0 if not.
-q, --quality quality preset (-5.0<=n<=10.0); (-5=lowest, 10=highest;
default=2.5; I=10.0; E=7.5; H=5.0; S=2.5; C=0.0; P=-2.5;
X=-5.0.
--, --stdout write WAV output to STDOUT.
--stdinname pseudo filename to use when input from STDIN.
Advanced Quality Options:
-A, --altspread [n] disables 'old' sperading mechanism in favour of 'new'
mechanism (default spreading uses both 'old' and 'new'
mechanisms). Takes an optional parameter, n, which relates to the proportion of adjacent bins taken into account when calculating spread average for a particular bin (0<=n<=1;
default = 0.768544).
-a, --analyses set number of FFT analysis lengths, (2<=n<=7; default=3,
i.e. 32, 64 & 1024 samples. n = 2, remove 32 sample FFT;
n > 3 add 16; n > 4, add 128; n > 5, add 256, n > 6, add
512) n.b. FFT lengths stated are for 44.1/48kHz audio,
higher sample rates will automatically increase all FFT
lengths as required.
-D, --dynamic select minimum_bits_to_keep_dynamic to n bits (default
2.71 at -q X and 5.00 at -q I, 1.0 <= n <= 7.0.
--feedback [n] enable experimental bit removal / adaptive noise shaping
noise limiter. Tuning has been carried out at -q X and
should have a negligible effect at -q S. Optional setting
(0.0 <= n <= 10.0, default = 0.0) automatically selects
the following parameters (0 = least effect, 10 = most):
r, round limit deviation from expected added noise due to rounding
(-2.0 <= n <= 2.0, default = 0.0).
n, noise limit added noise due to adaptive noise shaping
(-2.5 <= n <= 7.5, default = 0.0).
a, aclips number of permissible exceedences of adaptive noise
shaping level limit (0 <= n <= 64, default = 32).
A, alevel adaptive noise shaping level limit (-2.0 <= n <= 2.5,
default = 0.0).
V, verbose enable more detailed feedback information in output.
-I, --ignore-chunk-sizes.
ignore 'RIFF' and 'data' chunk sizes in input.
-l, --limit set upper frequency limit to be used in analyses to n Hz;
(12500 <= n <= 20000*; default=16000).
*: for 44.1/48 kHz audio. Upper limit for audio of
other sampling rates is limited to sample-rate x 45.35%
--linkchannels revert to original single bits-to-remove value for all
channels rather than channel dependent bits-to-remove.
--maxclips set max. number of acceptable clips per channel per block; (0 <= n <= 16; default = 3,3,3,3,3,2,2,2,2,2,1,1,1,0,0,0).-m, --midside analyse 2 channel audio for mid/side content.
--nodccorrect disable DC correction of audio data prior to FFT analysis, default=on; (DC offset calculated per FFT data set).
-n, --noskew disable application of low frequency level reduction prior to determination of bits-to-remove.
--scale factor to scale audio by; (0.03125 < n <= 8.0; default=1).-s, --shaping modify settings for noise shaping used in bit-removal:
a, altfilter enable alternative adaptive shaping filter method.
A, average set factor of shape modification above upper calculation
frequency limit (0.00000 <= n <= 1.00000)
c, cubic enable cubic interpolation when defining filter shape
e, extra additional white noise to add during creation of filter
f, fixed disable adaptive noise shaping (use fixed shaping)
h, hybrid enable hybrid alternative to default adaptive noise shaping
method. Uses all available calculated analyses to create
the desired noise filter shape rather than only those for
1.5ms and 20ms FFT analyses.
n, nowarp disable warped noise shaping (use linear frequency shaping)
o, off disable noise shaping altogether (use simple rounding)
s, scale change effectiveness of noise shaping (0 < n <= 2; default = 1.0)
t, taps select number of taps to use in FIR filter (8 <= n <= 256; default = 64)
w, warp enable cubic interpolation when creating warped filter
--static set minimum-bits-to-keep-static to n bits (default=6;
3<=n<=28, limited to bits-per-sample - 3).
-U, --underlap enable underlap mode to increase number of FFT analyses
performed at each FFT length, (n = 2, 4 or 8, default=2).
Output Options:
--bitdist show distrubution of bits to remove.
--blockdist show distribution of lowest / highest significant bit of
input codec-blocks and bit-removed codec-blocks.
-d, --detail enable per block per channel bits-to-remove data display.
-F, --freqdist [all] enable frequency analysis display of input data. Use of
'all' parameter displays all calculated analyses.
-H, --histogram show sample value histogram (input, lossy and correction). --perchannel show selected distribution data per channel.
-p, --postanalyse enable frequency analysis display of output and
correction data in addition to input data.
--sampledist show distribution of lowest / highest significant bit of
input samples and bit-removed samples.
--spread [full] show detailed [more detailed] results from the spreading/
averaging algorithm.
-W, --width select width of output options (79<=n<=255).
System Options:
-B, --below set process priority to below normal.
--low set process priority to low.
-N, --nowarnings suppress lossyWAV warnings.
-Q, --quiet significantly reduce screen output.
-S, --silent no screen output.
Special thanks go to:
David Robinson for the publication of his lossyFLAC method, guidance, and the motivation to implement his method as lossyWAV.
Horst Albrecht for ABX testing, valuable support in tuning the internal
presets, constructive criticism and all the feedback.
Sebastian Gesemann for the adaptive noise shaping method and the amount of
help received in implementing it and also for the basis of the fixed noise shaping method.
Tyge Lovset for the C++ translation initiative.
Matteo Frigo and for libfftw3-3.dll contained in the FFTW distribution
Steven G Johnson (v3.2.1 or v3.2.2).
Mark G Beckett for the Delphi unit that provides an interface to the
(Univ. of Edinburgh) relevant fftw routines in libfftw3-3.dll.
Don Cross for the Complex-FFT algorithm originally used.