IPB

Welcome Guest ( Log In | Register )

lossyWAV 1.3.0 Delphi to C++ Translation Thread, Added noise linear PCM bitdepth reduction method.
Nick.C
post Aug 22 2012, 19:27
Post #1


lossyWAV Developer


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



And he's off!

Tycho has kindly started the translation of lossyWAV from Delphi to C++.

I'll need to learn it to be able to contribute meaningfully....

Changelog:

lossyWAV beta 1.3.0m 25/03/2013
  • experimental parameter --feedback introduced to modify bit removal process to include an added noise check. Seems to work well in conjunction with "--maxclips 0" or "--maxclips 1" at lower quality settings.
lossyWAV beta 1.3.0m 25/03/2013
  • Removed experimental new parameter --noisebtr.
  • --interp-curve reinstated.
  • experimental parameter --altfilter introduced to modify adaptive noise shaping method.
lossyWAV beta 1.3.0k3 08/03/2013
  • Introduction of experimental new parameter --noisebtr which applies a new method of detemining bits to remove. Well, I say new - SebastianG did point me in this direction *quite* some time ago. Basically, the creation of the noise shaping filter for each channel outputs a numerical value that I have finally used to determine the number of bits to remove from that codec-block channel. It even works on (non-clipping) tonal samples. It should be noted that this is a complete departure from the original method - no searching for the lowest signal in the FFT output bins. Limited tuning so far - however the presets should give approximately the same resultant FLAC output bitrate from --portable up to --insane. Below --portable, I have made the quality settings more aggressive and --extraportable results in a FLAC output bitrate of approximately 283kbit/s. This is quite a drop from the 308 to 311kbit/s previously. If anyone is prepared to spend the time on some testing, that would be very much appreciated. I think that --extraportable is a bit *too* aggressive at the moment, but that is more of a feeling than anything else.
  • --interp-curve removed at this time.
  • beta 1.3.0k2 issued due to omission of --noisebtr from text output parameter list (used in FACT chunk and log file).
  • beta 1.3.0k3 issued due to last minute fix for bits-per-sample not equal to 16.
lossyWAV beta 1.3.0j 08/02/2013
  • Further experimental modification to the adaptive noise shaping routine, backed off a little but now works well with >96kHz samplerate
lossyWAV beta 1.3.0i 30/01/2013
  • Further experimental modification to the adaptive noise shaping routine. NB: Testing has shown that this does not work well with >96kHz samplerate!!.
  • Bug-fix: now processes >16-bit properly - unexpected integer overflow discovered where floating point was thought to be used.
lossyWAV beta 1.3.0h 23/01/2013
  • Further experimental modification to the adaptive noise shaping routine. FLAC encode (-5 -b 512) from "-q X -i" results in 302kbit/s (compared to 309 kbit/s for vanilla --extraportable).
lossyWAV beta 1.3.0g 18/01/2013
  • Experimental modification to the adaptive noise shaping routine, new parameter -i, --interp-curve; adds optional cubic curve interpolation in lieu of linear interpolation when determining target spectral shape for each noise shaping filter. When encoded in FLAC (-5 -b 512) using the --extraportable preset, my 10 album test set results in 304kbit/s (compared to 309 kbit/s for vanilla --extraportable).
lossyWAV beta 1.3.0f 26/10/2012
  • First attempt at FFMPEG compatibility;
lossyWAV beta 1.3.0e 24/09/2012
  • More rounding issues found and amended;
  • Output is hopefully bit identical with reference output (2nd attempt....);
lossyWAV beta 1.3.0d 18/09/2012
  • Bit removal chain error identified: C++ inherently rounds 0.5 differently from Delphi, Delphi uses Banker's rounding (round to even);
  • Banker's rounding implemented;
  • Output is now bit identical with reference output (caveat: from testing so far). [edit] Found not to be at --portable. Bug hunting continues.... [/edit]
lossyWAV beta 1.3.0c 15/09/2012
  • Piped I/O implemented - please report problems;
  • Most bugs in bit-removal chain removed - output not yet bit identical;
  • Internal FFT routines optimised.


This post has been edited by Nick.C: Mar 30 2013, 15:37
Attached File(s)
Attached File  lossyWAV_beta_1.3.0n.zip ( 337K ) Number of downloads: 62
 


--------------------
lossyWAV -q X -i | FLAC -8 ~= 295kbps
SGS III (Rooted) + 64GB
Go to the top of the page
+Quote Post
 
Start new topic
Replies
Jan7887
post Nov 29 2012, 05:07
Post #2





Group: Members
Posts: 3
Joined: 29-November 12
From: Netherlands
Member No.: 104833



Hello everybody,

I am very new at this forum but I'm very interested in lossywav.
I'd like to mention from a general scientific view that audio compression (lossy/lossless) is a very mind expanding subject. Just the fact that people with the right tools, insight and with help of math/calculus can accomplish such things.

I would like to thank the author Nick.c and all other people contributing in this thread for making this possible.
Certainly from my point of view it is a great accomplishment to be able to shrink to smaller audio files while trying to stay as close as possible to the original.
Thank you very much for creating such a piece of software and please, if you have time and resources, keep up the good work.
I understand that Tycho has been a great contributor or fellow author with the C / C++ version.

I'm still using the Delphi 1.3.0 version, but as I understand the C++ version will have some speed improvements ?

I do have another question about the block size of FLAC. Is the block size of 512 the most optimized size ? Is it possible to use a blocksize of 256 with the extraportable setting in Lossywav or would this be too restricting to let flac store the audio in a correct manner ?

Anyway, thanks again and I will follow the development and this thread of course.
Go to the top of the page
+Quote Post

Posts in this topic
- Nick.C   lossyWAV 1.3.0 Delphi to C++ Translation Thread   Aug 22 2012, 19:27
- - [JAZ]   Hi Tycho. That sounds nice. Remember that there a...   Aug 22 2012, 19:55
- - Kohlrabi   Is the port done publicly, like on github or simil...   Aug 22 2012, 20:48
- - tycho   JAZ, Thanks, I was aware of the C# translation of ...   Aug 22 2012, 23:11
- - Nick.C   Hi Tycho, How are you getting on? Impatient Inqui...   Aug 25 2012, 19:55
- - tycho   It's progressing quite well. Many of the file...   Aug 25 2012, 23:36
- - lvqcl   CODEfunction ArcTan_Complex(const X: tDCom...   Aug 25 2012, 23:46
- - Nick.C   Apologies - you've found some of the "dir...   Aug 26 2012, 21:40
- - Atak_Snajpera   Once we have C++ version can we expect nice speed ...   Aug 28 2012, 11:55
- - tycho   I haven't studied enough how the data is proce...   Aug 28 2012, 18:22
- - Nick.C   A simple parallelism would be to process each chan...   Aug 28 2012, 19:01
|- - Atak_Snajpera   QUOTE (Nick.C @ Aug 28 2012, 20:01) A sim...   Aug 28 2012, 20:35
- - Nick.C   Another would be to have the FFT analyses run in p...   Aug 28 2012, 20:49
- - Atak_Snajpera   I have noticed that original LossyWav 1.3 does not...   Aug 29 2012, 14:18
- - Nick.C   A specification compliant WAV file can be no large...   Aug 29 2012, 17:49
- - Atak_Snajpera   Without --ignorelength switch lossyWav is useless ...   Aug 29 2012, 18:40
|- - Nick.C   You could split the soundtrack into chapters, proc...   Aug 29 2012, 22:30
- - Nick.C   Tycho, Are there any specific compiler options th...   Aug 30 2012, 12:44
- - tycho   Nick, Good to hear you're progressing with c++...   Aug 30 2012, 23:31
- - Nick.C   Updated executable later tonight - huge thanks to ...   Sep 7 2012, 19:05
- - Atak_Snajpera   what is still missing in current c version vs orig...   Sep 7 2012, 20:36
- - Nick.C   A bit of accuracy - there's a bug somewhere in...   Sep 7 2012, 20:49
- - Nick.C   lossyWAV beta 1.3.0b attached. Superseded. Chan...   Sep 7 2012, 21:01
|- - Atak_Snajpera   QUOTE (Nick.C @ Sep 7 2012, 21:01) lossyW...   Sep 7 2012, 21:29
- - mudlord   Is there any reason for custom FFT? Why not someth...   Sep 8 2012, 01:37
|- - mezenga   QUOTE (mudlord @ Sep 7 2012, 16:37) Is th...   Sep 8 2012, 04:32
- - Nick.C   I'll have a look at KissFFT - it may be faster...   Sep 8 2012, 13:20
- - lvqcl   There's also PFFFT library: https://bitbucket....   Sep 8 2012, 13:23
- - Nick.C   I know that single precision would be faster but a...   Sep 8 2012, 13:28
- - lvqcl   SoX uses fft4g.c from Ooura 1D FFT   Sep 8 2012, 13:55
- - Destroid   Being unaware of KissFFT, I did a brief overview a...   Sep 9 2012, 10:50
|- - mezenga   QUOTE (Destroid @ Sep 9 2012, 01:50) - FF...   Sep 9 2012, 15:59
- - Nick.C   The C++ executable is *much* bigger than the Delph...   Sep 9 2012, 19:06
- - tycho   Even though much of the point of translating to C+...   Sep 9 2012, 22:24
- - Nick.C   Thanks for those Tycho. I've started on piped...   Sep 10 2012, 21:38
- - Nick.C   Piped I/O is now in testing phase - I processed my...   Sep 12 2012, 18:39
- - Atak_Snajpera   have you decided yet what multithreading method wi...   Sep 13 2012, 18:37
- - Nick.C   I have not started on multi-threading yet. I will ...   Sep 13 2012, 19:19
- - Atak_Snajpera   i keep asking about ignore chunk size switch becau...   Sep 13 2012, 20:03
- - Nick.C   Ah! Now it makes sense to me. In that case, I ...   Sep 13 2012, 21:07
- - Atak_Snajpera   great and thank you!   Sep 13 2012, 21:30
- - Nick.C   lossyWAV beta 1.3.0c attached to post #1 in this t...   Sep 15 2012, 12:00
- - Atak_Snajpera   Speed comparison Q6600@3Ghz All read/write done on...   Sep 15 2012, 18:36
- - Nick.C   That's certainly encouraging !   Sep 15 2012, 18:44
- - Atak_Snajpera   Ability to process channels independently each in ...   Sep 15 2012, 18:46
- - [JAZ]   I can confirm that higher speed will be possible: ...   Sep 15 2012, 19:28
- - Nick.C   lossyWAV beta 1.3.0d attached to post #1 in this t...   Sep 18 2012, 18:56
|- - mezenga   QUOTE (Nick.C @ Sep 18 2012, 09:56) lossy...   Sep 19 2012, 17:32
|- - Nick.C   QUOTE (mezenga @ Sep 19 2012, 17:32) - po...   Sep 20 2012, 19:57
- - Nick.C   .... ok. Thanks for the testing - I'll go bug ...   Sep 19 2012, 17:39
- - punkrockdude   I really look forward to try this out on Linux one...   Sep 19 2012, 23:16
- - bandpass   QUOTE (mezenga @ Sep 19 2012, 17:32) Test...   Sep 20 2012, 07:37
- - Nick.C   I have received samples that should allow me to de...   Sep 23 2012, 20:11
- - Nick.C   lossyWAV beta 1.3.0e attached to post #1 in this t...   Sep 24 2012, 20:27
|- - mezenga   QUOTE (Nick.C @ Sep 24 2012, 11:27) lossy...   Sep 24 2012, 23:14
|- - Nick.C   Thanks for the corroborative testing. I have been ...   Sep 26 2012, 19:57
- - Atak_Snajpera   why delphi version is faster than c version? on ...   Sep 26 2012, 20:54
- - Nick.C   The Delphi version (i.e. the Delphi version with s...   Sep 26 2012, 21:08
- - Atak_Snajpera   single integer unit in amd fx cpus is really slow ...   Sep 26 2012, 21:28
- - Atak_Snajpera   any news about current progress?   Oct 17 2012, 20:48
- - Nick.C   I've been working on speeding up the code most...   Oct 17 2012, 21:07
- - Atak_Snajpera   unfortunatelly ripbot264 is just a gui for other t...   Oct 18 2012, 09:35
- - Nick.C   I'll work on ffmpeg compatibility. Multi thre...   Oct 18 2012, 17:46
- - Nick.C   lossyWAV beta 1.3.0f attached to post #1 in this t...   Oct 26 2012, 20:25
- - Atak_Snajpera   have you figured out how to accept pipe output fro...   Nov 17 2012, 16:30
- - Nick.C   I will try it out and see where I get to. Sorry f...   Nov 17 2012, 19:08
|- - Atak_Snajpera   great! don't forget also about broken prog...   Nov 17 2012, 21:33
- - Jan7887   Hello everybody, I am very new at this forum but...   Nov 29 2012, 05:07
- - Dynamic   If you look back at the 1.0 thread (find it via th...   Nov 29 2012, 14:07
- - Nick.C   Hi Jan7887, You've firstly got to thank 2Bdec...   Nov 29 2012, 20:38
- - Jan7887   Thank you Dynamic and Nick.C for the fast response...   Nov 29 2012, 23:56
- - SebastianG   QUOTE (Nick.C @ Aug 22 2012, 20:27) Tycho...   Nov 30 2012, 14:27
- - Nick.C   Hi Sebastian, I was kick-started into learning C...   Nov 30 2012, 20:47
- - Jan7887   @SebastianG Thank you very much for all your wor...   Dec 1 2012, 01:42
- - Nick.C   Opus is very good indeed. If I was looking for ver...   Dec 1 2012, 10:38
- - Nick.C   Got sidetracked again - I'm going to add an op...   Dec 16 2012, 23:11
- - Atak_Snajpera   any progress on lossywav?   Jan 3 2013, 16:44
- - Nick.C   Still working on it, still distracted by the Elite...   Jan 3 2013, 23:28
- - FreaqyFrequency   I've been experimenting with various compressi...   Jan 7 2013, 18:17
- - Nick.C   lossyWAV beta 1.3.0g attached to post #1 in this t...   Jan 18 2013, 21:26
|- - FreaqyFrequency   QUOTE (Nick.C @ Jan 18 2013, 15:26) lossy...   Jan 20 2013, 08:25
|- - Nick.C   QUOTE (FreaqyFrequency @ Jan 20 2013, 07...   Jan 20 2013, 18:00
- - Nick.C   I did a bit of testing with my 55 problem sample s...   Jan 20 2013, 22:44
- - Nick.C   lossyWAV beta 1.3.0h attached to post #1 in this t...   Jan 23 2013, 22:19
- - Nick.C   lossyWAV beta 1.3.0i attached to post #1 in this t...   Jan 30 2013, 23:20
- - Nick.C   lossyWAV beta 1.3.0j attached to post #1 in this t...   Feb 8 2013, 22:31
- - Cynic   What is the penalty (if any) for using the -i swit...   Feb 19 2013, 23:31
- - Nick.C   Hi Cynic, The penalty is simply that the noise sh...   Feb 20 2013, 22:03
- - Banned   Out of curiousity, why does the distribution inclu...   Mar 2 2013, 21:20
- - Nick.C   When v1.40 is released, the source will be as well...   Mar 3 2013, 17:33
- - Nick.C   lossyWAV beta 1.3.0k attached to post #1 in this t...   Mar 8 2013, 21:27
- - Nick.C   lossyWAV beta 1.3.0m attached to post #1 in this t...   Mar 25 2013, 23:04
- - Nick.C   lossyWAV beta 1.3.0n attached to post #1 in this t...   Mar 30 2013, 15:14
- - skamp   Thanks for your work. I'm looking forward to 1...   Mar 30 2013, 15:31


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: 19th May 2013 - 17:44