Я пытаюсь преобразовать byteArray звукового объекта в массив с плавающей точкой. Звуковой объект воспроизводится нормально и на полную длину, но массив float, который я получаю от него, обрезается (но звучит правильно), поэтому в преобразовании я должен что-то делать неправильно:
var s:Sound = mySound;
s.play(); // plays fine
var bytes:ByteArray = new ByteArray();
bytes.endian = Endian.LITTLE_ENDIAN;
s.extract(bytes, s.bytesTotal, 0);
var leftChannel:Array = new Array();
var rightChannel:Array = new Array();
bytes.position = 0;
while (bytes.bytesAvailable)
{
leftChannel.push(bytes.readFloat());
rightChannel.push(bytes.readFloat());
}
и вот что я получаю:
Два верхних канала являются исходным звуковым объектом.
Нижние два - данные массива с плавающей точкой. Я выровнял их так, чтобы вы могли видеть, что начало обрезано и, очевидно, длина неверна.
Спасибо за любые ответы ...