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