From Audacity Wiki
Revision as of 17:36, 30 October 2014 by PeterSampson (talk | contribs) (Text replace - "sound card" to "soundcard")
Jump to: navigation, search
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 libsamplerate , or SRC.

Why didn't we just use SRC? Basically it's all down to licensing. SRC and Audacity are both under the GNU General Public License  (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 plugins, does this break the GPL? We (the Audacity developers) don't think so because they are optional, run-time plugins. The Free Software Foundation  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 plugin 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.