三角形とのこぎり波を計算する必要がありますが、モデルと処理できるデータのために少し複雑です (ただし、混乱しているだけかもしれません)。
正弦波を計算することはできますが、実際にはフレーム カウンターを使用していません。私がしているtheta_increment
ことは、次にサンプルを計算する必要があるときに使用できる変数を計算することです。これは次のように機能します。
float x = note.frequency / AppSettings::sampleRate;
float theta_increment = 2.0f * M_PI * x;
float value = 0;
if(waveType == SINE){
value = sin(note.theta) * fixedAmplitude;
}
現在のフレーム/サンプルの値をメンバーtheta_increment
内に保存しnote.theta
たので、次のサンプルに使用できます。
note.theta += theta_increment;
のこぎりや三角形を計算する方法について、たくさんの例を見てきましたが、わかりません。(私は自由に使える上記のデータしか持っていません)これは私の最後の試みですが、うまくいかず、たくさんの不具合が発生しています:
value = 1.0f - (2.0f * ((float)note.theta / (float)44100));