0

サウンドオブジェクトの.extract()メソッドを使用すると、圧縮されていないサウンドデータをByteArrayとして取得できます。抽出された音声データの形式は何ですか?カスタム内部フォーマット、または確立されたフォーマット?エンディアンタイプ?

サウンドデータをbyteArrayに直接ロードし、このデータからサウンド再生をフィードできるようにしたいと思います(以下の手順1をバイパスします)。

これまでの私の実験は次のとおりです。

ステップ1.ここで、サウンドをロードし、データコンテンツを抽出して、ディスクに保存します。

private var sound:Sound;
private var byteArray:ByteArray;

// loading a sound...
private function init():void {
    sound = new Sound();            
    sound.addEventListener(Event.COMPLETE, onComplete);
    sound.load(new URLRequest('short.mp3'));
}

// saving it to disc...
private function onComplete(e:Event):void {
    byteArray = new ByteArray();
    sound.extract(byteArray, 100000000);            
    byteArray.position = 0;
    var file:FileReference = new FileReference();
    file.save(byteArray, 'short.data');             
}

ステップ2.ここで、ディスクからデータをロードし、新しいサウンドオブジェクトの再生にこのデータをフィードします。

private var sound:Sound;
private var byteArray:ByteArray;

// loading a sound...
private function init():void {

    file = new FileReference();
    file.addEventListener(Event.COMPLETE, onLoaded);
    file.addEventListener(Event.SELECT, onSelected);
    file.browse();

}

private function onSelected(e:Event):void {
    file.load();
}

private function onLoaded(e:Event):void {
    trace('loaded');
    trace(file.data.length);
    byteArray = file.data;

    sound2 = new Sound();
    sound2.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);     
    sound2.play();      
}   

private function onSampleData(e:SampleDataEvent):void {
    trace(e.position);
    for (var i:int = 0; i < 2048; i++) {
        var left:Number = byteArray.readFloat();
        var right:Number = byteArray.readFloat();               
        e.data.writeFloat(left * 0.2);
        e.data.writeFloat(right * 0.2);
    }
}

外部コンバータユーティリティ(soxなど)を使用して、この2番目のステップ(ディスクからのデータのロードとサウンドオブジェクトの再生のフィード)を実行できるようにしたいと思います。

/ジョナス

4

1 に答える 1

1

標準の32ビットフロートで、サンプルごとにチャネルごとに1つである必要があります。だから私はsoxの-e浮動小数点を試してみましたが、試したことはありませんが、ある程度の自信を持ってやってみます...:)フロートはエンディアンに依存しないと信じています...

于 2012-07-26T12:50:06.747 に答える