1

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

下面是一个处理 SampleDataEvent 并播放 mid-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
        }
    }
4

1 回答 1

3

维基百科给出了波、三角波和锯齿波的简单方程。这可能是最简单的(都有周期 1):

平方(t) = sgn(sin(2πt))
锯齿(t) = t - 地板(t + 1/2)
三角形(t)= abs(锯齿(t))
于 2010-08-03T19:08:33.307 回答