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.
agrandir le projet :  =>Projet ==>Dimension et mettre hauteur 600,pour retrouver le reste des variables

Accès aux Téléchargements

fichier batch
micromin1.bat:
E:\mtasc\mtasc -swf micromin1.swf -main micromin1.as

 

fichier phi
dans le zip

 

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