0
我已经看过这些波的公式,但我无法弄清楚如何实现它们。我能够计算你的正弦波和方波:在程序代码中实现三角形,锯齿形和反锯齿形公式
float x = note.frequency/AppSettings::sampleRate;
float theta_increment = 2.0f * M_PI * x;
float value = 0;
if(waveType == SINE){
value = sin(theta_increment);
}
else if (waveType == SQUARE){
value = sin(note.theta);
value = (value > 0) - (value < 0);
}
我尝试的公式是based on this example和维基的解释:
square(t) = sgn(sin(2πt))
// this is how I tried to implement it
theta_increment - floor(theta_increment - 0.5f);
但是这会产生一个非常低的音色尖锐和频率变化似乎没有任何效果(我无论如何也听不到)。所以有人可以帮我实施锯齿和三角形?一些解释会很有帮助,因为不像正弦和方形,我不太了解这些公式。