Я написал довольно много уроков по синтезу звука во Flash, некоторые из которых посвящены синтезу с помощью волны.
Общая концепция заключается в том, что вам необходимо регулярно заполнять аудиобуфер (звуковой объект) аудиоданными. Объект Sound отправляет событие, когда ему нужны аудиоданные. Блок данных может быть где угодно между 2048 и 8192 выборками. Ниже приведен псевдокод, который может вам помочь. Это создаст аудио цикл из данных в массиве.
var readIndex:int = 0;
var data:Array = yourData;
var sound:Sound = new Sound()
sound.addEventListener( SampleDataEvent.SAMPLE_DATA, onSampleData );
sound.play();
function onSampleData( event:SampleDataEvent ):void
{
for( var i:int = 0; i < 2048; i++ )
{
if( readIndex + 1 > data.length )
{
readIndex = 0;
} else {
readIndex++;
}
event.data.writeFloat( data[i] );
event.data.writeFloat( data[i] );
}
}
Как я уже говорил, я написал много статей о работе со звуком во Flash. Вот одна такая статья: http://labs.makemachine.net/2010/07/slice-tool-looper/