forked from: forked from: Show Mic Input Waveform
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;
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);
}
}
}
}