2014-07-18 2 views
0

사운드 파일에서 샘플 데이터를 추출 할 수 있도록 사운드 재생 속도를 제어해야하지만 SoundTranform.volume이 효과가 없으므로 어떻게 볼륨을 제어 할 수 있습니까?AS3에서 사운드 속도와 볼륨을 제어하는 ​​방법은 무엇입니까?

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; 
     } 
    } 
+0

이것은 샘플링 코드 일뿐입니다. 실제로 사운드를 재생할 위치에 게시 할 수 있습니까? – divillysausages

답변

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/

편집 :하지만, 이봐, 여기에 어떻게 분명히 당신을 알려주는 튜토리얼입니다 오, 당신은이 튜토리얼을 사용 ... 당신은 말했다 수 있습니다.

modify_playbackSpeed. 1.0은 최대 속도입니다. 2.0은 배속입니다.