-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'은 0입니다. 그리고 그 분단의 결과는'timec '이 44100의 값에 도달 할 때까지 0이 될 것입니다. Sp, 첫번째 44100 샘플은'sin (0)'으로 계산 될 것입니다. 그것이 C++가 작동하는 방식입니다. –
@SamVarshavchik timec은 부동 소수점이므로 자동으로 결과를 홍보해서는 안됩니까? –
여기서'timec'은 float입니까? 표시된 코드에서'timec'의 선언은 주어지지 않았고,'int'로 추정됩니다. –