Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux
Développement 2D, 3D et Jeux Forum développement 2D, 3D et Jeux. Avant de poster : Les FAQs Programmation 2D, 3D et Jeux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 15/02/2013, 01h13   #1
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 372
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 372
Points : 39 569
Points : 39 569
Par défaut Démonstration WebGL : Echotron

Démonstration WebGL : Echotron
un moteur d'animations dépendantes de la musique pour votre navigateur

Echotron est un programme WebGL pour les navigateurs compatibles, créé par Alex Wayne pour visualiser la musique.
Certes, ce n'est pas le premier dans le genre mais celui-ci se diffère dans l'utilisation d'un fichier produit par le site www.echonest.com et permet de faire une visualisation en réponse à la sémantique de la musique (et non aux simples changements du spectre).


Il faut savoir qu'après analyse du fichier sonore par Echonest, le site vous fournira un énorme fichier JSON avec les métadonnées détaillées de la musique. Il contient le rythme, les mesures, les sections et même les notes avec le moment de leur apparition, leur durée et la tonalité.

Voici un exemple :
Code javascript :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
  "beats": [
    {
      "start": 0.06643,
      "duration": 0.467,
      "confidence": 0.83
    },
    { "more": "beat data..." }
  ],
 
  "segments": [
    {
      "start": 101.28803,
      "duration": 0.24649,
      "confidence": 1,
      "loudness_start": -28.726,
      "loudness_max_time": 0.0313,
      "loudness_max": -7.937,
      "pitches": [
        0.499,
        0.965,
        0.35,
        0.689,
        0.351,
        0.123,
        0.264,
        0.791,
        1,
        0.084,
        0.048,
        0.077
      ],
      "timbre": [
        42.176,
        -12.167,
        -120.179,
        -7.085,
        -2.676,
        53.153,
        -9.249,
        22.261,
        17.864,
        12.085,
        41.372,
        -14.442
      ]
    },
    { "more": "segment data..." }
  ]
}

Pour en savoir plus, n'hésitez pas à consulter ce PDF.


La seconde particularité du logiciel est son extensibilité. En effet, il est possible d'écrire de nouvelles animations avec très peu de code. Chaque scène est décomposée en trois calques :
  • fond (Background) : affiché en premier sur tout le cadre ;
  • milieu (Midground) : affiché en second, généralement les textures et les parures ;
  • premier plan (Foreground) : affiché en dernier, généralement pour tous les objets animés et le centre.

Tout le reste (initialisation, musique…) est géré par le moteur rendant la création d'une nouvelle scène très rapide. Le code suivant affiche un cube qui tourne et qui change de couleur à chaque battement :
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
# Les classes de votre calque doivent être
# affectées à module.exports dans le style de node.js
module.exports = class Example extends Echotron.Echo
 
  # Initialise le calque. Appelée pour vous lorsque
  # le calque est créé
  initialize: ->
 
    # Crée un mesh étant un simple cube
    @mesh = new THREE.Mesh(
      new THREE.CubeGeometry(10, 10, 10)
      new THREE.MeshBasicMaterial()
    )
 
    # Ajoute le cube au calque
    @add @mesh
 
  # Appelée à chaque trame, met à jour les objets du calque
  # comme vous le voulez
  update: (elapsed) ->
 
    # Dans ce cas, tourne le cube d'un radian par seconde
    # suivant chaque axe.
    @mesh.rotation.x += elapsed
    @mesh.rotation.y += elapsed
    @mesh.rotation.z += elapsed
 
  # Appelée à chaque battement de la musique. Utilisez la pour changer
  # l'état et pour montrer sa réaction aux battements
  onBeat: ->
 
    # Dans ce cas, change la couleur du cube aléatoirement
    @mesh.material.color = new THREE.Color().setRGB(
      Math.random(), Math.random(), Math.random()
    )
Pour conclure sur une belle note, le code d'Echotron est disponible sur GitHub.

Testez Echotron !


Source


BeautifulPixel


Votre opinion


Avez-vous déjà développé des programmes affichant des animations dépendantes de la musique ? Montrez-les nous !
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 30
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h38.


 
 
 
 
Partenaires

Hébergement Web