Part 3 of (probably) 3
If you still don't accept the inadequacies of sinc resamplers for
bulk conversions at fixed rates, try this:
Download the file abstraction-1_for_piano.ogg which was posted
a while ago. (I chose it because it's not that big and isn't my file.)
Use oggdec to change it into a WAV file:
$ oggdec abstraction-1_for_piano.ogg -o abstraction-1_for_piano.wav
OggDec 1.0
Decoding "abstraction-1_for_piano.ogg" to "abstraction-
1_for_piano.wav"
[100.0%]
Resample it at the *same rate* which should ideally give you the same
thing back --- a very complicated "cp" or copy command:
$ file abstraction-1_for_piano.wav
abstraction-1_for_piano.wav: RIFF (little-endian) data, WAVE audio,
Microsoft PCM, 16 bit, stereo 44100 Hz
$ sndfile-resample -to 44100 abstraction-1_for_piano.wav abstraction-
1_for_piano_sndfile.wav
Input File : abstraction-1_for_piano.wav
Sample Rate : 44100
Input Frames : 6288384
SRC Ratio : 1.000000
Converter : Best Sinc Interpolator <<< Best!
Output file : abstraction-1_for_piano_sndfile.wav
Sample Rate : 44100
Now diff them:
$ diff abstraction-1_for_piano.wav abstraction-1_for_piano_sndfile.wav
Binary files abstraction-1_for_piano.wav and abstraction-
1_for_piano_sndfile.wav differ
OUCH!!
This file, a very gentle audio file, has been corrupted by sndfile-
resample at its optimum setting, assuming I invoked it correctly.
Audio files which are not so gentle will produce even worse results.
With the very little cursory examination I've done on sndfile-resample,
I've already measured up to 2.5% errors in resampling to the *same rate*.
That's huge.
Something that should be at -90 db or so at 16 bit resolution could be
at -30 db --- who knows what that might cause with further processing.
Ideally, you should get back exactly the same thing.
Here is what should have happened:
$ resample_simple abstraction-1_for_piano.wav 44100 16 abstraction-
1_for_piano_fft.wav 1.0 1.0 1.0
Using pad size: 176400
$ diff abstraction-1_for_piano.wav abstraction-1_for_piano_fft.wav
$
This is not by mere trickery; resampling was done. (The program did
not simply check the original and target sampling rates, then quit,
but instead spent about 20 seconds processing on my machine in double
precision.)
------------------------
When reading about sinc resamplers, you may see some statements about
why a file won't be the same if you resample it to the same rate.
These statements, none of which appear individually to be false, as a
whole misrepresent what can actually be achieved and misrepresent the
true origin of inaccuracy, namely the method itself as it is implemented.
For bulk conversions to constant rates, sinc resamplers will necessarily
be either slow, inaccurate, or both of these because of the way the
method works.
------------------------
*********************************************************************
To be very clear : This is NOT about comparing particular programs
(specifically, I am not claiming that anything I wrote is of production
quality), nor is it about ideal theoretical conditions; this is about
comparing implemented methods and about the widespread misuse of Smith's
algorithm in Linux audio, and probably elsewhere as well. It is a
special-purpose algorithm that is very localized in the time domain.
*********************************************************************
This is also about being skeptical. In audio, it pays to be skeptical,
even in Linux audio where all the source code is available. A lot of
the code is defective, packaged in a way to allow you to install it without
problems. (In other words, the installation procedure works great,
but the actual application is not really useful or misapplied, etc.,
my stuff included.)
Last, but not least, there is an object lesson here in "rolling your
own" rather than expecting other people to do it.
Show replies by date
----- Original Message -----
From: <davidrclark(a)earthlink.net>
To: <linux-audio-user(a)music.columbia.edu>
Sent: Thursday, August 25, 2005 12:55 PM
Subject: Re: [linux-audio-user] Re: Resampling Audio Libraries &
SincResamplers
Part 3 of (probably) 3
If you still don't accept the inadequacies of sinc resamplers
for
bulk conversions at fixed rates, try this:
Download the file abstraction-1_for_piano.ogg which was posted
a while ago. (I chose it because it's not that big and isn't
my file.)
[. . .]
---
I renamed that piece to simply "Abstract 1" a few weeks ago. The
current location for the .ogg version is:
http://www.xscd.com/pub/music/audio/ogg/abstract-1.ogg
Thank you for using one of my pieces in this very--uh,
controversial discussion. ;-)
-Steve D
New Mexico, US
davidrclark(a)earthlink.net wrote:
Part 3 of (probably) 3
David,
I am in the process of writing a rebuttal of your criticisms
of my work. In the process I would like to evaluate your
converter. I have downloaded the file mixster-0.0.1.tgz
from your site but I remain confused about the licensing.
There is a file named COPYING in the above tarball, but
all of the C++ files contain:
// Copyright EXE Consulting 2002, 2003, 2004. All rights reserved.
"All rights reserved" is not GPL compatible.
Can you please clarify the licensing of all files in the
mixster tarball, preferably by removing "All rights
reserved", replacing it with "Released under the terms
of the GNU GPL" and supplying a new tarball.
Erik
--
+-----------------------------------------------------------+
Erik de Castro Lopo nospam(a)mega-nerd.com (Yes it's valid)
+-----------------------------------------------------------+
"... there's something really scary about a language (C++) where
copying state from one object to another is this complicated"
-- Richard Gillam