view README.txt @ 28:69ee50c19c0c tip

Add decimate-b
author Chris Cannam
date Tue, 22 Oct 2013 08:59:42 +0100
parents ece2031120c9
children
line wrap: on
line source

Decimation
==========

The aim of this little project is to compare a few different methods
of signal decimation for relative speed and quality. "Decimation"
refers here to downsampling a signal by a power-of-two factor.

The principle is to use a low-pass filter to reduce the bandwidth of
the signal to below the Nyquist frequency at the target sample rate
(i.e. with the maximum frequency content being below the original rate
divided by twice N, for a decimation factor N) and then to pick every
Nth sample.

This is simple enough, but we have a few different implementations
available with different quality and performance tradeoffs. Here we
compare:

 * "decimate": the Decimator implementation in the qm-dsp library,
   which uses an 8-tap IIR lowpass filter;

 * "resample_hq", "resample_mq", "resample_lq": the Resampler
   implementation in the qm-dsp library, which uses a lengthy
   Kaiser-windowed sinc filter, at three different quality settings;
   
 * "src": the sndfile-resample program which uses libsamplerate, a
   well trusted resampler also using a Kaiser-windowed sinc
   implementation, at its default quality setting;

 * "zoh": the sndfile-resample zero-order hold resampler, which just
   takes every Nth sample without any filtering, serving as a
   baseline.

Run "make" (caution: only tested on Linux with GNU make and bash) to
build and run the tests.

Author: Chris Cannam (cannam@all-day-breakfast.com)