Microphone Test

by phi16
Not working :(
♥0 | Line 57 | Modified 2015-03-26 14:21:06 | MIT License
play

ActionScript3 source code

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

package {
    import flash.media.Microphone;
    import flash.media.MicrophoneEnhancedOptions;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    public class AutoGain extends Sprite {
        private var spr:Sprite = new Sprite();
        private var mic:Microphone;
        private var available:Boolean = false;
        private var level:Array=new Array();
        private var activ:Array=new Array();
        private var r:Number=465/100;
        private var sm:Number=0;
        public function AutoGain() {
            mic = Microphone.getEnhancedMicrophone();
            if(mic){
                mic.setLoopBack();
                var opt:MicrophoneEnhancedOptions=mic.enhancedOptions;
                opt.autoGain = true;
                mic.enhancedOptions = opt;
                available=true;
                addChild(spr);
                addEventListener(Event.ENTER_FRAME, onFrame);
                stage.addEventListener(MouseEvent.CLICK, onClick);
            }
        }
        public function onFrame(e:Event):void{
            var i:int=0;
            spr.graphics.clear();
            spr.graphics.beginFill(0);
            spr.graphics.drawRect(0,0,465,465);
            spr.graphics.endFill();
            level.push(mic.gain);
            activ.push(mic.activityLevel);
            while(level.length>465)level.shift();
            while(activ.length>465)activ.shift();
            var d:int=0;
            if(level.length<465)d=465-level.length;
            spr.graphics.lineStyle(1,0xff7f00);
            for(i=0;i<level.length;i++){
                spr.graphics.moveTo(i+d,465-activ[i]*r);
                spr.graphics.lineTo(i+d,465);
            }
            spr.graphics.lineStyle(1,0x00ff00);
            spr.graphics.moveTo(d,465-level[0]*r);
            for(i=0;i<level.length;i++){
                spr.graphics.lineTo(i+d,465-level[i]*r);
            }
            spr.graphics.lineStyle(1,0xff0000);
            spr.graphics.moveTo(0,465-mic.silenceLevel*r);
            spr.graphics.lineTo(465,465-mic.silenceLevel*r);
        }
        public function onClick(e:MouseEvent):void{
            //mic.gain = (465-mouseY)/r;
        }

    }
}