IPB

Welcome Guest ( Log In | Register )

lossyWAV 1.1.0 released., Added noise WAV bit reduction method.
Nick.C
post Jul 14 2008, 12:34
Post #1


lossyWAV Developer


Group: Developer
Posts: 1807
Joined: 11-April 07
From: Wherever here is
Member No.: 42400



lossyWAV 1.1.0c is now available for download.
CODE
lossyWAV 1.1.0c, Copyright (C) 2007,2008 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 A
PARTICULAR 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 <http://www.gnu.org/licenses/>.

Process Description:

lossyWAV adds white noise to the processed output. The amount of added noise is
based on analysis of the signal levels in the 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 behaviour
can be changed by specifying a higher --limit (in the range 16kHz 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 dramatically for no perceptible benefit.

Usage   : lossyWAV <input wav file> <options>

Example : lossyWAV musicfile.wav

Quality Options:

-I, --insane        highest quality output, suitable for transcoding;
-E, --extreme       high quality output, also suitable for transcoding;
-S, --standard      default quality output, considered to be transparent;
-P, --portable      good quality output for DAP use. Not considered to be fully
                    transparent, but considered fit for its intended purpose.

Standard Options:

-c, --check         check if WAV file has already been processed; default=off.
                    errorlevel=16 if already processed, 0 if not.
-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 <t>    destination directory for the output file(s).
-v, --version       display the lossyWAV version number.

Advanced Options:

-                   if filename="-" then WAV input is taken from STDIN.
    --blockdist     show distribution of lowest significant bit of input
                    codec-blocks and bit-removed codec-blocks.
-D, --dither <n>    enable variable PDF dither of output; default=off;
                    0 = rectangular; 1 = triangular; 0.5 = half way between.
-l, --limit <n>     set upper frequency limit to be used in analyses to n Hz;
                    (16000<=n<=20000), default = 16000.
    --linkchannels  Revert to original single bits-to-remove value for all
                    channels rather than channel dependent bits-to-remove.
-q, --quality <n>   quality preset (10=highest quality, 0=lowest bitrate;
                    default = --standard = 5; --insane = 10; --extreme = 7.5;
                    --portable = 2.5)
    --sampledist    show distribution of lowest significant bit of input
                    samples and bit-removed samples.
    --scale <n>     scaling factor from WaveGain, etc; (0.0<n<=8.0),default=1.0
-s, --shaping <n>   enable fixed noise shaping; (0.00<=n<=1.00); default=q/10;
                    0.00 = off, 1.00 = 100% effectiveness, 0.50 = 50%, etc.
    --stdinname <t> pseudo filename to use when input from STDIN.
    --stdout        write processed WAV output to STDOUT.
-w, --writetolog    create (or append to) lossyWAV.log in the output directory.

System Options:

-B, --below         set process priority to below normal.
-d, --detail        enable detailed bits-to-remove information output mode
    --low           set process priority to low.
-n, --nowarnings    suppress lossyWAV warnings.
-Q, --quiet         significantly reduce screen output.
    --silent        no screen output.

Special thanks:

David Robinson      for the publication of his lossyFLAC method, guidance, and
                    the motivation to implement the 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 noise shaping coefficients and help in using them
                    in the lossyWAV noise shaping implementation.
Don Cross           for the Complex-FFT algorithm used.
Link to the hydrogenaudio wiki article

Suggested foobar2000 converter setup:

lossyFLAC:
CODE
Encoder: c:\windows\system32\cmd.exe
Extension: lossy.flac
Parameters: /d /c c:\"program files"\bin\lossywav - --standard --silent --stdout|c:\"program files"\bin\flac - -b 512 -5 -f -o%d
Format is: lossless or hybrid
Highest BPS mode supported: 24
lossyTAK:
CODE
Encoder: c:\windows\system32\cmd.exe
Extension: lossy.tak
Parameters: /d /c c:\"program files"\bin\lossywav - --standard --silent --stdout|c:\"program files"\bin\takc -e -p2m -fsl512 -ihs - %d
Format is: lossless or hybrid
Highest BPS mode supported: 24
lossyWV:
CODE
Encoder: c:\windows\system32\cmd.exe
Extension: lossy.wv
Parameters: /d /c c:\"program files"\bin\lossywav - --standard --silent --stdout|c:\"program files"\bin\wavpack -hm --blocksize=512 --merge-blocks -i - %d
Format is: lossless or hybrid
Highest BPS mode supported: 24

Enclose the element of the path containing spaces within double quotation marks ("), e.g. C:\"Program Files"\directory_where_executable_is\executable_name. This is a Windows limitation.
N.B.: lossyWAV 1.2.0 development thread here

This post has been edited by Nick.C: Apr 17 2012, 20:51
Attached File(s)
Attached File  lossyWAV_1.1.0c.zip ( 75.56K ) Number of downloads: 939
Attached File  lossyWAV_Source_20090430_2145_1.1.0c.zip ( 201.82K ) Number of downloads: 354
 


--------------------
lossyWAV -q X -a 4 --feedback 4| FLAC -8 ~= 320kbps
Go to the top of the page
+Quote Post
 
Start new topic
Replies
2Bdecided
post Jul 28 2008, 16:28
Post #2


ReplayGain developer


Group: Developer
Posts: 5259
Joined: 5-November 01
From: Yorkshire, UK
Member No.: 409



Nick,

1. The FFT size should vary with sample rate, though good luck making that happen easily with all the optimisation you've done! wink.gif

2. IMO and IIRC, enabling dither shouldn't raise the noise floor much on average - the noise floor should stay the same, but more bits will have to be kept the achieve this.

I don't enable dither either.

Cheers,
David.
Go to the top of the page
+Quote Post
Nick.C
post Jul 28 2008, 20:14
Post #3


lossyWAV Developer


Group: Developer
Posts: 1807
Joined: 11-April 07
From: Wherever here is
Member No.: 42400



QUOTE (2Bdecided @ Jul 28 2008, 16:28) *
Nick,

1. The FFT size should vary with sample rate, though good luck making that happen easily with all the optimisation you've done! wink.gif

2. IMO and IIRC, enabling dither shouldn't raise the noise floor much on average - the noise floor should stay the same, but more bits will have to be kept the achieve this.

I don't enable dither either.

Cheers,
David.
I will modify 1.1.0 to increase the FFT lengths at 69.08kHz, 138.15kHz and 276.3kHz, i.e. 64 to 128 to 256 and 512 samples respectively and correspondingly for the other lengths with a similar increase in codec-block length, 512 to 1024 to 2048 to 4096 samples. This means that the maximum length of FFT will be 8192 samples. [edit] arithmetic failure [/edit]

The spreading functions will not require to be changes as they will be working over approximately the same number of FFT bins after each change, taking into account the increase in sample rate.

I feel that an upper frequency limit of 384kHz is high enough, although I am open to suggestions.

Basically this means that at present I am not confident in the high (i.e. >48kHz) sample rate performance of lossyWAV 1.1.0 and would caution anyone using it at these sample rates against using it for anything other than testing purposes.

On dither, of course you're right - the increase in noise due to dithering will mean that fewer bits can be removed to keep the added noise to the same level that it would have been had to no dither been used used. I will look at creating additional reference threshold constants for the range of dither between --dither 0 (rectangular) to --dither 1 (triangular) to allow dither to be "safely" used.

This post has been edited by Nick.C: Jul 28 2008, 20:15


--------------------
lossyWAV -q X -a 4 --feedback 4| FLAC -8 ~= 320kbps
Go to the top of the page
+Quote Post
Hancoque
post Aug 3 2008, 02:33
Post #4





Group: Members
Posts: 291
Joined: 27-January 04
From: Germany
Member No.: 11530



QUOTE (Nick.C @ Jul 28 2008, 21:14) *
Basically this means that at present I am not confident in the high (i.e. >48kHz) sample rate performance of lossyWAV 1.1.0 and would caution anyone using it at these sample rates against using it for anything other than testing purposes.
Do you refer to lossyWAV in general or to how noise shaping is applied?

QUOTE (Nick.C @ Jul 14 2008, 22:38) *
My intention is to understand and implement SebastianG's new noise shaping method, but for that I will also have to introduce / find a PSY model of some kind.

I would hope that by using the new noise shaping method some additional bits can be removed for the same apparent quality level of output, thereby further reducing the bitrate.

What would happen if noise shaping is disabled via --shaping 0? Would that be taken into account by *not* removing those "additional bits" then? Otherwise the non-shaped results might be pretty bad in comparison if used with lower quality settings.

I'm also wondering if trading further removal of bits for better noise shaping really yields useful results as both methods seem to cancel each other out:

Removing more bits:
- lower filesize
- more noise

Stronger noise shaping:
- higher filesize
- less (perceived) noise
Go to the top of the page
+Quote Post
Nick.C
post Aug 3 2008, 08:45
Post #5


lossyWAV Developer


Group: Developer
Posts: 1807
Joined: 11-April 07
From: Wherever here is
Member No.: 42400



QUOTE (Hancoque @ Aug 3 2008, 02:33) *
Do you refer to lossyWAV in general or to how noise shaping is applied?

What would happen if noise shaping is disabled via --shaping 0? Would that be taken into account by *not* removing those "additional bits" then? Otherwise the non-shaped results might be pretty bad in comparison if used with lower quality settings.

I'm also wondering if trading further removal of bits for better noise shaping really yields useful results as both methods seem to cancel each other out:

Removing more bits:
- lower filesize
- more noise

Stronger noise shaping:
- higher filesize
- less (perceived) noise
I was referring to lossyWAV in general as the 64/1024 sample fft lengths are fixed at present.
Disabling noise shaping will reduce filesize and increase perceived noise. However the added noise (especially at higher quality presets) should be at or below the existing noise floor.

The noise shaping implementation results in a trade-off between bits removed and filesize. That is why the option remains for the user to disable noise shaping. At --insane the addition of noise shaping only adds a few kbit/s to the FLAC encoded lossyWAV output. The increase in bitrate is substantially more at lower
quality presets.

Modifications for 1.1.0b:
  • implementation of increasing fft length for increasing sample rate;
  • improved logfile output and --detail output;
  • reference threshold constants for rectangular dither and triangular dither have been calculated so added noise should be the same for dither off and any dither level between 0 and 1 - the number of bits-to-remove will however reduce with "increasing" dither.
I expect to post lossyWAV 1.1.0b tonight.


--------------------
lossyWAV -q X -a 4 --feedback 4| FLAC -8 ~= 320kbps
Go to the top of the page
+Quote Post
botface
post Aug 3 2008, 08:51
Post #6





Group: Members
Posts: 359
Joined: 14-January 08
Member No.: 50483



QUOTE
[*]reference threshold constants for rectangular dither and triangular dither have been calculated so added noise should be the same for dither off and any dither level between 0 and 1 - the number of bits-to-remove will however reduce with "increasing" dither.
I expect to post lossyWAV 1.1.0b tonight.


I'm not clear under what circumstances it is appropriate to use dither. Can anybody explain?
Go to the top of the page
+Quote Post

Posts in this topic
- Nick.C   lossyWAV 1.1.0 released.   Jul 14 2008, 12:34
- - botface   QUOTE (Nick.C @ Jul 14 2008, 12:34) lossy...   Jul 14 2008, 13:47
|- - Nick.C   QUOTE (botface @ Jul 14 2008, 13:47) Well...   Jul 14 2008, 19:32
- - Axon   Yayayay! Thanks a lot Nick. Has there been a ...   Jul 14 2008, 19:55
|- - Nick.C   QUOTE (Axon @ Jul 14 2008, 19:55) Has the...   Jul 14 2008, 20:23
|- - carpman   QUOTE (Axon @ Jul 14 2008, 19:55) Has the...   Jul 14 2008, 20:38
|- - Nick.C   QUOTE (carpman @ Jul 14 2008, 20:38) QUOT...   Jul 14 2008, 20:54
- - Axon   Yeah, I'm mainly curious as to if comparing lo...   Jul 14 2008, 20:50
|- - Synthetic Soul   QUOTE (Axon @ Jul 14 2008, 20:50) Yeah, I...   Jul 16 2008, 14:42
|- - Nick.C   QUOTE (Synthetic Soul @ Jul 16 2008, 14:4...   Jul 16 2008, 16:30
|- - Synthetic Soul   QUOTE (Synthetic Soul @ Jul 16 2008, 14:4...   Jul 18 2008, 11:45
|- - halb27   QUOTE (Synthetic Soul @ Jul 18 2008, 12:4...   Jul 18 2008, 12:33
|- - Nick.C   QUOTE (halb27 @ Jul 18 2008, 12:33) If th...   Jul 18 2008, 18:43
|- - Nick.C   QUOTE (halb27 @ Jul 18 2008, 12:33) If th...   Jul 19 2008, 20:30
|- - halb27   QUOTE (Nick.C @ Jul 19 2008, 21:30) QUOTE...   Jul 19 2008, 21:57
- - sauvage78   thks Nick, now that noise shaping was done in 1.1....   Jul 14 2008, 21:21
|- - Nick.C   QUOTE (sauvage78 @ Jul 14 2008, 21:21) th...   Jul 14 2008, 21:38
- - Agent69   Out of curiousity, and with all due respect to its...   Jul 16 2008, 13:44
|- - 2Bdecided   QUOTE (Agent69 @ Jul 16 2008, 13:44) Out ...   Jul 16 2008, 17:10
|- - Nick.C   QUOTE (2Bdecided @ Jul 16 2008, 17:10) QU...   Jul 16 2008, 19:11
- - carpman   Your question assumes that disk space is never an ...   Jul 16 2008, 14:25
- - Axon   To say nothing about vinyl. Gawd! My needledro...   Jul 16 2008, 19:02
|- - botface   QUOTE (Axon @ Jul 16 2008, 19:02) To say ...   Jul 17 2008, 14:22
- - Brent   I searched the entire 1.1.0 development thread, bu...   Jul 16 2008, 20:36
|- - halb27   QUOTE (Brent @ Jul 16 2008, 21:36) ... ha...   Jul 16 2008, 21:05
|- - Nick.C   QUOTE (halb27 @ Jul 16 2008, 21:05) Thank...   Jul 16 2008, 21:25
|- - Brent   QUOTE (halb27 @ Jul 16 2008, 22:05) QUOTE...   Jul 17 2008, 10:17
|- - halb27   QUOTE (Brent @ Jul 17 2008, 11:17) .. wha...   Jul 17 2008, 10:27
- - Nick.C   That's a good question - I believe that Mardel...   Jul 16 2008, 20:45
- - carpman   QUOTE (Nick.C @ Jul 16 2008, 16:30) QUOTE...   Jul 17 2008, 01:45
- - Axon   Now this is cute. Just for grins I tried lossyWAV ...   Jul 17 2008, 02:59
- - shadowking   i think -standard quality losswav is aiming for tr...   Jul 17 2008, 10:36
|- - 2Bdecided   QUOTE (shadowking @ Jul 17 2008, 10:36) A...   Jul 17 2008, 12:21
- - 2Bdecided   If you take a 44.1kHz file and simply resample it ...   Jul 17 2008, 14:59
|- - botface   QUOTE (2Bdecided @ Jul 17 2008, 14:59) If...   Jul 17 2008, 16:10
- - 2Bdecided   Sorry - I didn't write that very well. What I...   Jul 17 2008, 17:15
|- - botface   QUOTE (2Bdecided @ Jul 17 2008, 17:15) Wh...   Jul 17 2008, 20:12
|- - Dynamic   QUOTE (botface @ Jul 17 2008, 20:12) So, ...   Jul 18 2008, 00:32
|- - 2Bdecided   QUOTE (Dynamic @ Jul 18 2008, 00:32) Ther...   Jul 18 2008, 10:49
- - raygrote   Lossy Wav really sounds very interesting. I've...   Jul 17 2008, 19:50
|- - carpman   QUOTE (raygrote @ Jul 17 2008, 19:50) 1. ...   Jul 17 2008, 20:23
- - Nick.C   ^^ What he said....   Jul 17 2008, 20:32
- - carpman   Don't listen to me, just read the wiki; it...   Jul 17 2008, 20:37
- - raygrote   Thanks for info. It still doesn't work with Fo...   Jul 17 2008, 21:38
|- - halb27   QUOTE (raygrote @ Jul 17 2008, 22:38) ......   Jul 17 2008, 23:02
- - carpman   QUOTE (raygrote @ Jul 17 2008, 21:38) I s...   Jul 17 2008, 21:47
- - sauvage78   -o%d is ok, --stdout| e: maybe is not ... try --st...   Jul 17 2008, 23:59
- - raygrote   I tried all suggestions, nothing is working. I...   Jul 18 2008, 00:49
|- - Nick.C   QUOTE (raygrote @ Jul 18 2008, 00:49) I t...   Jul 18 2008, 08:23
|- - botface   QUOTE (raygrote @ Jul 18 2008, 00:49) I t...   Jul 18 2008, 09:06
- - smok3   how would a piped cmd look for win? (flac to lossy...   Jul 19 2008, 22:40
|- - Nick.C   QUOTE (smok3 @ Jul 19 2008, 22:40) how wo...   Jul 19 2008, 22:45
- - smok3   cool, tnx, what makes you think it will be easie...   Jul 20 2008, 21:05
|- - Nick.C   QUOTE (smok3 @ Jul 20 2008, 21:05) cool, ...   Jul 20 2008, 21:22
- - smok3   true, somehow i have this weird obsession to const...   Jul 20 2008, 21:55
- - sauvage78   hi, today I tried to ABX lossywav 1.1.0 with the G...   Jul 22 2008, 09:24
|- - Nick.C   QUOTE (sauvage78 @ Jul 22 2008, 09:24) .....   Jul 25 2008, 17:47
- - Hancoque   I have three questions: 1. Is noise shaping only ...   Jul 25 2008, 03:36
|- - Nick.C   QUOTE (Hancoque @ Jul 25 2008, 03:36) I h...   Jul 25 2008, 19:09
|- - Dynamic   QUOTE (Nick.C @ Jul 25 2008, 19:09) 2) Pe...   Jul 25 2008, 22:28
- - Neasden   lossyWAV is very interesting! Is it like... ...   Jul 25 2008, 04:00
|- - Synthetic Soul   QUOTE (Neasden @ Jul 25 2008, 04:00) loss...   Jul 25 2008, 09:09
- - Hancoque   If I disable noise shaping, I should enable dither...   Jul 26 2008, 12:17
|- - Nick.C   QUOTE (Hancoque @ Jul 26 2008, 12:17) If ...   Jul 26 2008, 12:46
|- - Nick.C   QUOTE (Hancoque @ Jul 26 2008, 12:17) Wha...   Jul 26 2008, 19:50
- - Hancoque   So you think that noise shaping should also be use...   Jul 26 2008, 13:02
|- - Nick.C   QUOTE (Hancoque @ Jul 26 2008, 13:02) So ...   Jul 26 2008, 14:48
- - Hancoque   I created four test samples containing white noise...   Jul 26 2008, 19:56
|- - Nick.C   QUOTE (Hancoque @ Jul 26 2008, 19:56) I c...   Jul 26 2008, 20:19
- - 2Bdecided   Nick, 1. The FFT size should vary with sample rat...   Jul 28 2008, 16:28
|- - Nick.C   QUOTE (2Bdecided @ Jul 28 2008, 16:28) Ni...   Jul 28 2008, 20:14
|- - Hancoque   QUOTE (Nick.C @ Jul 28 2008, 21:14) Basic...   Aug 3 2008, 02:33
||- - Nick.C   QUOTE (Hancoque @ Aug 3 2008, 02:33) Do y...   Aug 3 2008, 08:45
||- - botface   QUOTE [*]reference threshold constants for rectang...   Aug 3 2008, 08:51
||- - Hancoque   QUOTE (Nick.C @ Aug 3 2008, 09:45) I was ...   Aug 3 2008, 11:59
||- - Nick.C   QUOTE (Hancoque @ Aug 3 2008, 11:59) Is t...   Aug 3 2008, 22:13
|- - Hancoque   I don't plan to use dithering either. I was ju...   Aug 5 2008, 00:29
- - Hancoque   Is it intended that the dithering noise is also sh...   Aug 4 2008, 03:07
|- - Nick.C   QUOTE (Hancoque @ Aug 4 2008, 03:07) Is i...   Aug 4 2008, 07:24
- - Hancoque   I'm using the current version 1.1.0b. I don...   Aug 4 2008, 11:58
|- - Nick.C   QUOTE (Hancoque @ Aug 4 2008, 11:58) I...   Aug 4 2008, 12:36
- - 2Bdecided   Of course the dither should/will be noise shaped. ...   Aug 4 2008, 13:11
|- - Nick.C   QUOTE (2Bdecided @ Aug 4 2008, 13:11) Of ...   Aug 4 2008, 13:33
|- - 2Bdecided   QUOTE (Nick.C @ Aug 4 2008, 13:33) 1) Dit...   Aug 5 2008, 10:30
|- - Nick.C   QUOTE (2Bdecided @ Aug 5 2008, 10:30) But...   Aug 5 2008, 10:57
- - Gow   I started doing some personal listening and file s...   Aug 5 2008, 03:23
- - smok3   continued, about bat files and tagging, this oneli...   Aug 7 2008, 09:18
|- - Nick.C   QUOTE (smok3 @ Aug 7 2008, 09:18) continu...   Aug 7 2008, 10:12
- - smok3   QUOTE You could put both lines on one line with a ...   Aug 7 2008, 13:41
|- - Nick.C   QUOTE (smok3 @ Aug 7 2008, 13:41) QUOTE Y...   Aug 7 2008, 13:53
- - Synthetic Soul   One minor benefit: As you are using && (a...   Aug 7 2008, 14:19
- - smok3   fixed the post - 'downgraded' twoliner to ...   Aug 7 2008, 15:04
- - Hanky   Nice batch file. But if the specified input file d...   Aug 7 2008, 15:16
|- - Nick.C   QUOTE (Hanky @ Aug 7 2008, 15:16) Nice ba...   Aug 7 2008, 15:48
- - Hanky   Thanks Nick.C, that fixed the error One more sm...   Aug 7 2008, 15:53
|- - Nick.C   QUOTE (Hanky @ Aug 7 2008, 15:53) Thanks ...   Aug 7 2008, 20:03
- - Hanky   That one works great when you pass one or more fi...   Aug 7 2008, 20:33
|- - Nick.C   QUOTE (Hanky @ Aug 7 2008, 20:33) That on...   Aug 7 2008, 20:45
- - smok3   my usual approach is to do one batch that handles ...   Aug 7 2008, 20:43
- - sauvage78   Quote: Nick.C "My intention is to understand ...   Aug 17 2008, 06:49
2 Pages V   1 2 >


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 23rd November 2014 - 12:07