2017-11-06 35 views
0

raw라는 버퍼 배열을 my samplerate 크기로 사용하므로 1 초의 사운드를로드 할 수 있습니다.C++에서 함수로 톱니 모양의 "웨이브"만들기

이러한 방법 중 하나를 사용하여 톱니 모양의 "웨이브"를 만들려고했지만 출력이 들리지 않습니다. 먼저 메도 :

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

둘째 메도 : 내가 뭘 잘못

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)의 결과는 0()입니다. sin()0이 곱해집니다.

+0

괜찮아요, 나는 첫 번째 방법에 대한 수정을 발견했습니다. – Steakie