|This page is now only of historical interest. Audacity 2.0.3 to 2.1.0 offered Libsoxr as default resampling library, with both libresample and libsamplerate being compile-time options. |
From 2.1.1 onwards, only libsoxr can be used.
|Resampling is the operation of converting from audio represented at one sample rate to a representation at another sample rate with minimum losses. Libresample is Audacity's implementation of the sinc function resampling algorithm, originally produced by Dominic Mazzoni based on Julius Smith's code at Stanford. The interface is very similar to Erik de Castro Lopo's , or SRC.
Why didn't we just use SRC? Basically it's all down to licensing. SRC and Audacity are both under the GNU (GPL), so there shouldn't be a problem. However, the GPL requires that all the other libraries that an application links against (and so depends on) must also be under compatible licences. If Audacity loads a bunch of non-free, non-open source VST plug-ins, does this break the GPL? We (the Audacity developers) don't think so because they are optional, run-time plug-ins. The who administer the GPL are not terribly clear on the issue, and Erik de Castro Lopo thinks it breaks the GPL.
It's his library, so we don't release versions of Audacity with SRC. However if you are building audacity for Linux, where the chances of using a closed-source binary plug-in are very low, you can configure Audacity to link against an external copy of SRC if you wish.
In principle it's possible to disable both libresample and libsamplerate, however because you then get a version of Audacity with no support for changing sample rates, it's not recommended. For a start, if you open a file created with a sample rate that your soundcard doesn't support, then you won't be able to play it back.
It's worth noting that although things called libresample crop up in various distributions and other packages (e.g. Asterisk), none of them are the same as what Audacity is using, although they all share common parentage. As a result we (Audacity) don't support or test linking to any of these libraries.