我使用的是Adobe脚本的修改版本,可以提高MP3音频文件的速度。修改后的版本(由user2003548提供)允许您以更多变量的方式增加或减少速度。感谢那位用户! (基本上他修改了upOctave函数)。
他们的原始帖子是here,但我会在此处重新发布修改后的代码...
var sourceSnd:Sound = new Sound();
var outputSnd:Sound = new Sound();
var urlReq:URLRequest = new URLRequest("test.mp3");
sourceSnd.load(urlReq);
sourceSnd.addEventListener(Event.COMPLETE, loaded);
function loaded(event:Event):void
{
outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
outputSnd.play();
}
function processSound(event:SampleDataEvent):void
{
var bytes:ByteArray = new ByteArray();
sourceSnd.extract(bytes, 4096);
event.data.writeBytes(upOctave(bytes));
}
function upOctave(bytes:ByteArray):ByteArray
{
var returnBytes:ByteArray = new ByteArray();
bytes.position = 0;
var position:int = 0;
var speed:Number = 0.75;
while(bytes.bytesAvailable > 0)
{
if (bytes.bytesAvailable > 0)
{
bytes.position = int(speed*position)*8;
}
position++;
if(bytes.bytesAvailable>0){
returnBytes.writeFloat(bytes.readFloat());
returnBytes.writeFloat(bytes.readFloat());
}
}
return returnBytes;
}
所以你基本上把一个mp3文件(名为test.mp3)放在与这个脚本相同的文件夹中,它会以不同的速度播放音频,具体取决于变量的值' speed&# 39 ;.
在我的版本中,我将速度值替换为滑块的值,这使我能够动态调整速度,因此它完全符合我的需要。
我要做的是创造一种发动机声音,我可以控制它的速度/音高。所以我只想让音频循环(尽可能无缝)而不是只播放一次。
我已经尝试过outputSnd.play(0,9999),但这并没有奏效。我必须承认,我不会完全理解剧本中发生的事情,除非它非常聪明。我认为正在播放的声音类似于从upOctave函数返回的字节流式传输,并且循环可能必须在某处发生。但我似乎无法制作这个音频循环。如果那里的任何人可以帮助那将是惊人的: - )
非常感谢 达伽兹