对源自 mp3 数据的声音数据进行修改

使用 Sound.extract() 方法提取 Sound 对象中的数据。可以使用(和修改)该数据,将其写入另一个 Sound 对象的动态流以进行播放。例如,以下代码使用加载的 MP3 文件的字节,并通过过滤函数 upOctave() 传递这些字节:

var mySound = new air.Sound(); 
var sourceSnd = new air.Sound(); 
var urlReq = new air.URLRequest("test.mp3"); 
sourceSnd.load(urlReq); 
sourceSnd.addEventListener(air.Event.COMPLETE, loaded); 
function loaded(event) 
{ 
    mySound.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound); 
    mySound.play(); 
} 
function processSound(event) 
{ 
        var bytes = new air.ByteArray(); 
        sourceSnd.extract(bytes, 8192); 
        event.data.writeBytes(upOctave(bytes)); 
} 
function upOctave(bytes) 
{ 
    var returnBytes = new air.ByteArray(); 
    bytes.position = 0; 
    while(bytes.bytesAvailable > 0) 
    { 
        returnBytes.writeFloat(bytes.readFloat()); 
        returnBytes.writeFloat(bytes.readFloat()); 
        if (bytes.bytesAvailable > 0) 
        { 
            bytes.position += 8; 
        } 
    } 
    return returnBytes; 
}