2010-10-15 3 views
0

Я планирую играть более одного MP3 одновременно, как и многодорожечный, я знаю, что это приведет к огромному увеличению памяти. Есть ли способ трансляции или буфера в реальном времени?Air 2 and streaming mp3

Если я использую его при создании виртуального пианино, было бы возможно встроить 88 или 500 МБ MP3 для производительности или динамической нагрузки?

ответ

0

Hm ...

Поток из файлов?

Было бы возможно, но я не думаю, что можно было бы с API AIR ... Я предполагаю, что пользовательские библиотеки будет использоваться здесь ... В принципе, вы бы иметь класс SoundPlayer, которые будут иметь методы addSound и removeSound.

Каждый раз, когда addSound называется, путь необходимо (ID Текущая нота и инструмент необходимо) используется для инициализации FileStream, а также метод обратного вызова для вновь созданного Sound экземпляра. Обратный вызов считывал (буферизует) что-то из экземпляра FileStream, например, 8192 байта или размер буфера, и записывал его в буфер с буфером звука .

removeSound просто удалить (закрыть, и т.д ...) экземпляры обоих FileStream и Sound созданный addSound.

Экземпляры должны храниться в виде массива.

Кроме того, обратите внимание, что динамическая потоковую версия Sound ОЧЕНЬ недокументированная ... Но это пример код, чтобы понять, как это работает:

var mySound:Sound = new Sound(); // new one 
mySound.addEventListener("sampleData", getData); // the callback event 
var myChannel:SoundChannel = mySound.play(); // no arguments for play, channel 

// the callback function - it is used to get the new sound buffer 
function getData(e:SampleDataEvent):void { 
    for (var wi:int = 0; wi < 8192; wi++){ 
     e.data.writeFloat(Math.random()); 
    } 
} 

Это создает шум (случайный).

Вот форму волны пильного диска. Просто потому, что это весело: (предупреждение: громкое)

var subWi:Number = 0; 
for (var wi:int = 0; wi < 8192; wi++){ 
    e.data.writeFloat(subWi); 
    subWi += 0.01; 
    if (subWi >= 1){ 
     subWi = 0; 
    } 
} 

Примечания: с помощью этого кода вы можете сделать синтезатор, а также: D