我正在为项目创建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);