Как извлечь звуковой объект в монобайтовый массив в AS3 - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь добавить массив байтов звукового объекта к захваченному массиву байтов звука микрофона.

Это работает, но извлеченный звуковой объект уменьшен и удвоен по длине. Я предполагаю, что это потому, что массив байтов звукового объекта находится в стерео, а массив байтов микрофона в моно.

У меня есть это:

sound.extract(myByteArray, extract);

myByteArray теперь содержит стерео данные. Как я могу превратить это в моно (я новичок в ByteArrays).

UPDATE:

Вот рабочее решение:

existingByte.position = 0;
var mono : ByteArray = new ByteArray();
while(existingByte.bytesAvailable) {
    var left : Number = existingByte.readFloat();
    mono.writeFloat(left);
    existingByte.position +=4;
}

1 Ответ

0 голосов
/ 19 января 2012

Просто выберите канал для извлечения. Я думаю, что ByteArray чередуется, поэтому, если вы выбираете все нечетные байты в своем левом канале, если вы выбираете все четные байты, это правильный канал.

var mono : ByteArray = new ByteArray();
for( var i : int = 0; i < raw.length; i+=2 ) {
    var left : int = raw[i];
    var right : int = raw[i+1];

    var mixed : int = left * 0.5 + right * 0.5;
    if( pickLeft ) {
      mono.writeByte( left );
    } else if( pickRight ) {
      mono.writeByte( right );
    } else {
      mono.writeByte( mixed );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...