SoundTouch音频处理库的使用异常简单,经过简单的编译之后,设置编译环境,以vc为例
,直接在include包含SoundTouch目录下的include路径,接着在lib添加SoundTouch目录下
的lib路径,然后在代码的头文件中添加头文件以及引用的库。如下:根据_DEBUG这个宏,
我们可以进行一些编译预处理,假如是以DEBUG编译就采用debug库,其他的话就采用
release库。他们的区别就是文件名后面是否多了一个“D”。
#include <SoundTouch.h>
#ifdef _DEBUG
#pragma comment(lib, "SoundTouchD.lib")
#else
#pragma comment(lib, "SoundTouch.lib")
#endif
当然你也可以直接在vc的项目工程中直接添加,某些人比较喜欢如此。
最重要的一点还要声明一个命名空间,至于原因,和SoundTouch这个库的声明定义有关,
以下在分析的时候会提到。
using namespace soundtouch
然后就可以直接在自己的代码中定义一个类变量SoundTouch m_SoundTouch;
SoundTouch 类的声明包含在SoundTouch.h和SoundTouch.cpp之中,由FIFOProcessor类直
接派生,而FIFOProcessor类又直接从基类FIFOSamplePipe派生。同时声明SoundTouch这个
类包含在命名空间 soundtouch,这就是为什么我们使用这个库的时候需要声明命名空间的
主要原因。感觉有点多余。且仅仅定义了一些常量,诸如版本号,版本ID号等等,这两个
父类都包含在FIFOSamplePipe.h和FIFOSamplePipe.cpp文件中。
不管什么库,如果要使用的话,一般的流程都是先定义然后进行一些必要的初始化,
SoundTouch(以下简称ST)也不例外。ST的初始化也和他的编译一样异常的简单,具体可以
参考他的例子SoundStretch来实现,也可以参考源代码中有关SoundTouch这个类的声明,
现在只关心我们会用到的那部分,可以看到在private中定义了另外两个类指针
RateTransposer*,TDStretch*;
RateTransposer从FIFOProcessor派生,而FIFOProcessor又直接从基类FIFOSamplePipe派
生,TDStretch和RateTranspose