接上文.
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;
}
}
基本的源碼就這個樣子
不過有一個問題就是播放音效有少許雜音-不過不是大問題