接上文.
Tremolo音效比较酷的音效,听上去感觉是使用电子乐器演示的。
从感官上将Tremolo(颤音)音效是重击一个音符然后快速提高,减小音量
下面是颤音音效的几个参数:
1.深度控制:用来控制音量增减速度
2.阈值数据:说明控制音量的频率值
3.波形
其基本数学表达式为:
data = data * (1.0 + depth * sin(k* rate * index));
简易的c++代码如下:
class Tremolo : public AudioEffect
{
public:
static double def_depth;
static double def_rate;
double depth;
double rate;
double k;
Tremole();
std::vector<float> Filter(const std::vector<float>& _data)
{
data = _data;
for(int i = 0; i < data.size();i++)
data[i] *= (1.0 + depth * sin(2.0 * PI * rate * i / k);
return data;
}
};
当然有java版本的化应该是如下这个样子:
public class Tremolo extends AudioEffect
{
private static double final def_depth = ;
private static double final def_rate = ;
private double depth = def_depth;
private double rate = def_rate;
Tremolo()
{
}
double[] Filter(double[] _data)
{
int len = _data.length;
double[] ret = new double[len];
for(int i = 0;i<len;i++)
ret[i] = _data[i]*(1+depth*Math.Sin(2*Math.PI*rate*i/k));
return ret;
}
}
基本的源码就这个样子
不过有一个问题就是播放音效有少许杂音-不过不是大问题