-3
rtaudioで簡単な正弦波を生成して、何が起こっているのかを確認しようとしています。しかし、間違っています。正弦波の生成:不正な出力
私はグローバルfloat timec
を持っていて、コールバックはopenStream
で呼び出され、サンプルでバッファを満たす必要があります。
float freq = 440; // center frequency
int SAMPLE_RATE = 44100;
for (int i = 0; i < numFrames; i++) {
float v = sin(2 * M_PI * freq * (timec/SAMPLE_RATE));
outputbuffer[i] = v;
timec++;
}
どうしたのですか?正弦波ではなく、低音が聞こえます。
デバッガを使用し、デバッガに 'timec/SAMPLE_RATE'の値を表示させます。たとえば、「timec」が1であるとき、「1/44100」はゼロである。そして、その除算の結果は 'timec'が44100の値に達するまでゼロになるでしょう.Sp、最初の44100サンプルは' sin(0) 'として計算されます。これがC++の仕組みです。 –
@SamVarshavchik timecは浮動小数点なので、自動的に結果を宣言するべきではありませんか? –
「timec」は浮動小数点ですか?示されたコードでは 'timec'の宣言は与えられておらず、' int'とみなされていました。 –