TONETZ

laboratoire de composition

Notations : maj7 m7 7 m7b5 dim7 sus4 add9 b5

Contrepoint — 1ʳᵉ espèce

Sélectionne un accord pour générer la seconde voix.

Export
Analyse contextuelle & substitutions
Chaos contrôlé

0 = 4/4 classique · 100 = imprévisible (free jazz)

Variation par piste

Bruit rose + marche aléatoire avec mémoire : chaque mesure découle de la précédente. Clique le piano roll pour éditer une note.

Piano roll
Charger un morceau
Glisse un fichier audio ici
ou clique pour parcourir

MP3 · WAV · OGG · M4A — tout est analysé localement, rien n'est envoyé.

Réglages d'analyse

Plus haut = détecte davantage d'accords (et de bruit).

Plus haut = accords plus longs, transitions plus rares.

Charge un morceau pour commencer.

Export
Suite d'accords détectée

Clique un bloc pour sauter à cet endroit du morceau. La tête de lecture suit l'audio.

Grilles guitare des accords du morceau

Triés par durée cumulée. Clique un diagramme pour entendre l'accord ; il s'illumine quand il joue.

Comment ça marche

TONETZ réunit trois assistants de composition qui ne font rien « au hasard » : chaque proposition s'appuie sur des règles de théorie musicale ou sur un modèle de hasard structuré. Voici, en détail, ce qui se passe sous le capot.

Module 01

Harmonie — substitution d'accords & contrepoint

1 · Lecture de la grille

Tu écris une suite d'accords entre barres verticales, par ex. | Cmaj7 | Am7 | Dm7 | G7 |. Chaque symbole est décomposé en fondamentale (la lettre, plus l'altération #/b) et qualité (maj7, m7, 7, m7b5, dim7, sus4, add9, b5…). L'accord est alors traduit en classes de hauteurs (les notes, de 0 à 11) : Cmaj7 → C E G B.

2 · Détection automatique de la tonalité

Pour proposer des substitutions pertinentes et non aléatoires, l'outil doit d'abord savoir dans quelle tonalité tu es. Il utilise l'algorithme Krumhansl-Schmuckler :

  • il compte la présence de chaque note dans toute la grille (la fondamentale de chaque accord pèse plus lourd) → un histogramme sur 12 notes ;
  • il compare cet histogramme aux 24 « profils » de référence (12 majeurs + 12 mineurs) issus d'études de perception ;
  • la tonalité dont le profil corrèle le mieux gagne. Sur l'exemple ci-dessus → Do majeur.

Chaque accord reçoit alors son degré (chiffre romain : I, ii, V…), qui décrit sa fonction dans la tonalité.

3 · Les 5 règles de substitution

Pour chaque accord, l'outil applique des règles d'harmonie réelle, attribue un score de pertinence (bonus si la cible reste diatonique à la tonalité) et un indice de tension ◗ (plus l'accord s'éloigne, plus c'est tendu) :

RèglePrincipeExemple
Triton (SubV)Remplace une dominante par celle située à un triton — elles partagent la 3ᶜᵉ et la 7ᵉ, donc la même tension à résoudre.G7 → Db7
b5 modalAccord bâti sur la quinte diminuée : couleur planante, empruntée aux modes (Lydien b5 / Locrien).Cmaj7 → Gbmaj7
VoisinsApproche chromatique par le demi-ton supérieur ou inférieur ; glisse vers l'accord cible.Cmaj7 → Bmaj7 / Dbmaj7
MédianteSubstitut partageant l'essentiel des notes (III, VI, relatif) → même fonction, transition douce.Cmaj7 → Em7 / Am7
Modal ShiftEmprunt au mode parallèle : bascule majeur↔mineur sur la même fondamentale.Cmaj7 → Cm7

Les trois meilleures propositions (score décroissant) s'affichent sous chaque accord. Clique-en une pour l'écouter et l'insérer dans la grille ; re-clique pour annuler.

4 · Génération du contrepoint (1ʳᵉ espèce)

Quand tu sélectionnes un accord, TONETZ écrit une seconde voix note contre note :

  • un cantus firmus est tiré de la gamme de l'accord (Ionien, Mixolydien, Dorien… selon sa famille), avec un contour qui part et revient sur la fondamentale ;
  • au-dessus, la voix ne retient que des consonances : tierces, sixtes, octaves — jamais de notes hors gamme ;
  • le mouvement contraire est privilégié, les quintes et octaves parallèles sont interdites, et les petits intervalles mélodiques favorisés ;
  • la cadence finale est forcée : avant-dernière note sur une 6ᵗᵉ/3ᶜᵉ qui se résout sur l'octave par mouvement contraire.

Le tout est dessiné sur une portée (Canvas) — la voix de contrepoint en couleur, le cantus firmus en encre — avec l'intervalle indiqué sous chaque paire de notes. Le bouton ▶ joue les deux voix simultanément.

5 · Diagrammes guitare

Le bouton 🎸 Guitare affiche, sous chaque accord, un diagramme de manche en accordage standard (mi-la-ré-sol-si-mi). Le doigté n'est pas mémorisé d'une table : un moteur de voicing explore toutes les positions jouables et retient la meilleure selon plusieurs critères :

  • la fondamentale à la basse (la corde la plus grave sonne la tonique) ;
  • la couverture de toutes les notes de l'accord ;
  • une position basse sur le manche, des cordes à vide, un empan de main raisonnable (≤ 4 cases) et peu de cordes étouffées au milieu.

Lecture du diagramme : × = corde étouffée, = corde à vide, les points = doigts posés ; un numéro à gauche indique la case de départ quand l'accord est plus haut sur le manche. Le diagramme reflète l'accord effectif : si tu choisis une substitution, il montre le doigté de celle-ci. Clique un diagramme pour entendre l'accord.

6 · Export

Copie la grille modifiée en texte, joue-la en arpèges, ou exporte en JSON (grille d'origine, grille modifiée, analyse complète avec degrés et substitutions).

Module 02

Rythme — batteries non-répétitives par chaos contrôlé

1 · L'idée : du hasard structuré

Un générateur naïf tire chaque frappe à pile ou face : le résultat sonne mécanique et incohérent. TONETZ combine plusieurs ingrédients pour produire des grooves vivants mais musicaux.

2 · Le curseur Chaos (0 → 100)

0Pattern 4/4 ultra classique : kick sur 1 & 3, snare sur 2 & 4, charleston aux croches. Rien d'aléatoire — la boucle se répète.
~50Ghost notes, légers décalages, variations de charley : le groove respire sans perdre le fil.
100Placements imprévisibles, remplissages, ride émergent : presque free jazz.

Le Chaos pilote l'amplitude de toutes les déviations ci-dessous.

3 · Bruit rose plutôt que bruit blanc

Les décisions rythmiques sont tirées d'un générateur de bruit rose (algorithme de Voss-McCartney). Contrairement au bruit blanc — où chaque instant est indépendant — le bruit rose a un spectre en 1/f : les valeurs sont corrélées dans le temps. Concrètement, les événements se regroupent en motifs plutôt que de se disperser au hasard, ce qui rend les événements rares plus marquants et plus naturels à l'oreille.

4 · Marche aléatoire avec mémoire

Chaque nouvelle mesure découle de la précédente. Trois « états » évoluent par petits pas d'une mesure à l'autre (marche aléatoire) :

  • le mode du charleston (croches → doubles → triolets) ;
  • le décalage de placement du snare (±1 double-croche) ;
  • la densité de ghost notes du kick.

Résultat : pas de rupture brutale entre les mesures, mais une évolution continue. Une garde-fou garantit qu'aucune mesure n'est identique à la précédente dès que Chaos > 0.

5 · Le rôle de chaque piste

  • Kick — ancré sur les temps forts, variations subtiles (ghost notes douces).
  • Snare — sur 2 & 4, avec micro-déplacements de placement et ghost notes.
  • Hi-Hat — densité micro-variable : croches, doubles ou triolets selon la mesure.
  • Tom — remplissages cohérents (suites de notes), surtout en fin de phrase (mesures 4, 8…).
  • Crash / Ride — accent sur les changements de section (toutes les 4 mesures) ; un motif de ride apparaît à haut Chaos.

Deux réglages dosent tout ça : la Densité globale (Faible / Moyenne / Élevée) fixe la quantité de frappes ; le niveau de variation par piste dose combien chacune s'écarte du classique.

6 · Le groove : humanize, vélocité, swing

  • Humanize — un léger décalage temporel aléatoire (± jusqu'à 20 ms, 8 par défaut) sur chaque frappe : la machine cesse d'être « carrée ».
  • Vélocité gaussienne — l'intensité de chaque coup suit une courbe de Gauss (accents plus forts sur les temps, ghosts faibles), pour un relief naturel.
  • Swing / Shuffle — de 50 % (binaire, droit) à 75 % (shuffle prononcé) : la croche médiane de chaque temps est retardée vers le placement ternaire.

Astuce technique : la grille interne tourne à 12 subdivisions par temps — le plus petit dénominateur commun des doubles-croches (×3) et des triolets (×4). C'est ce qui permet de mélanger les deux dans une même mesure.

7 · Piano roll & édition

Les 5 pistes s'affichent en lignes (Canvas). Chaque note est colorée selon sa vélocité : vert = faible → rouge = fort, et sa hauteur reflète aussi l'intensité. La tête de lecture défile pendant le jeu. Clique une case pour ajouter/retirer une note, ou re-génère une seule mesure (correction locale) sans toucher au reste.

8 · Export MIDI

Le bouton Exporter MIDI écrit un vrai fichier .mid (Standard MIDI File, canal 10 = batterie) directement dans le navigateur, avec le mapping General MIDI : Kick 36, Snare 38, Hi-Hat 42, Tom 45, Crash 49 — vélocités et timing inclus. Ouvrable dans n'importe quel DAW. (Le son, lui, est synthétisé en direct par Tone.js.)

Module 03

Analyse d'accords — du fichier audio à la grille

Ce module fait le chemin inverse des deux premiers : au lieu d'écrire une grille, tu charges un morceau (MP3, WAV, OGG, M4A) et TONETZ en extrait la suite d'accords, puis affiche pour chacun son diagramme guitare. Le décodage et l'analyse se font entièrement dans le navigateur via la Web Audio API.

1 · Décodage & ré-échantillonnage

Le fichier est décodé en signal brut, mixé en mono, puis ré-échantillonné à 11 025 Hz (moyenne par blocs = anti-aliasing léger). On garde ainsi tout le contenu harmonique utile (jusqu'à ~5 kHz) tout en divisant le calcul par quatre.

2 · Le chromagramme

Le signal est découpé en fenêtres glissantes de 8192 échantillons (≈ 0,74 s), fenêtrées par une fenêtre de Hann et transformées par une FFT (Cooley-Tukey radix-2, écrite à la main). Pour chaque fenêtre, chaque raie fréquentielle est repliée sur l'une des 12 classes de hauteurs (chroma) via note = 69 + 12·log₂(f/440) : on additionne l'énergie de tous les Do, de tous les Do♯, etc., sans tenir compte de l'octave. Résultat : une suite de vecteurs à 12 dimensions décrivant la couleur harmonique au fil du temps.

3 · Reconnaissance par gabarits

Chaque vecteur chroma est comparé à une banque de gabarits d'accords (majeur, mineur, diminué, 7, maj7, m7 — pour les 12 fondamentales) par similarité cosinus. L'accord dont le gabarit corrèle le mieux gagne ; en-dessous d'un seuil (réglé par la Sensibilité) ou en cas de silence, la trame est marquée « sans accord ». Les triades sont très légèrement favorisées pour éviter d'inventer des septièmes sur une harmonie ambiguë (bouton Septièmes ON/OFF).

4 · Lissage & segmentation

Les accords trame-par-trame sont bruités. Un vote majoritaire glissant (réglé par le Lissage) stabilise la suite, les trames consécutives identiques sont fusionnées en segments datés, et les segments trop courts sont absorbés par leur voisin le plus long. On obtient une grille lisible avec, pour chaque accord, son instant de début et de fin.

5 · Restitution & export

Les segments s'affichent sur une timeline (largeur ∝ durée) ; la tête de lecture suit le morceau et illumine l'accord courant. La tonalité est estimée par le même algorithme Krumhansl-Schmuckler que le module Harmonie. Les accords uniques sont rendus en diagrammes guitare (moteur de voicing du module 01), triés par durée cumulée. Enfin, tu peux copier la grille, l'exporter en JSON (avec les temps et la confiance), ou l'envoyer directement au module Harmonie pour l'analyser et la ré-harmoniser.

L'analyse audio est par nature approximative : un mixage dense, beaucoup de percussions ou des accords étendus peuvent tromper la détection. Joue sur la Sensibilité et le Lissage pour affiner — l'outil donne une excellente première transcription à corriger à l'oreille.

Tout tourne dans ton navigateur — aucune donnée n'est envoyée à un serveur.