Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2007, 20h13   #1
Invité régulier
 
Inscription : mai 2005
Messages : 42
Détails du profil
Informations personnelles :
Âge : 20

Informations forums :
Inscription : mai 2005
Messages : 42
Points : 6
Points : 6
Envoyer un message via MSN à Kalyptus
Par défaut Faire un equalizer

Bonsoir !
Voila, je souhaiterais créer un equalizer avec AS3, sans utiliser de logiciel tiers. Je sais qu'il faut surement utiliser computeSpectrum();, mais avec computeSpectrum j'arrive (enfin, Jeanphi arrive) à faire qqchose comme ça avec des barres :


Or c'est pas tout à fait ça un equalizer !
Ce que je voudrais faire c'est une comme la visualisation "Barres" du Windows Media Player, c'est à dire ça :



Pour info, voila le code AS3 de Jeanphi pour le premier exemple, bien mais pas parfait :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Code:
var son:Sound = new Sound();
var ba:ByteArray = new ByteArray();
var tab:Array = new Array();
for (var i=0; i<50; i++) {
	var bar:Barre = new Barre();
	tab.push(bar);
	addChild(bar);
	bar.x =i*11;
	bar.y=200;
}
son.load(new URLRequest("test.mp3"));
sc = son.play();
this.addEventListener(Event.ENTER_FRAME, spectre);
function spectre(event:Event) {
	SoundMixer.computeSpectrum(ba,false,0);
	for (var i=0; i<50; i++) {
		pow = ba.readFloat();
		pow = Math.abs((pow * 400));
		tab[i].height= pow;
	}
}
Je l'ai simplifié au maximum
Dernière chose, si VRAIMENT vous ne comprenez pas ce que je cherche à faire, il y a un exemple sur cette page MAIS il a été créé avec un soft tiers, ce que je ne veux PAS faire :

http://www.flashkit.com/movies/Effec...8801/index.php

Merci infiniment d'avance et bonne semaine
Kalyptus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 23h06   #2
Invité régulier
 
Inscription : mai 2005
Messages : 42
Détails du profil
Informations personnelles :
Âge : 20

Informations forums :
Inscription : mai 2005
Messages : 42
Points : 6
Points : 6
Envoyer un message via MSN à Kalyptus
UP ! Yen a marre, sur 5 forums différents personne est capable de me dire si c'est faisable ??



...



Pas taper
Kalyptus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 05h48   #3
Membre Expert
 
Avatar de jean philippe
 
Inscription : septembre 2006
Messages : 2 062
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2 062
Points : 2 075
Points : 2 075
Envoyer un message via MSN à jean philippe Envoyer un message via Skype™ à jean philippe
du calme....
il me semble que tu as pas mal de sources maintenant
donc à toi de mettre un peu les mains dans le cambouis

PS : évite les post comme le dernier : "Y en a marre, etc...."
merci
__________________
mon Blog
jean philippe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 00h50   #4
Inactif
 
Avatar de CR_Gio
 
Inscription : septembre 2005
Messages : 1 196
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 1 196
Points : 1 201
Points : 1 201
Bonsoir tout le monde

Citation:
[...]5 forums différents personne est capable de me dire si c'est faisable ??


... en tout cas, je compte sur toi pour nous aider a trouver la réponse En plus si c'est agrémenté d'un exemple alors là


__________________
"ne reproche pas a ton voisin ce qu'il peux te reprocher" (Nouveau Proverbe)
CR_Gio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 07h55   #5
Membre Expert
 
Avatar de jean philippe
 
Inscription : septembre 2006
Messages : 2 062
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2 062
Points : 2 075
Points : 2 075
Envoyer un message via MSN à jean philippe Envoyer un message via Skype™ à jean philippe
CR_Gio, il a déjà été posté plusieurs exemples... à lui de peaufiner maintenant
__________________
mon Blog
jean philippe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 23h27   #6
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Salut,

Pour afficher le spectre en fréquence au lieu de la représentation temporelle il faut mettre le deuxième parametre de computeSpectrum à true :

Code :
SoundMixer.computeSpectrum(ba, true, 0);
Les valeurs entre 0 et 255 correspondent au canal droit et de 256 à 512 au canal gauche.
Voilà un petit exemple qui dessine directement en utilisant un objet graphics :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import flash.display.Graphics;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
 
const PLOT_HEIGHT:int = 300;
const PLOT_WIDTH:int = 800;
const CHANNEL_LENGTH:int = 256;
const BAR_WIDTH:Number = PLOT_WIDTH/CHANNEL_LENGTH;
const COLOR_RANGE:Number = 255/1.42;
 
addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
var bytes:ByteArray = new ByteArray();
 
function onEnterFrame(event:Event):void
{
    SoundMixer.computeSpectrum(bytes, true, 0);
 
    var g:Graphics = this.graphics;
 
    g.clear();
 
    var n:Number = 0;
 
    // left channel
    for (var i:int = 0; i < CHANNEL_LENGTH; i++) 
    {
        n = bytes.readFloat()*COLOR_RANGE;
		g.beginFill(n << 16);
        g.drawRect(i*BAR_WIDTH, 0, BAR_WIDTH, PLOT_HEIGHT);
		g.endFill();
    }
à adapter évidement mais tu vois l'idée ...
Le problème avec ton code actuel (en plus du 2é paramètre de computeSpectrum à mettre à true) c'est qu'il ne lis que 50 fois avec readFloat(). Si tu veux faire un spectre complet il faudrait utiliser les 255 valeurs
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h06.


 
 
 
 
Partenaires

Hébergement Web