# Orange galactique 1.0

Vincent Lesbros / Cyclonium — 14 octobre 2026

Un atelier de fabrication de volumes à partir de sons. Les sons réels fournissent une matière géométrique ; l'objectif n'est pas de restituer le fichier original.

## Utilisation

1. Charger un fichier audio compatible avec le navigateur, ou garder la démonstration.
2. Choisir une zone par glissement sur la forme d'onde ou par saisie des bornes.
3. Choisir « Périodes proposées » ou « Fragments libres », puis « Répartir dans la zone ».
4. Sélectionner une carte pour écouter et modifier ses bornes. Les flèches déplacent cette paire dans l'ordre angulaire.
5. Régler les paires de méridiens, la finesse et le relief. Les curseurs deviennent plus précis quand le doigt s'éloigne verticalement ; les champs numériques permettent une saisie exacte.
6. « Emporter le volume » produit un JSON à ouvrir avec « Recharger » dans **Morphosynthèse 2.1**. La version 2.0 non modifiée ne sait pas importer un maillage explicite.

La page autonome `orangeGalactique.1.html` contient tous les scripts et styles ; elle peut être ouverte localement. La lecture et le décodage des sons utilisent les API audio du navigateur après une action de l'utilisateur. Aucun fichier audio n'est envoyé à un serveur. L'import limite la taille compressée à 100 Mo ; les fichiers décodés occupent davantage de mémoire. Sur téléphone, privilégier des extraits courts.

## Construction mathématique

Une période w(theta), centrée puis normalisée, fournit un contour méridien complet. Pour une orientation phi :

    r(theta) = 1 + alpha * sin(theta)^2 * w(theta)
    p(theta) = r(theta) * (sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta))

Avec |w| <= 1 et 0 <= alpha <= 0.9, le rayon reste positif. Le facteur sin² annule relief et pente aux pôles. La première moitié donne un méridien nord-sud ; la seconde donne le méridien opposé, relu à l'envers pour le maillage nord-sud.

M fragments produisent 2M méridiens, uniformément répartis en azimut. Trois intervalles angulaires sont construits entre deux méridiens voisins par interpolation linéaire des rayons. Les pôles sont deux sommets uniques. La finesse est le nombre de points par méridien, pôles compris. Le maillage contient :

    V = 2 + (finesse - 2) * (2 * M * 3)
    F = 2 * (finesse - 2) * (2 * M * 3)

Il est fermé, orienté et de caractéristique d'Euler 2. Le rayon positif définit une surface continue étoilée ; le maillage est son approximation polygonale. Les tests vérifient les incidences et l'extraction d'une coupe. Le contrôle d'import n'est pas une certification générale d'absence d'auto-intersection pour des fichiers externes quelconques.

## Sélection sonore

L'autocorrélation locale propose un cycle entre 45 et 1 000 Hz. Le calcul utilise une sous-sélection temporelle pour limiter son coût ; il peut se tromper sur des signaux riches, aigus, bruités, polyphoniques ou transitoires. L'indice de ressemblance ne constitue pas une mesure de confiance statistique. Les bornes restent modifiables. La recherche d'un passage montant par la moyenne aligne approximativement le début proposé, sans modifier la durée détectée.

Le mode libre utilise une durée choisie. La fermeture périodique d'un fragment non périodique est une transformation ; il ne faut pas l'interpréter comme l'extraction certaine d'un cycle physique.

Chaque fragment est rééchantillonné en `2*(finesse-1)` positions par interpolation linéaire, puis centré. Le gain commun conserve les différences de niveaux crêtes entre fragments ; le gain individuel les supprime. Le son de contrôle lit les échantillons originaux du canal choisi avec un gain réduit et des fondus. Un fragment est répété pendant 1,5 seconde : sa fermeture peut s'entendre.

La finesse ne garantit pas une conservation de toutes les fréquences du fichier. Aucun rééchantillonneur audio à bande limitée ni récupération exacte du son source n'est revendiqué.

## Format d'échange

Recette `cyclonium.morphosynthese`, version 2, extension `geometrie.methode = "maillage-explicite-v1"`.

- `sommets` : triplets x/y/z, coordonnées du modèle.
- `facettes` : triplets d'indices, orientés vers l'extérieur pour les oranges.
- `fabrication` : paramètres, source, canal, zone, fragments datés, échantillons rééchantillonnés et gains.
- `pose` et `parametres` : valeurs initiales pour Morphosynthèse.

Les échantillons retenus sont inclus : le son original n'est pas nécessaire pour conserver le volume. Orange 1.0 exporte cette recette ; la réouverture de la recette pour la modifier dans Orange est une extension future. Morphosynthèse 2.1 peut la charger, explorer ses coupes et la sauvegarder à nouveau.

## Sources

- `construction.js` : analyse locale, rééchantillonnage et maillage, sans DOM.
- `rotations.js` : rotations et transformations, reprises du moteur Morphosynthèse.
- `rendu-volume.js` : rendu WebGL commun, palette orange.
- `atelier.js` : gestes, fichier audio, sélection, commandes et export.
- `interface.css`, `index.html` : interface responsive.
- `construire.py` : page autonome et archive des sources.
- `tests-construction.cjs` : géométrie, périodicité, silence, refus des maillages ouverts et coupe par le moteur Morphosynthèse.

Vérification : tests numériques et tests d'intégration avec doubles du DOM. Le contrôle de navigateur n'était pas disponible pendant cette livraison ; le rendu WebGL réel et les codecs audio nécessitent donc un essai sur les appareils visés.
