Существует ли общий код, который создает квадратные, треугольные, пилообразные или любые другие пользовательские формы сигналов с использованием математического класса?
ниже - это базовая функция, которая обрабатывает SampleDataEvent и воспроизводит синусоидальную волну средней c (440 Гц). Я хотел бы изменить тон, включив квадрат, треугольник и другие волны.
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
}
}