我正在为一个项目创建一个VST,并且尝试创建一个振荡器会产生锯齿波,脉冲波形,正弦波和三角波形。我到处寻找,似乎找不到任何有用的东西(对我来说),主要是因为我很难理解它。
到目前为止,我有...... for (i=0;i<KWaveSize;i++)
{
sawtooth[i] = (float)(-1. + (2. * ((double)i / (double)kWaveSize)));
pulse[i] = (i < wh) ? -1.f : 1.f;
sine [i] (float)sin(twoPi * ((float)i /kWaveSize));
triangle[i] = ....
}
我正在努力研究如何使用它来创建正确的波形。
我尝试过:
triangle[i] = (float)(1 -((twoPi / KWaveSize) * i));
根据我所关注的书,这是一个有根据的猜测,但会产生扭曲的声音。
如果有人做了这样的事情可以提供帮助,或者指向一个新手教程的所有事情声音合成,其中包括波表生成等,我们将不胜感激。
感谢。
答案 0 :(得分:1)
你需要一个可以切换方向的波形 - 它从0变为kWaveSize/2
,从那里变为负kWaveSize
。
triangle[i] = i < kWaveSize/2 ? -1.0 + 2.0 * i / (kWaveSize*0.5) : 1.0 - 2.0 * i / (kWaveSize*0.5);