Actionscript 3 - Как я могу зациклить аудио, используя этот mp3-чейнджер скорости / высоты тона?
Я использую модифицированную версию скрипта Adobe, которая увеличивает скорость аудиофайла MP3. Модифицированная версия (предоставленная user2003548) позволяет увеличивать или уменьшать скорость более изменчивым способом. Спасибо этому пользователю!!! (в основном он изменил функцию upOctave).
Их оригинальный пост находится здесь, но я опубликую измененный код здесь...
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'.
В моей версии я заменил значение скорости на значение ползунка, и это позволило мне динамически регулировать скорость, поэтому она делает именно то, что мне нужно.
То, что я хочу сделать, это создать звук двигателя, который я могу контролировать скорость / шаг. Поэтому я просто хочу, чтобы аудио зацикливалось (как можно более плавно), а не воспроизводилось только один раз.
Я пробовал outputSnd.play(0,9999), но это не сработало. Должен признать, я не до конца понимаю, что происходит в сценарии, кроме того, что он очень умный. Я думаю, что воспроизводимый звук - это своего рода поток от байтов, возвращенных функцией upOctave, и зацикливание, вероятно, должно произойти где-то там. Но я, кажется, не могу сделать этот аудио цикл. Если есть кто-то, кто может помочь, это было бы удивительно:-)
Большое спасибо Газ