マイク入力テスト(FP10.1専用)
♥0 |
Line 64 |
Modified 2009-11-17 18:39:42 |
MIT License
archived:2017-03-10 21:53:30
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);
}
}
}
}
}
}