# HG changeset patch
# User cavaliet
# Date 1338897062 -7200
# Node ID 84aba7419b17e210c17a6c66cccd7fafbfe3f84e
# Parent c594db80ccee9020c9bc6efefcea22f39550b4b8
flash : clean interface.
diff -r c594db80ccee -r 84aba7419b17 script/record_mic/record_mic.as
--- a/script/record_mic/record_mic.as Tue Jun 05 12:49:37 2012 +0200
+++ b/script/record_mic/record_mic.as Tue Jun 05 13:51:02 2012 +0200
@@ -1,1 +1,1 @@
-package {
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.events.AsyncErrorEvent;
import flash.events.ErrorEvent;
import flash.events.ActivityEvent;
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.text.TextField;
import flash.system.Security;
import flash.media.Microphone;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.utils.getTimer;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarDirection;
import fl.controls.ProgressBarMode;
import flash.utils.Timer;
import flash.events.TimerEvent;
import fl.controls.Slider;
import fl.events.SliderEvent;
public class record_mic extends MovieClip {
private var t:TextField;
private var r:SimpleButton;
private var s:Sprite;
private var p:Sprite;
private var urlServer:String = "rtmp://media.iri.centrepompidou.fr/ddc_micro_record";
private var nc:NetConnection;
private var ns:NetStream;
private var ns2:NetStream;
private var mic:Microphone;
private var filename:String;
private var recordStopped:Boolean = false;
// Draw mic feedback
private var pb:ProgressBar;
private var activityCurve:Sprite;
private var micGain:Slider;
// Variables for the activity curve
private var xInc:int = 0;
private var xSpeed:int = 2;
private var activityWidth:Number;
// Intervals used to draw the curve et keep track of the duration of the recording
private var drawCurve:Number;
private var timecodeInterval:Number;
private var timecode:Number = 0;
public function record_mic() {
// constructor code
Security.allowDomain("*");
Security.allowInsecureDomain("*");
//t = _t;
r = _recordBtn;
s = _stopBtn;
p = _playBtn;
pb = _pb;
activityWidth = _act.width;
activityCurve = _act._activityCurve;
micGain = _micGain;
trace("t = " + t + ", r = " + r + ", s = " + s + ", p = " + p + ", pb = " + pb);
//r.buttonMode = r.useHandCursor =
s.buttonMode = s.useHandCursor = p.buttonMode = p.useHandCursor = true;
pb.mode = ProgressBarMode.MANUAL;
r.addEventListener(MouseEvent.CLICK, startRecord);
s.addEventListener(MouseEvent.CLICK, stopRecord);
p.addEventListener(MouseEvent.CLICK, playRecord);
}
private function startRecord(e:MouseEvent=null):void{
trace("startRecord nc = " + nc);
if (nc==null){
trace(" startRecord 2");
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler, false, 0, true);
nc.addEventListener(IOErrorEvent.IO_ERROR, errorHandler, false, 0, true);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler, false, 0, true);
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler, false, 0, true);
nc.connect(urlServer);
}
else{
publish();
}
}
private function errorHandler(e:*=null):void {
trace("errorHandler");
closeStream();
}
private function closeStream():void{
trace("closeStream");
if(ns!=null){
trace(" ns.close()");
ns.close();
ns = null;
}
}
private function netStatusHandler(event:NetStatusEvent):void {
trace("netStatusHandler : " + event.info.code);
switch (event.info.code) {
case 'NetConnection.Connect.Success':
publish();
break;
case 'NetConnection.Connect.Failed':
case 'NetConnection.Connect.Reject':
case 'NetConnection.Connect.Closed':
//closeStream();
break;
}
}
// send data over rtmp
private function publish():void {
trace("publish (ns==null && nc!=null && nc.connected) = " + (ns==null && nc!=null && nc.connected));
if(nc!=null && nc.connected) {
trace(" publish 2");
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler, false, 0, true);
ns.addEventListener(IOErrorEvent.IO_ERROR, errorHandler, false, 0, true);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler, false, 0, true);
// informs the server to record what it receives
// in fact file name is passed as the user name (the server is meant to record everything it has to in a file named from the user name)
filename = "r_" + now();
trace("filename = " + filename);
ns.publish(filename, 'record');
mic = Microphone.getMicrophone(-1);
mic.rate = 22;
micGain.minimum = 0;
micGain.maximum = 100;
micGain.value = mic.gain = 50;
micGain.addEventListener(SliderEvent.CHANGE, onSliderChange);
// mic.addEventListener(ActivityEvent.ACTIVITY, activity);
mic.addEventListener(ActivityEvent.ACTIVITY, runMicActivity);
mic.setUseEchoSuppression(true);
ns.attachAudio(mic);
}
}
// stop the recording of audio to the stream
private function stopRecord(e:*=null):void{
trace("stopRecord (ns!=null) = " + (ns!=null));
if(ns!=null){
trace(" stopRecord 2");
recordStopped = true;
ns.play(false); // flushes the recording buffer
ns.close();
}
}
// plays back the audio that was recorded
private function playRecord(e:*=null):void{
trace("playRecord (ns!=null && recordStopped) = " + (ns!=null && recordStopped));
if(recordStopped){
trace(" playRecord 2");
ns2 = new NetStream(nc);
ns2.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler2, false, 0, true);
ns2.addEventListener(IOErrorEvent.IO_ERROR, errorHandler2, false, 0, true);
ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler2, false, 0, true);
ns2.play(filename);
}
}
private function netStatusHandler2(event:NetStatusEvent):void {
trace("netStatusHandler 2 : " + event.info.code);
}
private function errorHandler2(e:*=null):void {
trace("errorHandler 2");
closeStream2();
}
private function closeStream2():void{
trace("closeStream 2");
/*if(ns2!=null){
trace(" ns.close()");
ns2.close();
ns2 = null;
}*/
}
// Now in string
private function now():String{
var d:Date = new Date();
var m:uint = d.month + 1; // because Date.month begins at 0
return d.fullYear + (m<10?("0"+m):m) + (d.date<10?("0"+d.date):d.date) + (d.hours<10?("0"+d.hours):d.hours) + (d.minutes<10?("0"+d.minutes):d.minutes) + (d.seconds<10?("0"+d.seconds):d.seconds);
}
// sets the module ready to record mic activity changes
private function runMicActivity(event:ActivityEvent):void {
trace("runMicActivity");
addEventListener(Event.ENTER_FRAME, showMicActivity);
// Start activity curve feedback, every second
activityCurve.graphics.clear();
activityCurve.graphics.lineStyle(1, 0xc4c4c4, 1);
activityCurve.graphics.moveTo(0, 20);
activityCurve.graphics.beginFill(0xc4c4c4, 100);
xInc = 0;
activityCurve.x = 1;
var tmr:Timer = new Timer(1000, 1000);
tmr.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
tmr.addEventListener(TimerEvent.TIMER, drawSoundCurve);
tmr.start();
}
// updates the progress bar relating to mic activity
private function showMicActivity(e:Event):void {
//trace("showMicActivity res = " + (mic.activityLevel*mic.gain/100));
//pb.setProgress(mic.activityLevel*mic.gain/100 ,100);
pb.setProgress(mic.activityLevel,100);
}
// updates the actiity curve relating to mic activity
private function drawSoundCurve(e:TimerEvent):void {
trace("drawSoundCurve mic.activityLevel = " + mic.activityLevel + ", mic.gain = " + mic.gain + ", h = " + (19*mic.activityLevel/100));
activityCurve.graphics.lineTo(xInc, 19 - (19*mic.activityLevel/100));
activityCurve.graphics.lineTo(xInc, 19);
if(xInc>activityWidth){
activityCurve.x -= xSpeed;
}
xInc += xSpeed;
}
private function onTimerComplete(e:TimerEvent):void {
trace("onTimerEnd");
}
// Updates mic gain
private function onSliderChange(e:SliderEvent):void {
trace("onSliderChange");
mic.gain = micGain.value;
}
}
}
\ No newline at end of file
+package {
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.events.AsyncErrorEvent;
import flash.events.ErrorEvent;
import flash.events.ActivityEvent;
import flash.events.Event;
//import flash.events.TimerEvent;
import flash.media.Microphone;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.system.Security;
import flash.text.TextField;
//import flash.utils.Timer;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarMode;
import fl.controls.Slider;
import fl.events.SliderEvent;
import flash.utils.setInterval;
public class record_mic extends MovieClip {
private var t:TextField;
private var r:SimpleButton;
private var p:Sprite;
private var urlServer:String = "rtmp://media.iri.centrepompidou.fr/ddc_micro_record";
private var nc:NetConnection;
private var ns:NetStream;
private var ns2:NetStream;
private var mic:Microphone;
private var filename:String;
private var recordRunning:Boolean = false;
private var recordStopped:Boolean = false;
// Draw mic feedback
private var pb:ProgressBar;
private var activityCurve:Sprite;
private var micGain:Slider;
// Variables for the activity curve
private var xInc:int = 0;
private var xSpeed:int = 2;
private var activityWidth:Number;
// Intervals used to draw the curve et keep track of the duration of the recording
private var drawCurve:Number;
private var timecodeInterval:Number;
private var timecode:Number = 0;
public function record_mic() {
// constructor code
Security.allowDomain("*");
Security.allowInsecureDomain("*");
//t = _t;
r = _recordBtn;
p = _playBtn;
pb = _pb;
activityWidth = _act.width;
activityCurve = _act._activityCurve;
micGain = _micGain;
trace("t = " + t + ", r = " + r + ", p = " + p + ", pb = " + pb);
micGain.visible = p.visible = pb.visible = _act.visible = false;
//r.buttonMode = r.useHandCursor =
p.buttonMode = p.useHandCursor = true;
pb.mode = ProgressBarMode.MANUAL;
r.addEventListener(MouseEvent.CLICK, startRecord);
p.addEventListener(MouseEvent.CLICK, playRecord);
}
private function startRecord(e:MouseEvent=null):void{
trace("startRecord nc = " + nc + ", recordRunning = " + recordRunning);
if(!recordRunning){
if (nc==null){
trace(" startRecord 2");
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler, false, 0, true);
nc.addEventListener(IOErrorEvent.IO_ERROR, errorHandler, false, 0, true);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler, false, 0, true);
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler, false, 0, true);
nc.connect(urlServer);
}
else{
publish();
}
}
else{
// If record is running, we stop it
stopRecord();
}
}
private function errorHandler(e:*=null):void {
trace("errorHandler");
closeStream();
}
private function closeStream():void{
trace("closeStream");
if(ns!=null){
trace(" ns.close()");
ns.close();
ns = null;
}
}
private function netStatusHandler(event:NetStatusEvent):void {
trace("netStatusHandler : " + event.info.code);
switch (event.info.code) {
case 'NetConnection.Connect.Success':
publish();
break;
case 'NetConnection.Connect.Failed':
case 'NetConnection.Connect.Reject':
case 'NetConnection.Connect.Closed':
//closeStream();
break;
}
}
// send data over rtmp
private function publish():void {
trace("publish (ns==null && nc!=null && nc.connected) = " + (ns==null && nc!=null && nc.connected));
if(nc!=null && nc.connected) {
trace(" publish 2");
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler, false, 0, true);
ns.addEventListener(IOErrorEvent.IO_ERROR, errorHandler, false, 0, true);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler, false, 0, true);
// informs the server to record what it receives
// in fact file name is passed as the user name (the server is meant to record everything it has to in a file named from the user name)
filename = "r_" + now();
trace("filename = " + filename);
recordRunning = true;
ns.publish(filename, 'record');
mic = Microphone.getMicrophone(-1);
mic.rate = 22;
micGain.minimum = 0;
micGain.maximum = 100;
micGain.value = mic.gain = 50;
micGain.addEventListener(SliderEvent.CHANGE, onSliderChange);
mic.addEventListener(ActivityEvent.ACTIVITY, runMicActivity);
mic.setUseEchoSuppression(true);
ns.attachAudio(mic);
micGain.visible = p.visible = pb.visible = _act.visible = true;
}
}
// stop the recording of audio to the stream
private function stopRecord(e:*=null):void{
trace("stopRecord (ns!=null) = " + (ns!=null));
if(ns!=null){
trace(" stopRecord 2");
recordRunning = false;
recordStopped = true;
ns.play(false); // flushes the recording buffer
ns.close();
}
}
// plays back the audio that was recorded
private function playRecord(e:*=null):void{
trace("playRecord (ns!=null && recordStopped) = " + (ns!=null && recordStopped));
if(recordStopped){
trace(" playRecord 2");
ns2 = new NetStream(nc);
ns2.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler2, false, 0, true);
ns2.addEventListener(IOErrorEvent.IO_ERROR, errorHandler2, false, 0, true);
ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler2, false, 0, true);
ns2.play(filename);
}
}
private function netStatusHandler2(event:NetStatusEvent):void {
trace("netStatusHandler 2 : " + event.info.code);
}
private function errorHandler2(e:*=null):void {
trace("errorHandler 2");
closeStream2();
}
private function closeStream2():void{
trace("closeStream 2");
/*if(ns2!=null){
trace(" ns.close()");
ns2.close();
ns2 = null;
}*/
}
// Now in string
private function now():String{
var d:Date = new Date();
var m:uint = d.month + 1; // because Date.month begins at 0
return d.fullYear + (m<10?("0"+m):m) + (d.date<10?("0"+d.date):d.date) + (d.hours<10?("0"+d.hours):d.hours) + (d.minutes<10?("0"+d.minutes):d.minutes) + (d.seconds<10?("0"+d.seconds):d.seconds);
}
// sets the module ready to record mic activity changes
private function runMicActivity(e:ActivityEvent):void {
trace("runMicActivity");
mic.removeEventListener(ActivityEvent.ACTIVITY, runMicActivity);
addEventListener(Event.ENTER_FRAME, showMicActivity);
// Start activity curve feedback, every second
activityCurve.graphics.clear();
activityCurve.graphics.lineStyle(1, 0xc4c4c4, 1);
activityCurve.graphics.moveTo(0, 20);
activityCurve.graphics.beginFill(0xc4c4c4, 100);
xInc = 0;
activityCurve.x = 1;
setInterval(drawSoundCurve, 100);
/*var tmr:Timer = new Timer(1000, 1000);
tmr.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
tmr.addEventListener(TimerEvent.TIMER, drawSoundCurve);
tmr.start();*/
}
// updates the progress bar relating to mic activity
private function showMicActivity(e:Event):void {
//trace("showMicActivity res = " + (mic.activityLevel*mic.gain/100));
//pb.setProgress(mic.activityLevel*mic.gain/100 ,100);
pb.setProgress(mic.activityLevel,100);
}
// updates the actiity curve relating to mic activity
private function drawSoundCurve():void {
if(recordRunning){
trace("drawSoundCurve recordRunning = " + recordRunning + ", mic.activityLevel = " + mic.activityLevel + ", mic.gain = " + mic.gain + ", h = " + (19*mic.activityLevel/100));
activityCurve.graphics.lineTo(xInc, 19 - (19*mic.activityLevel/100));
activityCurve.graphics.lineTo(xInc, 19);
if(xInc>activityWidth){
activityCurve.x -= xSpeed;
}
xInc += xSpeed;
}
}
// Updates mic gain
private function onSliderChange(e:SliderEvent):void {
trace("onSliderChange");
mic.gain = micGain.value;
}
}
}
\ No newline at end of file
diff -r c594db80ccee -r 84aba7419b17 script/record_mic/record_mic.swf
Binary file script/record_mic/record_mic.swf has changed
diff -r c594db80ccee -r 84aba7419b17 script/record_mic/record_mic/DOMDocument.xml
--- a/script/record_mic/record_mic/DOMDocument.xml Tue Jun 05 12:49:37 2012 +0200
+++ b/script/record_mic/record_mic/DOMDocument.xml Tue Jun 05 13:51:02 2012 +0200
@@ -120,12 +120,11 @@
-
-
+
@@ -164,7 +163,7 @@
]]>
-
+
@@ -199,7 +198,7 @@
-
+
]]>
@@ -207,7 +206,7 @@
-
+
@@ -219,14 +218,6 @@
-
-
-
-
-
-
-
-
@@ -552,26 +543,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff -r c594db80ccee -r 84aba7419b17 script/record_mic/record_mic/LIBRARY/StopBtn.xml
--- a/script/record_mic/record_mic/LIBRARY/StopBtn.xml Tue Jun 05 12:49:37 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff -r c594db80ccee -r 84aba7419b17 script/record_mic/record_mic/META-INF/metadata.xml
--- a/script/record_mic/record_mic/META-INF/metadata.xml Tue Jun 05 12:49:37 2012 +0200
+++ b/script/record_mic/record_mic/META-INF/metadata.xml Tue Jun 05 13:51:02 2012 +0200
@@ -5,8 +5,8 @@
xmlns:xmp="http://ns.adobe.com/xap/1.0/">
Adobe Flash Professional CS5
2012-06-01T15:13:14+02:00
- 2012-06-05T12:39:22+02:00
- 2012-06-05T12:39:22+02:00
+ 2012-06-05T13:24:49+02:00
+ 2012-06-05T13:24:49+02:00
@@ -15,7 +15,7 @@
- xmp.iid:F77F1174072068118C14CD09EB1E427B
+ xmp.iid:ED7F1174072068118A6DA8FBD6380496
xmp.did:F77F11740720681188C6EA8C8D268D08
xmp.did:F77F11740720681188C6EA8C8D268D08
@@ -43,6 +43,12 @@
2012-06-01T15:13:14+02:00
Adobe Flash Professional CS5
+
+ created
+ xmp.iid:ED7F1174072068118A6DA8FBD6380496
+ 2012-06-01T15:13:14+02:00
+ Adobe Flash Professional CS5
+
diff -r c594db80ccee -r 84aba7419b17 script/record_mic/record_mic/bin/SymDepend.cache
Binary file script/record_mic/record_mic/bin/SymDepend.cache has changed