ActionScript - 从Math.sin()创建方形,三角形,锯齿波?

时间:2010-08-02 11:13:42

标签: actionscript-3 math waveform

是否有公共代码可以使用数学类产生方形,三角形,锯齿形或任何其他自定义波形?

下面是一个基本函数,它处理SampleDataEvent并播放中c(440 Hz)正弦波。我想通过加入方波,三角波和其他波来改变音调。

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
        }
    }

1 个答案:

答案 0 :(得分:3)

维基百科为squaretrianglesawtooth波提供了简单的方程式。这里可能是最简单的(都有句号1):

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