マイク入力テスト(FP10.1専用)

by TheCoolMuseum
♥0 | Line 64 | Modified 2009-11-17 18:39:42 | MIT License
play

ActionScript3 source code

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

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);
					}
				}
			}
		}
		
	}
	}

Forked