flash on 2011-1-7

by j2e
left channel
right channel
♥0 | Line 74 | Modified 2011-01-07 20:12:22 | MIT License
play

ActionScript3 source code

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

package {
    import flash.display.Sprite;
    import flash.display.Graphics;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.media.Microphone;
import flash.events.ActivityEvent;
import flash.events.StatusEvent;


public class FlashTest extends Sprite {
   private const PLOT_HEIGHT:int = 200;
private const CHANNEL_LENGTH:int = 256;
private var snd:Sound = new Sound();
private var req:URLRequest = new URLRequest("bigSound.mp3");
private var bytes:ByteArray = new ByteArray();

var mic:Microphone = Microphone.getMicrophone();
            
            
        public function FlashTest() {
            mic.setLoopBack(true);
            mic.setUseEchoSuppression(true);
            mic.framesPerPacket = 256;
          
            snd.load(req);
var channel:SoundChannel;
channel = snd.play();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
snd.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
mic.addEventListener(StatusEvent.STATUS, this.onMicStatus);

        }

function onMicStatus(event:StatusEvent):void
{
if (event.code == "Microphone.Unmuted")
{
trace("Microphone access was allowed.");
}
else if (event.code == "Microphone.Muted")
{
trace("Microphone access was denied.");
}
}

function onEnterFrame(event:Event):void
{
    
SoundMixer.computeSpectrum(bytes, false, 0);
var g:Graphics = this.graphics;
g.clear();
g.lineStyle(0, 0x6600CC);
g.beginFill(0x6600CC);
g.moveTo(0, PLOT_HEIGHT);
var n:Number = 0;
// left channel
for (var i:int = 0; i < CHANNEL_LENGTH; i++)
{
n = (bytes.readFloat() * PLOT_HEIGHT);
g.lineTo(i * 2, PLOT_HEIGHT - n);
}
g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
g.endFill();
// right channel
g.lineStyle(0, 0xCC0066);
g.beginFill(0xCC0066, 0.5);
g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
for (i = CHANNEL_LENGTH; i > 0; i--)
{
n = (bytes.readFloat() * PLOT_HEIGHT);
g.lineTo(i * 2, PLOT_HEIGHT - n);
}
g.lineTo(0, PLOT_HEIGHT);
g.endFill();
}
function onPlaybackComplete(event:Event)
{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
    
            // write as3 code here..
            
        
    }
}