Feu d'artifice — le spectacle pyrotechnique audio-réactif
La scène Feu d'artifice est la plus spectaculaire de Scenifly. Des fusées s'élancent vers le ciel et explosent en gerbes de particules colorées, déclenchées par les beats détectés dans votre musique YouTube. Chaque explosion est unique, physiquement simulée, avec des traînes lumineuses qui persistent dans la nuit.
La détection de beat
Un algorithme de détection de beat analyse en continu les basses fréquences du signal audio. Quand l'énergie dépasse un seuil adaptatif (basée sur la différence d'amplitude entre deux frames consécutives), une fusée est lancée. Plus le beat est fort, plus la fusée monte haut avant d'exploser. Un cooldown de 300ms empêche les lancements multiples en rafale.
La physique du feu d'artifice
Chaque fusée monte depuis le bas de l'écran en laissant une traîne de braises. Arrivée à son apex (calculé selon l'intensité du beat), elle explose en 150 à 300 particules qui se dispersent dans toutes les directions. Chaque particule subit la gravité, perd de la vitesse par friction et voit sa luminosité décroître naturellement jusqu'à s'éteindre.
Les couleurs sont attribuées aléatoirement depuis une palette de feux d'artifice classiques : rouge doré, blanc scintillant, vert émeraude, bleu roi, argent, violet royal. Les particules brillent via un halo gaussien sur CanvasTexture, donnant l'illusion d'éclat réel.
La nuit de Scenifly
Le fond est un ciel nocturne semé d'étoiles fixes qui servent de repères de profondeur. Les explosions illuminent momentanément ce ciel, créant des halos de lumière diffuse. Quand plusieurs fusées explosent en même temps — lors des crescendos musicaux — le ciel s'embrase en un barrage pyrotechnique.
Technologie
Chaque fusée : traîne de 40 Points avec CanvasTexture halo gaussien. Chaque explosion : 150–300 particules supplémentaires. Beat detection : (bass - prevBass > 0.12) AND (bass > 0.25) avec cooldown 300ms. Physics : intégration Euler avec gravité constante et friction multiplicative par frame. BufferGeometry DynamicDrawUsage pour les mises à jour GPU par frame. Apex calculé selon distance = apexY - startY, duration = 40–70 frames.