2017-11-06 23 views
0

私は、samplerateのサイズでrawと呼ばれるバッファ配列を使用しているので、サウンドを1秒で読み込むことができます。C++の関数で鋸歯状波を作成する

これらの方法のいずれかでノコギリ波を作成しようとしましたが、出力が聞こえません。 まずMethodeの:

void createSaw() { 
    for (unsigned i = 0; i < SAMPLES; i++) { 
     raw[i] = ((int)x % amplitude) - amplitude/2; 
     x += increment; 
    } 
} 

第二Methodeの:

unsigned n = 0; 
sf::Int16 value = 0; 

void createSaw2() { 
    for (unsigned i = 0; i < SAMPLES; i++) { 
     while (n < amplitude) { 
      value += (1/(2 * n + 1)) * sin(-2 * n * x); 
      n++; 
     } 
     n = 0; 
     raw[i] = value; 
     x += increment; 
    } 
} 

私は間違って何をしているのですか?これらの機能のいずれかを動作させる必要がありますか?

答えて

5

整数計算を使用しているため、1/(2 * n + 1)の結果は01n=0)です。 sin()には0が乗算されます。

+0

申し訳ありませんが、私は最初の方法の修正も見つけました。 – Steakie

関連する問題