Хм ...
Поток из файлов?
Это было бы возможно, но я не думаю, что это было бы возможно с AIR API ... Я думаю, здесь можно было бы использовать собственную библиотеку ... По сути, у вас был бы класс SoundPlayer , который будет иметь методы addSound и removeSound .
Каждый раз, когда addSound вызывается, требуемый путь (то есть необходимая нота и инструмент) используется для инициализации FileStream , а также метода обратного вызова для вновь созданного Звук Экземпляр. Обратный вызов будет считывать (буферизовать) что-то из экземпляра FileStream , например, 8192 байта или размер буфера, и записывать это в буфер Sound .
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