# Gavotte de l’Aven · v2

Cyclonium · 28 octobre 2026 · Composer par dépôts, compléter sans effacer.

## Ce qui change

La page démarre sur une pièce vide. Le bouton Exemple généré fabrique une proposition à partir des règles et de la graine. Il n’existe plus de tableau de progression harmonique fixé dans créer. On peut écrire la première et la dernière mesure avant les intermédiaires, puis compléter uniquement la couche souhaitée.

Les palettes présentent les deux modes, les accords, les sept rythmes et les notes écrites. Sur grand écran, les 32 mesures sont disposées en huit colonnes et quatre rangées. Chaque case possède une bande d’harmonie, une de rythme et une de notes. Sur les écrans plus étroits, la grille passe à quatre colonnes pour préserver des cibles utilisables.

## Déposer et sélectionner

Glisser une tuile sur la bande correspondante. L’alternative au glisser-déposer est : cliquer la tuile, puis sa destination. Le bouton Outil : sélection ou Échap désarme l’outil. Un clic sur la grille sélectionne alors simplement la mesure. Pour écrire une altération particulière, sélectionner une note dans l’établi sous la grille, choisir lettre, altération, octave, puis Écrire.

Une tuile de mode posée sur l’harmonie conserve les degrés et tailles d’accords présents, en les réinterprétant dans ce mode. Elle ne transpose pas silencieusement les notes mélodiques. Une tuile d’accord ne change que son emplacement. Deux accords dans une mesure durent chacun une noire ; cette v2 ne propose pas encore de découpage harmonique en trois durées inégales.

## Reconnaître les décisions

● signifie déposé manuellement ; ◇ généré ; ↥ importé ; · non écrit. Le générateur préserve toujours les éléments manuels et importés. Reproposer aussi les éléments générés permet de réviser seulement ses propres propositions. Une mesure protégée du générateur reste intégralement inchangée lors de ces opérations ; les gestes manuels restent autorisés.

Les opérations sont annulables, y compris les imports, la création d’une pièce vide et le changement de forme. L’historique conserve 60 états dans la session, pas dans le fichier JSON. Enregistrer le projet avant de fermer : il n’y a pas de sauvegarde automatique persistante.

## Lecture rapide du panneau

Déposer contient les palettes ; Générer contient les critères et les commandes par couche ; Modes compare et réinterprète les modes ; Échanger contient les sorties sonores et les fichiers. Les contrôles fins de contraste et liaison réduisent leur sensibilité avec la distance verticale du pointeur.

# A · D’où viennent les progressions ?

## Rectification sur la première version

La suite de v1 était un canevas écrit à la main par l’assistant. Le début I–IV–V7–I et sa transposition au second mode n’étaient ni une demande de Vincent Lesbros, ni le résultat d’un générateur harmonique. Les parties suivantes avaient également été choisies explicitement. Seule la mélodie faisait alors l’objet d’une génération. Cette distinction aurait dû être annoncée.

## Un générateur de candidats explicite

La v2 énumère les triades des deux modes, et éventuellement leurs septièmes. Un mode posé manuellement limite les candidats de la mesure à ce mode. Sans mode imposé, un mode cible alterne entre les groupes en forme Gavotte ; en forme AABB, A vise le premier mode et B le second. Aucun ordre de degrés n’est imposé.

Pour chaque emplacement à compléter, on compte la proportion h des hauteurs de l’accord présentes dans l’autre mode, les notes partagées avec les accords voisins déjà écrits, et l’éventuelle répétition du même accord. Les réglages de contraste et liaison sont divisés par 100 avant application.

Score = aléa [0,2[ + 1,8 × mode cible + 3c(1−h) + 3lh

          + (0,2 + 0,8l) × notes communes aux voisins

          − 1,8 × répétition immédiate + 3 × ancrage sur I

c est actif dans la partie A et l dans la partie B. Les indicateurs mode cible, répétition et ancrage valent 0 ou 1. L’ancrage n’intervient qu’au début des groupes et lorsque l’option est cochée. C’est une préférence, pas une obligation. L’aléa est reproductible à graine, compteur de variation et état identiques.

## La fin peut être écrite avant le début

Le voisin de droite déjà composé participe au score. Une conclusion écrite manuellement reste intacte et influence ainsi le remplissage adjacent. La génération est séquentielle de gauche à droite : ce n’est pas une optimisation globale de toute la phrase ni une preuve de conduite harmonique optimale.

La conclusion ouverte propose une paire de hauteurs communes si elle existe et si aucun mode manuel ne l’interdit. Les options Tonique du mode 1 ou 2 proposent le degré I correspondant. Ces règles ne remplacent jamais un accord manuel ou importé. Sans sonorité commune disponible, la conclusion ouverte revient au classement ordinaire des candidats.

## Une loi de composition, pas une loi physique

Les coefficients sont des choix explicites de cet instrument. On peut les discuter, les modifier dans le module et comparer leurs effets. La v2 ne contient pas encore une grammaire de cadences ou un éditeur universel de règles ; elle fournit une base testable pour l’atelier harmonique de 1-2-3 Soleil.

# D · F · Construire dans le désordre

## Trois couches indépendantes

Une mesure peut avoir un mode sans accord, un accord sans rythme, un rythme sans notes, ou des notes en attente d’un rythme. Aucun contenu caché n’est inventé à l’écoute. Les accords seuls restent jouables sans rythme mélodique : ils sont tenus pendant leur durée harmonique. Une mesure vide consomme tout de même ses deux temps.

Les notes sont conservées dans deux réservoirs, un par voix. Tant que le rythme est absent, elles ne sont pas jouées. Quand il est posé, ses durées donnent les attaques. Les emplacements manquants restent muets ; un silence choisi est conservé comme objet distinct. Retirer le rythme ne supprime pas les notes.

Changer de rythme conserve les notes par numéro d’emplacement. Si le nouveau rythme offre moins de positions, les notes excédentaires restent en réserve et ne sont pas jouées. Un message le signale. Il ne s’agit pas d’un recalage automatique sur leurs anciens temps d’attaque ; cette autre opération pourrait être ajoutée séparément.

## Provenance et protections

La provenance est portée par emplacement d’accord, par rythme et par note. Un accord manuel dans une mesure à deux accords peut être préservé tandis que l’autre emplacement est complété. Les notes manuelles restent protégées quand on repropose les autres notes. Effacer explicitement un élément le rend de nouveau disponible pour une proposition.

La mesure protégée du générateur empêche aussi de remplir ses trous. Une reprise liée partage cette protection et ses données avec la source. Déposer dans une reprise liée modifie donc également la source ; Délier rend cette occurrence indépendante.

## Deux formes

Gavotte : a, b, a, b′ puis c, c′, c″, d, chaque groupe sur quatre mesures. La deuxième apparition de a est liée à la première. b′, c′ et c″ sont des positions formelles indépendantes ; leur nom ne signifie pas qu’un algorithme dérive systématiquement toutes leurs notes d’un motif parent.

AABB : A sur huit mesures, reprise liée de A, B sur huit mesures, reprise liée de B. La grille représente toujours les 32 mesures effectivement jouées. Un changement de forme déplie les anciens liens puis établit les nouveaux : les reprises prennent le contenu de leur source. Cette opération est annulable.

La métrique reste 2/4. L’exemple des jigs motive la structure répétée et le contre-chant, mais il ne justifie pas de traiter une jig en 6/8 comme une suite en 2/4. Une extension de métrique demandera d’autres rythmes, des accents et une grille temporelle explicitement adaptés.

# B · C · H · Écouter et croiser les voix

## Écoute indépendante

Les cases Mélodie, Contre-chant et Accords sont indépendantes : on peut entendre seulement l’accompagnement, une seule voix, les deux voix sans accords ou l’ensemble. À partir d’ici commence à la mesure sélectionnée et continue jusqu’à la fin. Cette mesure, Partie A, Partie B et Toute la pièce restent disponibles.

Un changement d’édition ou de destination arrête l’écoute pour éviter un écart entre ce qui est affiché et ce qui est déjà programmé. Les cases non écrites restent muettes sans raccourcir l’extrait. Les notes résonnant avant le début de l’extrait ne sont pas reconstruites : l’écoute part des événements de sa première mesure.

## Synthétiseur externe

Connecter les sorties MIDI demande l’autorisation Web MIDI au navigateur, sans accès SysEx. Choisir ensuite le port de sortie et trois canaux distincts. Le programme du synthétiseur n’est pas changé par défaut. L’option Piano GM envoie explicitement le programme 0 MIDI aux trois canaux choisis.

La planification utilise des messages datés avec l’horloge performance.now. Stop vide les messages en attente et éteint les notes sur les canaux affectés à l’atelier, sans toucher aux autres canaux. Une déconnexion arrête la lecture. Web MIDI demande un contexte sécurisé et un navigateur compatible ; un refus d’autorisation est affiché. Le fichier MIDI reste disponible indépendamment de cet accès matériel.

## Contre-chant

Activer Deux voix mélodiques conserve une seule structure, une seule harmonie et un rythme partagé par mesure. Seules les notes sont différentes. Le sélecteur de voix choisit celle représentée dans la troisième bande de la grille. Désactiver la seconde voix la rend muette, mais ne supprime pas ses notes.

Le générateur de contre-chant privilégie un registre sous la mélodie, les tierces et sixtes, les petits déplacements et les mouvements contraires. Il pénalise les quintes ou octaves parallèles successives. Les choix manuels priment. Ces pénalités ne garantissent pas l’absence de toutes les fautes de contrepoint ; les croisements peuvent notamment rester possibles en cas de registre contraint.

Les deux voix ont les mêmes attaques dans cette première approche. Des rythmes simplement corrélés mais distincts, des suspensions et des décalages demanderaient une couche supplémentaire. La voix principale et le contre-chant sont exportés séparément dans le MIDI et l’ABC ; MusicXML les distingue comme deux voix sur la portée supérieure du piano.

# E · G · Des échanges séparés

## Grille compacte

La sortie Grille seule ne contient ni titre, ni commentaire, ni notes de mélodie. Les mesures sont séparées par / et deux accords d’une même mesure par un espace simple. Les noms restent français : Lam, Rém, Fa#, Sib, etc. Le bouton Copier préserve les espaces.

Une mesure vide correspond à un champ vide entre deux /. Dans une mesure à deux emplacements dont un seul est écrit, l’espace initial ou final conserve sa place réservée. Cette convention est documentée pour Cyclonium ; la façon dont un autre logiciel interprète ces champs vides doit être vérifiée. Une sonorité de liaison sans fondamentale unique s’écrit par exemple (Mi,Do#), et non comme un faux accord augmenté.

La documentation Myriad confirme l’usage de / pour séparer les mesures d’une ligne d’accords. Cette v2 n’a toutefois pas été testée par import réel dans Harmony Assistant. Les sonorités non usuelles, les accords modaux sans symbole standard et les grilles incomplètes ne sont donc pas annoncés comme universellement compatibles.

## ABC, MusicXML et MIDI

ABC 2.1 fournit la partition : voix distinctes, notes, accords simultanés, durées, altérations et symboles harmoniques. L’unité est 1/16 et les altérations de chaque note sont explicites. Les accords textuels sont portés par la voix d’accompagnement, ce qui préserve un changement d’accord sous une note longue de mélodie.

MusicXML conserve les deux portées de piano et deux voix éventuelles sur la portée supérieure. Le MIDI type 1 comporte une piste de tempo et une piste par couche active : mélodie, contre-chant éventuel, basse et accords. Les trous deviennent des silences dans les partitions et une absence d’événements MIDI. Seul le JSON garde la différence entre non écrit et silence choisi.

## Contrat pour 1-2-3 Soleil

Le format cyclonium-sequence-harmonique version 1 transporte titre, métrique, tempo, modes, forme et 32 mesures. Chaque mesure porte sa durée, son lien de reprise, son mode éventuel, son verrou et les emplacements d’accords. Un accord contient identifiant, mode, degré, nombre de notes, masque absolu et notes écrites.

Les durées sont entières avec quatre divisions par noire : huit divisions par mesure de 2/4. Les notes mélodiques et leurs rythmes ne sont pas imposés par ce contrat harmonique. Gavotte sait exporter et recharger ce format ; l’importeur et l’éditeur correspondants dans 1-2-3 Soleil restent à développer. Il s’agit d’un point de communication concret, pas d’une intégration déjà effective.

Le projet complet reste cyclonium-gavotte-aven version 2. Les projets v1 sont migrés : leur contenu devient importé et protégé des générateurs. L’import est vérifié avant remplacement de l’état courant et peut être annulé.

# Implémentation et vérifications

## Modules

musique.js définit les modes, les documents partiels, les générateurs, les événements et la migration v1. exports.js écrit les formats et lit le contrat harmonique. son.js gère le piano local, les sorties Web MIDI et la planification. atelier.js gère palettes, transactions, historique et panneaux. Les fichiers JavaScript sont remis en forme et les fonctions propres au projet sont commentées en français.

Le modèle garde sa précision temporelle : quatre unités par noire, huit par mesure. Les notes gardent lettre, altération et octave. Les masques de modes sont relatifs à leur fondamentale ; les masques d’accords du contrat sont absolus, origine Do. Le CPU calcule ces quelques centaines d’événements ; aucun GPU, AudioWorklet ou Worker n’est nécessaire à cette version.

## Vérifications effectuées

Les tests vérifient : document vide muet, notes en attente, accords indépendants du rythme, déterminisme à graine identique, variation avec la graine, protection des données manuelles/importées, verrou de mesure, reprises AABB, migration v1 et aller-retour du contrat harmonique.

Un lecteur Python indépendant vérifie les durées et hauteurs des fichiers MIDI, MusicXML et ABC, y compris les silences, notes pointées, graphies enharmoniques et trois couches sonores. Les tests d’interface simulée exercent dépôts par couche, annulation, génération, choix de voix, extrait depuis la sélection et imports atomiques.

Un test instrumente la frontière Web MIDI : demande sans SysEx, filtre des voix, canaux distincts, messages horodatés, programme facultatif, arrêt et déconnexion. Il ne remplace pas un essai sur un synthétiseur matériel.

## Limites de la recette

L’infrastructure de prévisualisation navigateur reste indisponible dans cet environnement. Le glisser-déposer réel, le tactile, le débit sonore et le synthétiseur externe restent à tester sur appareil. Les partitions n’ont pas été ouvertes ici dans un éditeur musical : leurs structures et événements ont été contrôlés par des lecteurs indépendants, pas par ces logiciels.

## Références de formats

Web MIDI API, W3C, consulté le 28 octobre 2026 : https://www.w3.org/TR/webmidi/ . API de ports, autorisations et messages horodatés ; son statut publié est Working Draft.

ABC notation standard 2.1 : https://abcnotation.com/wiki/abc:standard:v2.1/ . Notes, durées, silences, accords et voix.

Myriad, Ligne d’accord : https://www.myriad-online.com/resources/docs/melody/francais/chordline.htm . Séparation textuelle des mesures et notation des accords ; pas de validation annoncée d’un import matériel de nos fichiers.

MusicXML 4.0, W3C : https://www.w3.org/2021/06/musicxml40/tutorial/notation-basics/ . Les principes de notation utilisés restent ceux de v1.
