2012-02-26 10 views
0

코스 연습을 위해 나는 사운드의 반향 음 (플랜저)을 재생할 때 지연 시간을 변경하는 사인 오실레이터를 생성해야합니다. 이 발진기는 조정 가능한 주파수를 가져야합니다.플랜저 효과 용 자바 사인 오실레이터

함수에 의해 리턴 된 값 I가이 기능을 달성 1과 -1 사이 같아야

public void oscillateNumber(){ 
    for (int i = 0; i < 200; i++){ 
      oscResult = Math.sin((Number1* Math.PI)/180.0); 
     updateNumber(); 
    } 
} 

그리고 번호 1은 (여기이 용액 : How to use a Sine/Cosine wave to return an oscillating number)를 -180에서 180 사이 변화함으로써

주파수를이 오실레이터에 통합하는 방법은 무엇입니까? 주파수는

나는 내가 전적의 메커니즘을 파악하고 있지 않다이 물질을 완전히 새로운 오전 ... 0과 5 ㎐ 사이에서 조정 할 필요가, 내가 찾은 또 다른 기능은

public void oscillateNumber3(){ 
    for (int i = 0; i < 400; i++){ 
     oscResult = (float)Math.sin(angle); 
     angle += (float)(2*Math.PI) * frequency/44100f; 
     java.lang.System.out.println(oscResult); 
    } 
} 

인 경우 경우 I 지연에이 값을 추가하면 효과에 조금 더 비슷해 보이지만 사실은 정확한지 확신 할 수 없습니다.

이 포인터는 정말 감사하겠습니다.

UPDATE

나는이 기능을 함께했다

좋아, 그래서 다음 OLI의 포인터를 지속적으로 발진기에 의해 생성 된 번호로 지연을 변조, 그래도 난 루프에 대한 아주 확실하지 않다 :

public void oscillatorNumber(int frequency, int sampleRate){ 
    for (int t = 0; t < (sampleRate * frequency); t++){ 
     oscResult = (float)Math.sin(angle); 
     angle += (float)(2*Math.PI) * 2 * (t/44100); // sin(2*pi* f *(t/Fs)) 
     java.lang.System.out.println(oscResult); 
    } 
} 

이 모양이 맞나요?

답변

1

정현파 발진기의 일반 식이다 :

y(t) = sin(2*pi*f*t) 
f는 Hz 단위 주파수이다

t은 시간 (초)이다.

+1

['참고'] (http://stackoverflow.com/a/2065693/230513) 예입니다. – trashgod

+0

올리 (Oli)에 감사드립니다. 내가 업데이트에 게시 한 기능을 살펴볼 수 있습니까? 나는 다른 효과를 적용 할 때 오실레이터 값을 지속적으로 얻을 수있는 무언가가 필요하다.하지만 나는 그렇게하지 않는다고 생각한다 ... 각 업데이트에서 경과 시간을 확인하여 't'를 얻으시겠습니까? – Alex