forked from: forked from: Show Mic Input Waveform

by ohisama forked from forked from: Show Mic Input Waveform (diff: 95)
import flash.geom.ColorTransform;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.events.ActivityEvent;
♥0 | Line 38 | Modified 2013-02-14 08:33:42 | MIT License
play

ActionScript3 source code

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

// forked from j2e's forked from: Show Mic Input Waveform
// forked from j2e's Show Mic Input Waveform
package 
{
    //import flash.geom.ColorTransform;
    import flash.display.Sprite;
    import flash.media.Microphone; 
    //import flash.media.Sound;
    //import flash.media.SoundChannel;
    //import flash.media.SoundMixer;
    import flash.events.SampleDataEvent; 
    //import flash.events.ActivityEvent;
    import flash.utils.ByteArray; 
    import flash.display.Graphics;
    public class FlashTest extends Sprite 
    {
        //private const DELAY_LENGTH : int = 4000; 
        private var nWidth : Number = stage.stageWidth; 
        private var nCenter : Number = stage.stageHeight / 2; 
        private var nScale : Number = 300; 
        private var myGraphics : Graphics = graphics; 
        private var mic : Microphone = Microphone.getMicrophone(); 
        //private var snd : Sound = new Sound();
        public function FlashTest() 
        {
            mic.addEventListener(SampleDataEvent.SAMPLE_DATA, drawSampleData);
            //snd.addEventListener(SampleDataEvent.SAMPLE_DATA, onMicActivity);
            mic.setLoopBack(true);
            mic.setUseEchoSuppression(true);
            mic.setSilenceLevel(0);
            //snd.play();
        }
        //private function writeMicSound(event : SampleDataEvent) : void 
        //{
        //    for (var i : int = 0; i < 8192; i++) 
        //    { 
        //        var n : Number = Math.sin((i + event.position) / Math.PI / 4); 
        //        event.data.writeFloat(n); 
        //        event.data.writeFloat(n); 
        //    } 
        //}
        //private function onMicActivity(eventObject : ActivityEvent) : void 
        //{
        //    myGraphics.lineStyle(0, 250); 
        //    var myFFT : ByteArray;
        //    SoundMixer.computeSpectrum(myFFT, true, 0);
        //    while (myFFT.bytesAvailable > 0) 
        //    {
        //        var nFreq : Number = myFFT.position * stage.stageHeight / myFFT.length;
        //        var nAmp : Number = myFFT.readFloat() * nWidth;
        //        myGraphics.drawRect(0, nFreq, nAmp, 1);
        //    }
        //}
        private function drawSampleData(eventObject : SampleDataEvent) : void 
        { 
            var myData : ByteArray = eventObject.data; 
            myGraphics.clear(); 
            myGraphics.lineStyle(0, 0x000000); 
            myGraphics.moveTo(0, nCenter); 
            var nPitch : Number = nWidth / myData.length; 
            var basePitch : Number = myData.readFloat();
            while (myData.bytesAvailable > 0) 
            { 
                var nX : Number = myData.position * nPitch; 
                var nY : Number = myData.readFloat() * nScale + nCenter; 
                myGraphics.lineTo(nX, nY); 
            }
        }
    }
}