用Flash9/as3跟踪音频波形

From:http://www.flashxm.com/?p=49

Actionscript 3.0提供的新功能,其中用到了ByteArray、SoundMixer。
代码如下:

  1. function func(a:Number) {
  2.     return num * Math.sin(a);
  3. }
  4. function drawFunction(func:Function, thickness:Number, color:Number) {
  5.     graphics.lineStyle(thickness, color, 100);
  6.     graphics.moveTo(30, stage.stageHeight / 2 - func((30 + t) / 20) * 20);
  7.     for (var i = 30; i <= stage.stageWidth - 30; i++) {
  8.         var fi = stage.stageHeight / 2 - func((i + t++) / 20) * 20;
  9.         graphics.lineTo(i, fi);
  10.     }
  11. }
  12. function spectrum(event:Event) {
  13.     graphics.clear();
  14.     SoundMixer.computeSpectrum(ba, true, 0);
  15.     num = ba.readFloat() * 10;
  16.     drawFunction(func, 1, 0x0066cc);
  17. }
  18. var sound:Sound = new Sound();
  19. var sound_channel:SoundChannel;
  20. var ba:ByteArray = new ByteArray();
  21. var num:Number;
  22. var t:Number = 0;
  23. sound.load(new URLRequest("test.mp3"));
  24. sound_channel = sound.play();
  25. this.addEventListener(Event.ENTER_FRAME, spectrum);

 

Share