Documentations et Dossiers Création d'un visualiseur de spectre audio Flash CS4+
But:
Création d'une représentation visuelle d'un fichier audio, en cours de lecture, en exploitant des données butes de l'onde sonore.
Comment:
En utilisant la loi de fourrier http://fr.wikipedia.org/wiki/Conduction_thermique
Explication:
Dans un premier temps vous chargez un fichier MP3 externe au fichier FLA en utilisant les classes Sound, SoundChannel & URLRequest, ce qui permettra de garder la taille SWF au final au minimum, et de changer ce fichier audio sans devoir à ouvrir le logiciel flash.
Voici le code
Normalement le code n'est pas lisible par Notepad++, mais voici son codage pour ceux qui voudrait y trifouiller desssus. Il y a assez d'explications pour comprendre le fonctionnement.
Vous pouvez télécharger les fichiers sources ici
Voici l'effet donnée, mettez une musique n'importe laquelle dans votre navigateur et le fichier s'activera
Edité par hight_tower Le 21/04/2012 à 10h42
Création d'une représentation visuelle d'un fichier audio, en cours de lecture, en exploitant des données butes de l'onde sonore.
Comment:
En utilisant la loi de fourrier http://fr.wikipedia.org/wiki/Conduction_thermique
Explication:
Dans un premier temps vous chargez un fichier MP3 externe au fichier FLA en utilisant les classes Sound, SoundChannel & URLRequest, ce qui permettra de garder la taille SWF au final au minimum, et de changer ce fichier audio sans devoir à ouvrir le logiciel flash.
Voici le code
Normalement le code n'est pas lisible par Notepad++, mais voici son codage pour ceux qui voudrait y trifouiller desssus. Il y a assez d'explications pour comprendre le fonctionnement.
Code TEXT :
//Variable var son:Sound; var sc:SoundChannel; var ba:ByteArray = new ByteArray; var fourrier:Boolean = false; var contenant:Sprite; var distanceEntreBarres:Number; var couleur: int; //Initialisation if (!stage) { addEventListener(Event.ADDED_TO_STAGE, init); } else { init(null); } function init(e:Event):void { //Nettoyage if (hasEventListener (Event.ADDED_TO_STAGE)) { removeEventListener(Event.ADDED_TO_STAGE, init); } //Ecouteur d'évènement REMOVED_FROM_STAGE addEventListener(Event.REMOVED_TO_STAGE, removed); //Paramètres de la scene stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; //Contenant pour le spectre contenant = new Sprite (); contenant.y = stage.staheHeight * .5; addChild(contenant); //Distance entre chaque barre en fonction de la largeur de la scene distanceEntreBarres = stage.stageWidth / 256; //Charger et démarrer l'audio son = new Sound(new URLRequest("audio.mp3")); sc = son.play; sc.addEventListener(Event.SOUND_COMPLETE,audioTermine); //Créer un écouteur de l'évènement RESIZE attache à la scène stage.addEventListener(Event.RESIZE, resizeHandler); //Créer un écouteur de l'évènement ENTER_FRAME attache à la scène stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } //Fonction délechée par l'écouteur d'évènemen RESIZE function resizeHandler(e:Event):void { contenant.y = stage.stageHeight * .5; distanceEntreBarres = stage.stageWidth / 256; } //Fonction déclenchée par l'écouteur d'évènement ENTER_FRAME function enterFrameHandler (e;Event):void; { SoundMixer.computeSpectrum (ba, fourrier); //Déterminer une couleur au hasard couleur = Match.random() * 0xFFFFFF; //Dessiner une barre contenant.graphics.clear(); contenant.graphics.lineStyle(1, couleur); //Variable pour le for loop, a remettre à zéro à chaque passage vari:int=0; //Variable pour la taille de chaque barre var waveHeight:Number; //Variable pour la position horizontale de chaque barre var xPso:Number; //Créer la boucle qui nous prmet de dessiner toutes les barres for (i; i < 256; i++) { //Calculer la taille de chaque barre en fonction des données du ByteArray waveHeight = (ba.readFloat() * contenant.y); //Calculer la position horizontale de chaque barre xPos = distanceEntreBarres * 1; //Positionner le début de la ligne horizontale contenant.graphics.moveTo(xPos, 0); //Dessiner la ligne contenant.graphics.lineTo(xPos, waveHeight); } //Fonction déclenchée lorsque l'audio est terminé function audioTermine(e:Event):void(remove.EventListener(Event.ENTER_FRAME, enterFrameHandler); } //Fonction déclenchée lorsque l'application est retiré de la scene function removed (e:Event):void { removeEventListener(Event.REMOVED_FROM_STAGE, removed); remodeEventListener(Event.ENTER_FRAME, enterFrameHandler); son.close(); son = null(); sc.stop(); sc = null; }
Vous pouvez télécharger les fichiers sources ici
Voici l'effet donnée, mettez une musique n'importe laquelle dans votre navigateur et le fichier s'activera
Edité par hight_tower Le 21/04/2012 à 10h42
Coucou Highty,
Effectivement, c'est pas mal du tout !! Seul soucis, j'ai réussi à aller voir le swf, parce que j'ai édité ton post pour voir le lien
là ==> http://www.battlefieldiens.com/Telechargement/PHPBoost/Autres/Spectre/Fichiers/Fichiers%20source/spectre_audio_final.swf
Tu as un espace aussi dans le nom du dossier Fichiers%20source et sur CsN l'hurl sous cette forme ne passe pas
Tu pourras éditer mon sujet si nécessaire
Effectivement, c'est pas mal du tout !! Seul soucis, j'ai réussi à aller voir le swf, parce que j'ai édité ton post pour voir le lien
là ==> http://www.battlefieldiens.com/Telechargement/PHPBoost/Autres/Spectre/Fichiers/Fichiers%20source/spectre_audio_final.swf
Tu as un espace aussi dans le nom du dossier Fichiers%20source et sur CsN l'hurl sous cette forme ne passe pas
Tu pourras éditer mon sujet si nécessaire
Voici le lien de visualisation: http://www.battlefieldiens.com/Telechargement/PHPBoost/Autres/Spectre/Fichiers/Fichiers_source/spectre_audio_final.swf
C est fait dit moi quoi !! Edité par hight_tower Le 21/04/2012 à 14h05
Ça fait rien ... Tu dois avoir une protection de la bande passante sur ton serveur ou un truc du genre , je suis pas calée dans ce domaine, mais via le lien c'est impec ! Merci beaucoup
Par contre chose amusante pour moi .. lorsque j'ouvre le lien dans un nouvelle onglet sans y aller et que je reste sur le sujet, le flash passe ..
Par contre chose amusante pour moi .. lorsque j'ouvre le lien dans un nouvelle onglet sans y aller et que je reste sur le sujet, le flash passe ..
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie