IPB

Welcome Guest ( Log In | Register )

lossyWAV 1.3.0 Development Thread, Added noise WAV bitdepth reduction method.
Nick.C
post May 17 2010, 21:47
Post #1


lossyWAV Developer


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



Following the release of lossyWAV 1.2.0, I feel it is (yet again) time to kick off development of the next minor release.

Items currently on the list for inclusion in 1.3.0:
  • [complete] Implementation of SG's adaptive noise shaping method;
  • [v1.4.0] Identification and adaptation of a psy-model to use in conjunction with the new noise shaping method;
  • [deleted] Enable use libfftw3f-3.dll for single precision FFT analyses;
  • [complete] Introduce option to output a spectral "plot" of the processed audio data.
If you have any ideas, requests, suggestions, code optimisations, etc, please post them here.

Link to hydrogenaudio wiki lossyWAV article.

Suggested foobar2000 converter setup:

lossyFLAC:
CODE
Encoder: c:\windows\system32\cmd.exe
Extension: lossy.flac
Parameters: /d /c c:\"program files"\bin\lossywav - --quality standard --silent --stdout|c:\"program files"\bin\flac - -b 512 -5 -f -o%d --ignore-chunk-sizes
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 - --quality 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 - --quality 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.

Change log 1.3.0: 06/08/2011
Introduction of fixed noise shaping using curve based on SebastianG's noise shaping IIR filter previously used in 1.2.0. Parameter -s, --shaping [n] takes optional parameter (0<=n<=1) or is set automatically depending on quality setting;
Code improvements.
Bug hunting.

Change log beta 1.2.3p RC11: 14/06/2011
(Minor) modifications to --adaptive parameter;
Introduction of -W, --width <n> parameter (80<=n<=255) to allow user to select width of certain output options;
Introduction of -H, --histogram parameter to display 64-bin histogram of sample values;
Code improvements.
Bug hunting.

Change log beta 1.2.3o RC10: 16/05/2011
(Minor) modifications to --adaptive parameter.
Removal of fast / lower precision sqrt and log functions - seems to improve adaptive shaping "accuracy".
Bug hunting.
Previous beta versions / release candidates left up to allow side-to-side comparison, however, this is functionally very similar to beta 1.2.3n RC9.

Change log beta 1.2.3n RC9: 13/05/2011
Modifications to --adaptive parameter. Now allows user to disable default gain curve (use nogain) and default frequency warping (using nowarp) after the --adaptive parameter. Filter order still user selectable. Parameter takes multiple sub-parameters.
Bug hunting.

Change log beta 1.2.3m RC8: 11/05/2011
Modifications to adaptive noise shaping method. Now only uses "current" FFT results rather than using historical data as well.
Bug hunting.

Change log beta 1.2.3l RC7: 09/05/2011
(Minor) modifications to adaptive noise shaping method.
Bug hunting.

Change log beta 1.2.3k RC16: 06/05/2011
(Minor) modifications to adaptive noise shaping method.
Bug hunting.
Slight change to the --spread parameter (related to output of codec-block processing and subsequent spreading function(s)) - now indicates whether the static or dynamic maximum-bits-to-remove limits kicked in during processing (i.e. all FFTs for a particular codec block indicated more bits could be removed but bits-removed was limited to static and dynamic limits).

Change log beta 1.2.3j: 04/05/2011
Modifications to adaptive noise shaping method;
Change to --static parameter; maximum bits-to-keep now limited to bits-per-sample - 4.

Change log beta 1.2.3i: 22/04/2011
Modifications to adaptive noise shaping method;
DC offset now removed from audio data (and bit-removed data and correction data, when enabled) prior to analysis - seems to have improved "Furious" sample problem.

Change log beta 1.2.3h: 16/04/2011
Modifications to adaptive noise shaping method: higher sample-rates now treated differently - hopefully now avoiding the suspected phase related distortion encountered with 384kHz samples.

Change log beta 1.2.3g: 12/04/2011
Modifications to adaptive noise shaping method: --warp parameter removed due to complexity of selecting correct value. The value is now frequency dependent to allow for consistency in the portion of the warped spectrum associated with the frequency range of interest (up to 16kHz by default);
Modifications made to handling of sample-rates other than 44.1kHz. I realised that as all the testing has pretty much been carried out at that rate then there may be issues with handling other sample-rates. There were. I think that they're now fixed.

Change log beta 1.2.3f: 24/03/2011
Modifications to adaptive noise shaping method;
Addition of the --static parameter to allow the user to increase the number of (static) minimum-bits-to-keep in the range 7<=n<=16, default=6.

Change log beta 1.2.3e: 16/03/2011
Modifications to adaptive noise shaping method.

Change log beta 1.2.3d RC5: 28/02/2011
Change to parameter limits for -A, --adaptive: now 64<=n<=256;
Change to order of lower quality presets:
  • C, economic, 0.0;
  • P, portable, -2.5;
  • X, extraportable, -5.0.
Code tidy up and optimisation.
This is release candidate #5 for lossyWAV 1.3.0.

Change log beta 1.2.3c RC4: 22/02/2011
Parameter -i, --impulse removed. The shortest FFT (32 samples for 44.1/48kHz input) is now enabled by default for all quality settings, previously for int(q)>0. Can be disabled using --analyses 2 (default number of analyses is now 3).
A change to quality preset selection. Parameter -q, --quality will now accept a numeric value in the range -5 to 10 as before but also a short and long preset name as follows:
  • I, insane, 10.0;
  • E, extreme, 7.5;
  • H, high, 5.0;
  • S, standard, 2.5 [default];
  • P, portable, 0.0;
  • N, intermediate, -2.5;
  • X, extraportable, -5.0.
Code tidy up and optimisation.
This is release candidate #4 for lossyWAV 1.3.0.

Change log beta 1.2.3b RC3: 16/02/2011
--classic and --altpreset quality systems removed;
Fixed noise shaping removed;
Adaptive noise shaping now enabled by default. Use --adaptive OFF to disable. Parameter will still take numeric input to set number of taps for FIR filter used.
Remapping of quality presets as follows:
  • -I, --insane = -q 10.0;
  • -E, --extreme = -q 7.5;
  • -S, --standard = -q 5.0 [default];
  • -R, --reasonable = -q 2.5;
  • -P, --portable = -q 0.0;
  • -e, --economic = -q -2.5;
  • -s, --superportable = -q -5.0.
Code tidy up and optimisation.
This is release candidate #3 for lossyWAV 1.3.0.

Change log beta 1.2.3a RC2: 11/02/2011
(Very) minor changes to the adaptive noise shaping algorithm. Bug-fix to avoid divide-by-zero in levinson-durbin recursion.
Replacement of default internal settings, ranging from -5 to 10. Existing defaults now accessible using --classic parameter.
This is release candidate #2 for lossyWAV 1.3.0.

Change log beta 1.2.2z RC1: 10/01/2011
Minor changes to the adaptive noise shaping algorithm;
This is release candidate #1 for lossyWAV 1.3.0.

Change log beta 1.2.2y: 08/01/2011
Minor changes to the adaptive noise shaping algorithm, now a bit faster.

Change log beta 1.2.2x: 05/01/2011
Minor changes to the adaptive noise shaping algorithm - now takes into account long FFT analysis results for previous codec-block as well as present codec-block; Changes made to curve which modifies shape of desired filter output per codec-block-channel.

Change log beta 1.2.2w: 02/12/2010
Minor changes to the adaptive noise shaping algorithm; default FIR filter size=64;
Bug found in processing of multi-channel audio - also fixed in version 1.2.0 as maintenance release 1.2.0b (see Validated News);
Code tidy up.

Change log beta 1.2.2t: 11/11/2010
Minor changes to the adaptive noise shaping algorithm (max FIR filter size=512);
-X, --sortspread parameter removed;
-F, --fftw parameter removed. libfftw3-3.dll (double precision) used automatically if found;
Code tidy up.

Change log beta 1.2.2s: 08/08/2010
Further changes to the adaptive noise shaping algorithm;

Change log beta 1.2.2r: 26/07/2010
Bug-fixes and minor changes to the adaptive noise shaping algorithm;
Compatibility with libfftw3f-3.dll removed (single precision) to significantly simplify code;
Removal of added dither in bit-removal algorithm when adaptive noise shaping active.

Change log beta 1.2.2q: 29/06/2010
Further changes to the adaptive noise shaping algorithm;
Change to bit-removal algorithm when adaptive noise shaping active - dither introduced.

Change log beta 1.2.2p: 21/06/2010
Further changes to the adaptive noise shaping algorithm.

Change log beta 1.2.2n: 21/06/2010
Further changes to the adaptive noise shaping algorithm. Modification made to the high frequency portion of the desired shape.

Change log beta 1.2.2m: 17/06/2010
Further changes to the adaptive noise shaping algorithm. Now uses the results of both the long and short FFT analyses when determining the desired shape of filter.

Change log beta 1.2.2k: 11/06/2010
Desired shape of filter now changes more gradually per codec-block rather than totally;
Fix to calculation of frequency distribution to allow more accurate comparison of input and output.

Change log beta 1.2.2j: 04/06/2010
Temporary fix to stop spikes in output - attempt #1.

Change log beta 1.2.2i: 03/06/2010
Bug fix in FFT routine selection process.

Change log beta 1.2.2h: 03/06/2010
Bug fix in adaptive noise shaping method.

Change log beta 1.2.2g: 01/06/2010
Modifications made to adaptive noise shaping method.

Change log beta 1.2.2f: 31/05/2010
Modifications made to adaptive noise shaping method. Change in filter behaviour at higher frequencies.

Change log beta 1.2.2e: 31/05/2010
Modifications made to adaptive noise shaping method. Better filter resolution achieved (I think). --adaptive parameter now takes an integer value as the order of the FIR filter. Valid in the range 16<=n<=128, default=32.

Change log beta 1.2.2d: 29/05/2010
Modifications made to adaptive noise shaping method. Better resolution (I think) of the filter - interim beta - still work to do on this.

Change log beta 1.2.2c: 28/05/2010
Modifications made to adaptive noise shaping method. Attempt #1 to fix the low-frequency error.

Change log beta 1.2.2b: 27/05/2010
Modifications made to adaptive noise shaping method. Attempt #1 to fix clicking error.

Change log beta 1.2.2a: 26/05/2010
Further progress made with SG's adaptive noise shaping method. The --adaptive parameter now takes a parameter (in the range -1<n<1) to allow the warping factor to be changed. Error found and fixed in remove_bits routine (for adaptive-shaping).

Change log beta 1.2.1a: 25/05/2010
Further progress made with SG's adaptive noise shaping method. Extremely simplistic psy-model in place. Enable by adding --adaptive to the command line.
Post-analysis of the bit-removed audio data can be performed using the --postanalyse parameter in conjunction with the --freqdist parameter.

Change log pre beta 1.2.1a: 17/05/2010
Code optimisations;
Major part of the implementation of SG's adaptive noise shaping;
Modification of fftw_interface unit and FFT handling routines to allow the use of libfftw3f-3.dll as well as libfftw3-3.dll (-F, --fftw <single/double/off>);
Implementation of the spectral plot (--freqdist) for input and optionally output audio data.


This post has been edited by Nick.C: Aug 6 2011, 22:42
Attached File(s)
Attached File  lossyWAV_1.3.0.zip ( 89.2K ) Number of downloads: 2816
Attached File  lossyWAV_Source_20110806_1.3.0.zip ( 262.59K ) Number of downloads: 752
 


--------------------
lossyWAV -q X -a 4 --feedback 4| FLAC -8 ~= 320kbps
Go to the top of the page
+Quote Post
 
Start new topic
Replies
Enig123
post May 26 2010, 08:57
Post #2





Group: Members
Posts: 208
Joined: 11-April 02
Member No.: 1749



SebastianG,


If I understand correctly, dither with noise shaping is tend to be used as the last step of audio processing chain. How worse it could be if dithered before, like lossyWAV with ANS, or the product of CD, and then dither with noise shaping another time at the end of playback side?

Regards,
Enig123
Go to the top of the page
+Quote Post

Posts in this topic
- Nick.C   lossyWAV 1.3.0 Development Thread   May 17 2010, 21:47
- - 2Bdecided   I'm going to enjoy this thread! Cheers, ...   May 18 2010, 00:09
- - doccolinni   I've been waiting for this thread and finally ...   May 18 2010, 22:26
- - GeSomeone   QUOTE (Nick.C @ May 17 2010, 22:47) Imple...   May 19 2010, 13:19
|- - SebastianG   QUOTE (GeSomeone @ May 19 2010, 13:19) Do...   May 25 2010, 21:16
- - halb27   The lossless codec is especially less efficient if...   May 19 2010, 13:38
- - sauvage78   QUOTE Nice to see you still improving lossyWAV. Th...   May 19 2010, 13:44
- - Nick.C   Right, I've got the guts of SG's adaptive ...   May 22 2010, 13:09
- - doccolinni   I don't know how much you know and how much yo...   May 22 2010, 21:18
- - Nick.C   Following some very constructive help from SG, los...   May 25 2010, 19:59
- - Enig123   SebastianG, If I understand correctly, dither wi...   May 26 2010, 08:57
|- - SebastianG   QUOTE (Enig123 @ May 26 2010, 08:57) If I...   May 26 2010, 19:44
|- - Enig123   QUOTE (SebastianG @ May 27 2010, 02:44) I...   May 27 2010, 03:13
|- - SebastianG   QUOTE (Enig123 @ May 27 2010, 03:13) I wo...   May 27 2010, 09:43
- - Nick.C   lossyWAV beta 1.2.2a attached to post #1 in this t...   May 26 2010, 12:30
- - moozooh   Excellent job, Nick. :) Looking forward to the 1.3...   May 26 2010, 13:19
- - halb27   Average bitrate for my usual test set of various p...   May 26 2010, 21:06
- - halb27   I just did some listening tests. Problems for the...   May 27 2010, 11:15
|- - GeSomeone   QUOTE (halb27 @ May 27 2010, 12:15) Maybe...   May 27 2010, 15:19
- - Nick.C   Thanks for that - I'll get to work on it and s...   May 27 2010, 12:54
- - 2Bdecided   There are clicks (waveform discontinuities) in the...   May 27 2010, 14:58
- - Nick.C   Thanks for the feedback on "clicking", D...   May 27 2010, 18:43
- - halb27   I can confirm the added noise can be described as ...   May 27 2010, 19:13
- - Nick.C   lossyWAV beta 1.2.2b attached to post #1 in this t...   May 27 2010, 21:09
- - doccolinni   QUOTE (Nick.C @ May 17 2010, 22:47) Modif...   May 28 2010, 01:33
- - Nick.C   lossyWAV 1.2.0 makes use of libfftw3-3.dll for dou...   May 28 2010, 06:24
- - 2Bdecided   QUOTE (Nick.C @ May 27 2010, 21:09) lossy...   May 28 2010, 09:38
- - halb27   I just tried 1.2.2.b -Z --adaptive on bibilolo (bi...   May 28 2010, 16:15
- - halb27   I looked at the spectogram of the last 0.5 second ...   May 28 2010, 16:42
- - Nick.C   Thanks again for the fault-finding.... . lossyWAV...   May 28 2010, 18:12
- - halb27   Nick, you must be a wizard being so fast with new ...   May 28 2010, 23:29
- - halb27   I repeated last night's test, now doing it ver...   May 29 2010, 11:35
- - Nick.C   Great news about bibilolo - very satisfying to get...   May 29 2010, 11:40
- - doccolinni   Another interesting sample for testing: - Wheeee....   May 29 2010, 20:41
- - Nick.C   Thanks for the sample - having a bit of computer t...   May 29 2010, 21:10
- - halb27   @doccolinni: Can you tell a bit about at what seco...   May 29 2010, 21:16
|- - doccolinni   QUOTE (halb27 @ May 29 2010, 22:16) @docc...   May 29 2010, 21:22
- - halb27   Yes, it's an interesting sample for looking at...   May 29 2010, 21:27
|- - doccolinni   QUOTE (halb27 @ May 29 2010, 22:27) Yes, ...   May 29 2010, 21:39
- - doccolinni   This is the spectrum of the original. This is the...   May 29 2010, 22:08
|- - doccolinni   Indeed, the new noise looks a lot smoother than th...   May 29 2010, 23:12
- - Nick.C   lossyWAV beta 1.2.2d attached to post #1 in this t...   May 29 2010, 22:40
|- - doccolinni   QUOTE (Nick.C @ May 29 2010, 23:40) wheee...   May 29 2010, 22:42
- - Nick.C   Thanks - as I said in the change log, this is an i...   May 29 2010, 22:51
- - halb27   My listening room wasn't quiet today so I coul...   May 30 2010, 22:33
- - halb27   I repeated the test with furious using 1.2.2.d -Z ...   May 31 2010, 07:16
- - Nick.C   lossyWAV beta 1.2.2e attached to post #1 in this t...   May 31 2010, 12:55
- - halb27   I'm sorry to say that with this version I can ...   May 31 2010, 14:21
|- - SebastianG   I just want to comment on the "noise images...   May 31 2010, 16:13
- - Nick.C   lossyWAV beta 1.2.2f attached to post #1 in this t...   May 31 2010, 22:31
- - halb27   Bad news again, sorry. Inspite of the increased b...   May 31 2010, 22:51
- - doccolinni   I haven't done any listening tests, but I can ...   May 31 2010, 23:01
- - shadowking   I will try and test things later this week. If I r...   Jun 1 2010, 01:35
- - aand   Hi! I can't get lossyWAV to work with FLAC...   Jun 1 2010, 03:20
|- - Bonzaii   QUOTE (aand @ May 31 2010, 19:20) ...cmd....   Jun 1 2010, 04:44
|- - Nick.C   QUOTE (aand @ Jun 1 2010, 03:20) Command ...   Jun 1 2010, 06:12
- - halb27   Though there's certainly room for improvement ...   Jun 1 2010, 08:24
- - Nick.C   lossyWAV beta 1.2.2g attached to post #1 in this t...   Jun 1 2010, 12:26
- - halb27   I tried furious with 1.2.2.g -Z --adaptive. Hiss i...   Jun 1 2010, 15:26
- - aand   CODEcmd.exe /d /c G:\Kits\"@ Co...   Jun 1 2010, 17:41
- - Nick.C   @halb27: Would you have time to try different filt...   Jun 1 2010, 17:54
|- - halb27   QUOTE (Nick.C @ Jun 1 2010, 18:54) @halb2...   Jun 2 2010, 09:52
- - aand   Nope. QUOTE 1 out of 1 tracks converted with maj...   Jun 1 2010, 18:35
- - carpman   General LossyWAV setup help should probably have i...   Jun 1 2010, 19:33
- - doccolinni   I don't know if I did something wrong or you d...   Jun 1 2010, 23:57
|- - Nick.C   QUOTE (doccolinni @ Jun 1 2010, 23:57) I ...   Jun 2 2010, 21:28
|- - doccolinni   QUOTE (Nick.C @ Jun 2 2010, 22:28) QUOTE ...   Jun 2 2010, 22:46
- - Nick.C   .... but the .lwcdf.wav file is the difference bet...   Jun 2 2010, 23:06
|- - doccolinni   QUOTE (Nick.C @ Jun 3 2010, 00:06) .... b...   Jun 2 2010, 23:10
|- - Nick.C   QUOTE (doccolinni @ Jun 2 2010, 23:10) Do...   Jun 3 2010, 08:12
- - Bonzaii   Is there any way you can expand the Adapative para...   Jun 3 2010, 03:49
- - halb27   I have libfftw3-3.dll and libfftw3l-3.dll in the s...   Jun 3 2010, 08:32
- - doccolinni   QUOTE (Nick.C @ Jun 3 2010, 09:12) QUOTE ...   Jun 3 2010, 08:49
- - Nick.C   The DLL should be in a directory which is on the p...   Jun 3 2010, 08:55
- - doccolinni   Ok, this is completely confusing me now. libfftw3...   Jun 3 2010, 08:56
- - Nick.C   At the command prompt enter "path" as a ...   Jun 3 2010, 09:02
|- - doccolinni   QUOTE (Nick.C @ Jun 3 2010, 10:02) At the...   Jun 3 2010, 09:05
|- - robert   QUOTE (doccolinni @ Jun 3 2010, 10:05) Ne...   Jun 3 2010, 09:45
|- - doccolinni   QUOTE (robert @ Jun 3 2010, 10:45) QUOTE ...   Jun 3 2010, 09:49
|- - robert   QUOTE (doccolinni @ Jun 3 2010, 10:49) Di...   Jun 3 2010, 09:52
|- - doccolinni   QUOTE (robert @ Jun 3 2010, 10:52) QUOTE ...   Jun 3 2010, 10:05
- - halb27   I tried and found the [I] in the result line. I u...   Jun 3 2010, 09:08
|- - doccolinni   QUOTE (halb27 @ Jun 3 2010, 10:08) Adding...   Jun 3 2010, 09:10
- - Nick.C   Hmmmm.... Baffled now - I have my copy of the DLLs...   Jun 3 2010, 09:14
|- - doccolinni   QUOTE (Nick.C @ Jun 3 2010, 10:14) Hmmmm....   Jun 3 2010, 09:17
|- - robert   QUOTE (Nick.C @ Jun 3 2010, 10:14) Hmmmm....   Jun 3 2010, 11:01
- - doccolinni   Uh... I'm totally out of ideas... Maybe it...   Jun 3 2010, 09:23
- - halb27   I am using 32 bit-Windows (XP).   Jun 3 2010, 09:45
- - Nick.C   Robert, Thanks for that confirmation - I'll g...   Jun 3 2010, 12:27
|- - robert   Nick, calling lossywav twice with the same input f...   Jun 3 2010, 13:04
- - lvqcl   LossyWAV uses libfftw3-3.dll only if both libfftw3...   Jun 3 2010, 15:54
|- - robert   QUOTE (lvqcl @ Jun 3 2010, 16:54) LossyWA...   Jun 3 2010, 16:11
- - Nick.C   When lossyWAV starts, it checks for the existence ...   Jun 3 2010, 19:18
|- - robert   QUOTE (Nick.C @ Jun 3 2010, 20:18) When l...   Jun 3 2010, 19:39
- - lvqcl   lossyWAV uses internal routines if only libfftw3-3...   Jun 3 2010, 19:25
|- - doccolinni   QUOTE (lvqcl @ Jun 3 2010, 20:25) Only wh...   Jun 3 2010, 21:46
- - Nick.C   Thanks again - something wrong, I think - I'll...   Jun 3 2010, 19:42
- - doccolinni   There's something strange about the noise adde...   Jun 3 2010, 21:54
- - Nick.C   I think that I have cracked the logic for use of w...   Jun 3 2010, 21:58
- - doccolinni   A distinct click can easily be heard at 5.43 secon...   Jun 3 2010, 22:12
4 Pages V   1 2 3 > » 


Closed 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: 21st April 2014 - 13:55