lossyWAV 1.1.0 released., Added noise WAV bit reduction method. |
lossyWAV 1.1.0 released., Added noise WAV bit reduction method. |
Jul 14 2008, 12:34
Post
#1
|
|
![]() lossyWAV Developer Group: Developer Posts: 1722 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. Link to the hydrogenaudio wiki articleThis 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. Suggested foobar2000 converter setup: lossyFLAC: CODE Encoder: c:\windows\system32\cmd.exe lossyTAK: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 CODE Encoder: c:\windows\system32\cmd.exe lossyWV: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 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)
lossyWAV_1.1.0c.zip ( 75.56K )
Number of downloads: 789
lossyWAV_Source_20090430_2145_1.1.0c.zip ( 201.82K )
Number of downloads: 276-------------------- lossyWAV -q X | FLAC -8 ~= 308kbps
SGS III (Rooted) + 64GB |
|
|
|
![]() |
Jul 28 2008, 16:28
Post
#2
|
|
![]() ReplayGain developer Group: Developer Posts: 4588 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! 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. |
|
|
|
Jul 28 2008, 20:14
Post
#3
|
|
![]() lossyWAV Developer Group: Developer Posts: 1722 Joined: 11-April 07 From: Wherever here is Member No.: 42400 |
Nick, 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]1. The FFT size should vary with sample rate, though good luck making that happen easily with all the optimisation you've done! 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. 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 | FLAC -8 ~= 308kbps
SGS III (Rooted) + 64GB |
|
|
|
Aug 3 2008, 02:33
Post
#4
|
|
|
Group: Members Posts: 291 Joined: 27-January 04 From: Germany Member No.: 11530 |
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?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 |
|
|
|
Aug 3 2008, 08:45
Post
#5
|
|
![]() lossyWAV Developer Group: Developer Posts: 1722 Joined: 11-April 07 From: Wherever here is Member No.: 42400 |
Do you refer to lossyWAV in general or to how noise shaping is applied? I was referring to lossyWAV in general as the 64/1024 sample fft lengths are fixed at present.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 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:
-------------------- lossyWAV -q X | FLAC -8 ~= 308kbps
SGS III (Rooted) + 64GB |
|
|
|
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

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![]() ![]() |
|
Lo-Fi Version | Time is now: 23rd May 2013 - 07:20 |