basic bmp audio wave graph v0.2

by NME forked from basic bmp audio graph v0.1 (diff: 9)
Originally written by NME a.k.a Anthony R Pace

just bored, thought it might look neat as water, and decided to spend the minute required to change it.  Now that I see it, I don't actually like it as much as I thought I would... but w/e.
♥3 | Line 39 | Modified 2012-05-16 06:10:45 | MIT License
play

ActionScript3 source code

/**
 * Copyright NME ( http://wonderfl.net/user/NME )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/pHdf
 */

// forked from NME's basic bmp audio graph v0.1
//Originally written by NME a.k.a Anthony R Pace
package {
    import flash.geom.Rectangle; 
    import flash.utils.ByteArray;
    import flash.events.SampleDataEvent;
    import flash.media.Microphone;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.display.Sprite;
    public class BMPAudioGraph extends Sprite {
        public var  bmpHeight:int = stage.stageHeight,//The height of the graph
                    bmp:Bitmap = new Bitmap(new BitmapData(512,bmpHeight,false,0xE9FBFF)), //the bitmap that will be used to represent the time domain
                    mic:Microphone = Microphone.getMicrophone(), //the default microphone if available
                    n:int, // the sample number
                    sn:Number,  //sample value at n, or s[n] 
                    bah:ByteArray, //Byte Array  that Holds the sample data
                    A:Number = (bmpHeight/2),//'A'  for amplitude factor.  
                    sampleRect:Rectangle = new Rectangle(0,0,1,0);
        public function sdeh(e:SampleDataEvent):void{ //sample data event handler
            bah = e.data;
            bah.position = 0;
            bmp.bitmapData.lock();
            bmp.bitmapData.fillRect(bmp.bitmapData.rect,0xE9FBFF);
            for (n = 0;n<512;++n){
               sn = bah.readFloat();//reads 4 bytes = 32 bit floating point sample value
               sampleRect.x = n;
               sampleRect.y = A-sn*A;//in this case I am using the Amplitude as not only a factor, but also the offset for the zero line.
               sampleRect.height = bmpHeight - sampleRect.y;
               bmp.bitmapData.fillRect(sampleRect,0x3CD8FF);//d7f7ff
            }
            bmp.bitmapData.unlock();
        }
        public function BMPAudioGraph() {
            stage.addChild(bmp);//make the bitmap visible on the display list
            mic.rate = 11;// sets the sample frequency to 11025hz
            mic.setSilenceLevel(0);//setting this to 0 makes it so you hear all activity... you should notice noise in the line.
            mic.addEventListener(SampleDataEvent.SAMPLE_DATA,sdeh); // call the sdeh function if the mic hears audio
        }
    }
}