Как воспроизвести сгенерированную форму волны как звук во Flash? - PullRequest
1 голос
/ 17 января 2011

Если у меня есть звуковая форма волны, хранящаяся в виде ByteArray в actionscript 3, как мне преобразовать ее в объект Sound, который можно воспроизвести?

Обратите внимание, что массив полон звуковых сэмплов - законченный сгенерированный сигнал. Это не массив, содержащий mp3 или другие сжатые данные.

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Я написал довольно много уроков по синтезу звука во 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/

0 голосов
/ 17 января 2011

Ну, на самом деле у меня нет ответа, но я также очень заинтересовался этой проблемой, когда читаю вам ветку, и здесь - это то, что я нашел. Похоже, много накладных расходов, но очень интересное решение.

Надеюсь, это поможет!

...