Accueil > Microphone -Utilisation du microphone de votre PC |
version v4 |
12/11/2006 |
SONOMETRE v1-Lecture Microphone et enregistrement/lecture des données , avec Mtasc et E-anim by El'vieux |
||
|
Une démo sur l'utilisation du microphone (de l'excellent jean-louis
gaujal ): http://www.flash-france.com/fla.php?op=viewfilm&film_id=449 Explications: Ce prog (version démo,chaque fichier fait 3minutes donc 180 lectures de 1sec) sert a enregistrer les sons venant du microphone, il prend une "mesure" toutes les 200 millisecondes (avec SetInterval ).Toutes les 5 mesures, une moyenne est faite. Dans le "pavé bleu" a gauche sont représentés les mesures sous forme de bargraphes,1 par seconde, Cette moyenne (donc une donnée pour une seconde) est rangée dans un tableau .Dès que le compteur de données arrive à 180 ( 180 fois 1seconde), un fichier est enregistré sur le disk dur (avec ShareObjet) sous le nom "fichier+index" (donc "fichier0" ,"fichier1" etc.., avec le pavé 'lecture" on peut revoir ces données, dans les paves vert du bas, Pour voir les données enregistrer, cliquer sur les "-" ou "+" ,si le fichier existe,le pavé vert du bas affiche la représentation de l'enregistrement. la date ,l'heure et une partie des datas s'affiche sous le pavé vert. Pour démarrer : cliquez sur "RAZ" , ensuite "START",si votre micro est branché ,faites du bruit !! les bargraphes bleus doivent s'afficher toutes les secondes. Il est possible que flash player affiche sa fenêtre de paramètres. choisissez votre entrée micro, et s'il vous demande la taille fichier , dites "1mo",cela suffit. Nota:
Comme dab, je laisses toujours les variables apparentes,vous pouvez
les cacher. |
|
fichier batch micromin1.bat: E:\mtasc\mtasc -swf micromin1.swf -main micromin1.as
fichier phi
|
micromin1.as: import flash.display.BitmapData; import flash.display.Bitmap; import MovieClip; import flash.TextField; import Microphone.*; import Sound.*; class micromin1{ static var intervalId:Number; static var amp:Number; // résultat lecture du micro static var cpt:Number; //compteur une minute static var moy:Number; // pour faire la moyenne pour 1 sec static var cpts:Number; //compteur une seconde static var cptt1:Number; //cpt a 10 avant de faire moyenne pour 1seconde static var cpt_enr:Number; //compteur enregistrement static var init:Number; //pour initialiser des valeurs static var m:Microphone = Microphone.get(); // déclaration du micro static var table:Array = new Array(); // table pour 1 seconde,10 val pour 1s static var table1:Array = new Array(); // table pour les secondes 60 vals pour 1min static var fichier:String; //nom du fichier a enregistrer static var incr:Number; static var tempor:String; static var my_str:String ; //variable tempo pour récupération chaine string //-------------------------------------------- function micromin1() { if (_root.init !=11){ // initialisation _root.init=11; _root.cpt=0;_root.cpts=0;_root.moy=0; _root.cptt1=0;_root.cpt_enr=0; _root.var1_text = (_root.cpts); for(var i = 0; i < 5 ; i++) { // boucle pour 1 seconde=5 lecture table[i]=0; // table pour 1 seconde }//fin boucle for for(var i = 0; i < 60 ; i++) { // boucle pour 1 minute=60 fois 1sec table1[i]=0; // table pour 1 minute }//fin boucle for incr = 0; } // fin initialisation //----------AUDIO --------------------------- _root.createEmptyMovieClip("audio_mc",99500); _root.m = Microphone.get(); _root.audio_mc.attachAudio(m); //La suppression de l'écho vise à réduire les effets de la réaction //acoustique créée lorsque le son qui sort du haut-parleur est capté //par le microphone sur le même ordinateur _root.m.setUseEchoSuppression(false); //Cadence à laquelle le microphone doit capturer le son, en kHz. //Les valeurs acceptables sont 5, 8, 11, 22 et 44 _root.m.setRate(5); //Définit le niveau d'entrée minimal devant être considéré comme du son et (éventuellement) //la durée de silence indiquant le début du silence. _root.m.setSilenceLevel(1); //Quantité d'augmentation que le microphone applique au signal pour le //renforcer. Les valeurs valides sont comprises entre 0 et 100. //La valeur par défaut est 50 _root.m.setGain(50); // gain pour micro, 50=Normal intervalId = setInterval(this, "tempo", 200);// tempo }// fin fonction micro //-------------------------------------------------------------- function tempo(){ if (_root.start_text==1){ //Une valeur numérique spécifiant le volume sonore détecté par le //microphone. Les valeurs sont comprises entre 0 (aucun son n'est //détecté) et 100 _root.amp = _root.m.activityLevel; //lecture micro table[_root.cptt1]=_root.amp; // enregistre toutes les 100milli _root.moy=_root.moy+(table[_root.cptt1]); //addition des valeurs _root.cptt1=_root.cptt1+1; //increment cpt 1 seconde //-------------------------------------------------------------- // moyenne pour 1 seconde if (_root.cptt1>=4){ // si cpt = 5 lectures de 200millisec _root.moy=Math.round(_root.moy/5); // moyenne des 5 valeurs if (_root.moy<10){ // si nombre plus petit que 10 _root.tempor ="0"+String(_root.moy); // ajoute un "0" devant le chiffre }else{ _root.tempor =String(_root.moy); } _root.top_text =_root.tempor; //remonte contenu de la moyenne vers eanim table1[_root.cpt]=_root.tempor; // table 1 minute _root.cpt=_root.cpt+1; //increment cpt 1sec _root.cptt1=0; _root.moy=0; // raz des variables }//fin if calcul moyenne sur 1 seconde //-------------------------------------------------------------- _root.cpten_text=String(_root.cpt); //remonte temps en cours vers eanim if (_root.cpt>=180){ // test si 180 enreg _root.message4_text="*"; //raz de la variable qui sera écrite for(var i = 0; i < 180 ; i++) { // boucle pour 1 minute=60 fois 1sec _root.message4_text=_root.message4_text+table1[i]+"/"; }//fin boucle for _root.message4_text=_root.message4_text+"*"; // Pour faire une fin de fichier var nom:String; nom = "fichier"+ String(incr); //le fichier a enregistrer +val enregistre(nom) // appel la macro qui enregistre le fichier _root.cpt=0 ; incr = incr +1; //raz cpt de 1min,incre du cpt pour 30mn }//fin du if updateAfterEvent() //remet a jour si inteval() a été trop long } // fin du if start==1 }//fin fonction tempo //===================================================================== static function enregistre(nom) { _root.message1_text=nom; // affichage du nom qui vient de s'enregistrer _root.cpt_enr=_root.cpt_enr+1; // increment du compteur d'enregistrement _root.cptenr_text=String(_root.cpt_enr); // affiche le nombre d'enregistrement var valeur = SharedObject.getLocal(nom); //crée l'objet shareobjet valeur.data.valeur1 = _root.message3_text+" "; //val1=date et heure valeur.data.valeur2 = _root.message4_text; //val2=datas séparés par / valeur.flush(); //écris les valeurs dans le fichier .sol } // fin fonction enregistre //===================================================================== static function lecture(texte) { //lecture d'un fichier enregistré fichier= "fichier"+ String(texte); var valeur = SharedObject.getLocal(fichier); // ouverture du fichier _root.fichier0_text=(valeur.data.valeur1); //dépose lecture date/heure dans eanim _root.fichier1_text=(valeur.data.valeur2); //dépose lecture datas dans eanim my_str =_root.fichier0_text; //recup fichier avec les datas _root.ficdat_text=my_str.substr(0,5); //recup date valeur 1 _root.ficheu_text=my_str.substr(6,8); //recup date valeur 1 my_str =_root.fichier1_text; //recup fichier avec les datas for(var i = 0; i <= 180 ; i++) { //transfert les vals vers les vars eanim _root["v"+(String(i))+"_text"]=my_str.substr(i+(i*2)+1,2); } // boucle for //===================================================================== } // fin fonction lecture //===================================================================== static function main() { var t = new micromin1();} }// fin class |
|