如何控制AS3中的声速和音量?

时间:2014-07-18 00:56:40

标签: performance actionscript-3 flash audio volume

我需要控制声音播放速度,以便从声音文件中提取样本数据但是如何控制音量然后SoundTranform.volume无效?

private function onSampleData(event:SampleDataEvent):void
    {
        var l:Number;
        var r:Number;

        var outputLength:int = 0;
        while (outputLength < 2048)
        { 
            _loadedMP3Samples.position = int(_phase) * 8; // 4 bytes per float and two channels so the actual position in the ByteArray is a factor of 8 bigger than the phase
            l = _loadedMP3Samples.readFloat(); // read out the left and right channels at this position
            r = _loadedMP3Samples.readFloat(); // read out the left and right channels at this position
            event.data.writeFloat(l); // write the samples to our output buffer
            event.data.writeFloat(r); // write the samples to our output buffer
            outputLength++;
            _phase += _playbackSpeed;
            if (_phase < 0)
                _phase += _numSamples;
            else if (_phase >= _numSamples)
                _phase -= _numSamples;
        }
    }

1 个答案:

答案 0 :(得分:1)

体积:

使用说var volume: Number = 1.0作为字段变量。 0.0表示静音,1.0表示原始音量。改变其他方法。但是,听众可以欣赏补间这个变量。

event.data.writeFloat(volume * l);

event.data.writeFloat(volume * r);

速度:

您必须重新采样并使用插值来定义中间值。

它在数学上有所涉及,但我确定有大量的图书馆可以为你做这件事。但是,嘿,这是一个教程,告诉你有多明显:

http://www.kelvinluck.com/2008/11/first-steps-with-flash-10-audio-programming/

编辑:哦,你使用过这个教程......你可以说。

修改_playbackSpeed。 1.0是全速。 2.0是双倍速度。