# Orange galactique 1.1

Vincent Lesbros / Cyclonium — 16 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.2**. La version 2.0 non modifiée ne sait pas importer un maillage explicite.

La page autonome `orangeGalactique.1.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.2 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.

## Mode Donut (1.1)

Le sélecteur Construction conserve Orange et ajoute Donut. Chaque prélèvement fournit une période complète sur une section du tube. Le réglage Épaisseur du tube agit sur le rapport a/R. Les bornes des fragments restent identiques quand on change de mode.

Pour theta autour de la section et phi autour de l'anneau :

    rho(theta, phi) = a * (1 + relief * w(theta, phi))
    x = (R + rho*cos(theta))*cos(phi)
    y = (R + rho*cos(theta))*sin(phi)
    z = rho*sin(theta)

R = 0.75 ; a/R varie de 0.10 à 0.48. Avec relief <= 0.9 et |w| <= 1, rho reste positif et inférieur à R : le trou central reste ouvert. Aucune pondération polaire sin² n'est appliquée.

M prélèvements donnent M sections principales, avec trois subdivisions angulaires par intervalle. Les périodes voisines sont interpolées linéairement, y compris la dernière vers la première. La finesse N désigne ici le nombre de points d'une section entière. V = 3*M*N, F = 2*V et la caractéristique d'Euler vaut 0. Les indices rebouclent dans les deux directions. La jonction est continue, sans garantir une dérivée continue.

Le JSON contient le maillage ainsi que la méthode, les périodes et les paramètres de fabrication. Les exports OBJ et PNG portent le nom du mode. Le JSON se charge dans Morphosynthèse 2.2. Le retour d'une recette dans Orange pour l'éditer reste une extension future.
