これらの波の公式を見てきましたが、それらを実装する方法がわかりません。SINE 波と SQUARE 波を計算できました。
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);
}
私が試した式は、この例とwikiの説明に基づいていました:
square(t) = sgn(sin(2πt))
// this is how I tried to implement it
theta_increment - floor(theta_increment - 0.5f);
しかし、これは非常に低いサウンドのトーンを生成し、周波数の変更は何の効果もないようです (とにかく私が聞くことができるものではありません)。誰かがのこぎり歯と三角形の実装を手伝ってくれますか? サインやスクエアとは異なり、私はこれらの式をよく理解していないので、いくつかの説明が非常に役立ちます.