package { import flash.display.*; import flash.media.*; import flash.events.*; import flash.text.*; import flash.utils.*; import flash.display.*; public class FlashTest extends Sprite { public function FlashTest() { var mic:Microphone = Microphone.getMicrophone(); mic.gain = 100; mic.rate = 44; mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler); var soundBytes:ByteArray = null;; var soundQueue:Array = []; var sound:Sound = new Sound(); sound.addEventListener(SampleDataEvent.SAMPLE_DATA, playbackSampleHandler); sound.play(); function micSampleDataHandler(event:SampleDataEvent):void { var bytes:ByteArray = new ByteArray(); while(event.data.bytesAvailable) { var sample:Number = event.data.readFloat(); bytes.writeFloat(sample); } soundQueue.push(bytes); } function playbackSampleHandler(event:SampleDataEvent):void { if (soundQueue.length == 0) { for (var j:int = 0; j < 8192; j++) { event.data.writeFloat(0); event.data.writeFloat(0); } }else { if (soundBytes == null) { soundBytes = soundQueue.shift(); soundBytes.position = 0; } for (var i:int = 0; i < 8192; i++) { if (soundBytes.bytesAvailable <= 0) { if (soundQueue.length == 0) { soundBytes = null; for (; i < 8192; i++ ) { event.data.writeFloat(0); event.data.writeFloat(0); } }else{ soundBytes = soundQueue.shift(); soundBytes.position = 0; } } var sample:Number = soundBytes.readFloat(); event.data.writeFloat(sample); event.data.writeFloat(sample); } } } } } } マイク入力テスト(FP10.1専用)