2010-08-02 2 views
2

수학 수업을 사용하여 정사각형, 삼각형, 톱니 모양 또는 기타 맞춤 파형을 생성하는 공통 코드가 있습니까?ActionScript - Math.sin()에서 정사각형, 삼각형, 톱니파를 작성 하시겠습니까?

은 SampleDataEvent를 처리하고 중간 (440Hz) 사인파를 재생하는 기본 기능입니다. 사각형, 삼각형 및 다른 파도를 통합하여 음색을 변경하고 싶습니다.

var position:int = 0; 

var sound:Sound = new Sound(); 
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleDataHandler); 
sound.play(); 

function sampleDataHandler(event:SampleDataEvent):void 
    { 
    for(var i:int = 0; i < 2048; i++) 
     { 
     var phase:Number = position/44100 * Math.PI * 2; 
     position ++; 

     var sample:Number = Math.sin(phase * 440); 
     event.data.writeFloat(sample); // left 
     event.data.writeFloat(sample); // right 
     } 
    } 
+0

'죄'만 사용해야합니까? 당신은 당신 자신의 함수를 작성할 수 있습니까? – kennytm

+0

Math.sin()을 사용할 요구 사항이 없지만 Math.sin() (또는 .cos())을 사용하면 맞춤형 파형을 만드는 방법이 완성됩니다. 또는 적어도 쉽게 성취 될 수있다. – TheDarkIn1978

답변

3

는 위키는 square, trianglesawtooth 파도 간단한 식을 제공한다. 다음은 아마도 가장 간단한 것입니다 (모든 기간 1) :

 
square(t) = sgn(sin(2πt)) 
sawtooth(t) = t - floor(t + 1/2) 
triangle(t) = abs(sawtooth(t)) 
+0

안녕 BlurRaja. 당신의 예를 따르는 데 어려움이 있습니다. 내 수학 능력이 그렇게 좋지 않을까 봐 걱정된다. 이 새로운 파형을 다음 기본 사운드 샘플에 어떻게 통합할까요? var sample : Number = Math.sin (phase * 440); 이 기능을 사용하기 위해 질문이 업데이트되었습니다. – TheDarkIn1978

+0

특히, 2πt의 의미 또는 AS3에서의 대체 방법에 대해서는 알지 못합니다. – TheDarkIn1978

+0

@ TDI1978 : 2πt는 pi (3.141592 ...) 번 t (sin (t)와 같은 변수) 시간의 두 배를 의미합니다. [sgn] (http://en.wikipedia.org/wiki/Sign_function)은 부호 (-1은 음수, 0은 0, 양수는 +1), [floor] (http://en.wikipedia.org/wiki/Floor_and_ceiling_functions)는 반올림을 의미하고 [abs] (http://en.wikipedia.org/wiki/Absolute_value)는 절대 값입니다 (값이 음수이면 음수 부호 제거) –

관련 문제