/**
* Copyright Extra ( http://wonderfl.net/user/Extra )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/6NTE
*/
// forked from NME's basic bmp audio wave graph v0.2
// forked from NME's basic bmp audio graph v0.1
//Originally written by NME a.k.a Anthony R Pace - anthony.pace@utoronto.ca
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),//amount to normailize for visual representation, or '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
}
}
}