我正在为项目创建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变为kWaveSize/2,从其变为负,从​​kWaveSize变为负。

triangle[i] = i < kWaveSize/2 ? -1.0 + 2.0 * i / (kWaveSize*0.5) : 1.0 - 2.0 * i / (kWaveSize*0.5);

10-04 21:33