From 5d227c8ac90bfa07ceb1cb6a031d02f946c2edd7 Mon Sep 17 00:00:00 2001 From: lrdlg Date: Thu, 16 Jul 2026 14:37:03 +0200 Subject: [PATCH] Chordlab V2.0 - initial --- .DS_Store | Bin 0 -> 6148 bytes README.md | 96 +++ TUTORIEL_DEPLOIEMENT_COOLIFY.md | 170 +++++ TUTORIEL_UTILISATION.md | 236 ++++++ chordlab.html | 958 +++++++++++++++++++++++ files.zip | Bin 0 -> 11268 bytes index.html | 1268 +++++++++++++++++++++++++++++++ 7 files changed, 2728 insertions(+) create mode 100644 .DS_Store create mode 100644 README.md create mode 100644 TUTORIEL_DEPLOIEMENT_COOLIFY.md create mode 100644 TUTORIEL_UTILISATION.md create mode 100644 chordlab.html create mode 100644 files.zip create mode 100644 index.html diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2e3e0bedc38e07559c2eb2a468b83400c0abe702 GIT binary patch literal 6148 zcmeHKu}TCn5S`Hz4lKOVGQZ#-gySr%{Q=oK1tGA-VZWW9t?y+6%{y)Ocy#MDUjii7S_)`k_YWKX`;+L|vE`E-+w!mNDKZe|%j%IcV gz<{Or{v@xkkGz^V1$H{(oetDRfV#+}z;7t<4P^5nIRF3v literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ac464f --- /dev/null +++ b/README.md @@ -0,0 +1,96 @@ +# _chordlab ORC·v2 + +Générateur d'accords et de progressions harmoniques dans le navigateur, inspiré de la logique du **Telepathic Instruments Orchid ORC-1** (implémentation indépendante, étendue). Un seul fichier HTML, zéro dépendance, zéro backend. + +> Construis un accord avec un doigt, façonne son voicing, chaîne une progression, envoie-la en MIDI live vers ton studio dawless ou exporte-la en `.mid` pour ton DAW. + +--- + +## Fonctionnalités + +**Construction d'accords** +- Clavier une octave pour la fondamentale (souris, tactile ou clavier PC) +- 8 types d'accords : Dim · Min · Maj · Aug · Sus2 · Sus4 · 5 (power chord) · m♭6 +- 12 modificateurs empilables : 6 · m7 · M7 · 9 · ♭9 · ♯9 · 11 · ♯11 · 13 · ♭5 · ♯5 · no3 +- Nommage automatique (Cm7, Cdim7, Cø7, C7(♭9)…) affiché sur le LCD + +**Voicing** +- Knob de voicing rotatif ±8 crans (inversions en cascade, une note à la fois) +- Drop voicings : close · drop 2 · drop 3 · drop 2+4 · spread +- Accords slash : basse sur la fondamentale, la tierce, la quinte ou la septième +- Moteur basse séparé (−1 ou −2 octaves) + +**Tonalité et intelligence harmonique** +- Key Mode : accords diatoniques à un doigt dans 8 gammes (majeur, mineur naturel/harmonique, dorien, phrygien, lydien, mixolydien, locrien) +- Voice-leading automatique (VL AUTO) et optimisation globale de la progression +- Suggestion d'accord suivant par table d'harmonie fonctionnelle +- 8 presets de cadences générés dans la tonalité choisie + +**Progression et lecture** +- Rack de slots : durée individuelle (1/2/4/8 temps), réordonnancement, audition au clic +- Modes de performance : block · strum ↑↓ · harp · arp ↑/↓/↕/random (1/8 à 1/32) +- Humanisation vélocité/timing + +**Entrées / sorties** +- **Web MIDI out live** : accords et basse sur deux canaux séparés, vers n'importe quelle interface USB-MIDI +- **Export `.mid`** : format 1, PPQ 480, tempo inclus, performance rendue en option +- **Session `.json`** : sauvegarde/chargement complet (réglages + progression) + +--- + +## Démarrage rapide + +1. Ouvrir `index.html` dans **Chrome, Edge ou Firefox** (Safari ne supporte pas Web MIDI). +2. Cliquer une note du clavier → l'accord sonne et s'affiche sur le LCD. +3. `ADD` (ou barre espace) pour l'empiler dans la progression, `PLAY` pour l'écouter. +4. Pour le MIDI live : brancher une interface USB-MIDI, autoriser l'accès MIDI, sélectionner le périphérique dans le panneau **MIDI out**. + +> ⚠️ Web MIDI exige un **contexte sécurisé** : `https://` ou `http://localhost`. Un fichier ouvert en `file://` fonctionne pour l'audio et l'export, mais pas pour la sortie MIDI live selon les navigateurs. D'où l'intérêt de l'héberger (voir tutoriel de déploiement). + +--- + +## Canaux MIDI par défaut + +| Rôle | Canal | Machine cible (setup de référence) | +|---|---|---| +| Accords | 3 | Behringer Pro-800 (nappes) | +| Basse | 5 | TD-3 + K-2 en unisson | + +Modifiables dans le panneau **MIDI out (live)**. L'export `.mid` reprend les mêmes canaux. + +--- + +## Structure du dépôt + +``` +chordlab/ +├── index.html # l'application complète +├── README.md +└── docs/ + ├── TUTORIEL_UTILISATION.md # guide utilisateur complet + └── TUTORIEL_DEPLOIEMENT_COOLIFY.md # mise en ligne + mises à jour +``` + +--- + +## Compatibilité + +| Navigateur | Audio | MIDI live | Export .mid | +|---|---|---|---| +| Chrome / Edge | ✅ | ✅ | ✅ | +| Firefox | ✅ | ✅ | ✅ | +| Safari | ✅ | ❌ (pas de Web MIDI) | ✅ | + +--- + +## Notes de conception + +- Le moteur de voicing reproduit le principe du dial de l'Orchid : chaque cran fait une **rotation** de l'accord (la note la plus grave remonte d'une octave, ou l'inverse), sur ±8 crans. +- Les combinaisons classiques tombent naturellement : `DIM + 6 = dim7`, `DIM + m7 = ø7` (demi-diminué), `MAJ + m7 + ♯9 = accord Hendrix`. +- Empiler `m7 + M7` affiche `WTF?` sur le LCD — clin d'œil assumé à l'Orchid. +- Le voice-leading minimise la somme des déplacements de voix entre deux accords en testant les rotations de voicing candidates. +- Aucune donnée n'est stockée dans le navigateur : la persistance passe exclusivement par les fichiers `.json` de session. + +## Licence & crédit + +Projet personnel underscorelab / leradiologue. La logique d'accords s'inspire du concept de l'Orchid ORC-1 de Telepathic Instruments, sans réutiliser ni code, ni sons, ni assets de l'instrument original. diff --git a/TUTORIEL_DEPLOIEMENT_COOLIFY.md b/TUTORIEL_DEPLOIEMENT_COOLIFY.md new file mode 100644 index 0000000..2e1287a --- /dev/null +++ b/TUTORIEL_DEPLOIEMENT_COOLIFY.md @@ -0,0 +1,170 @@ +# _chordlab — Mise en ligne avec Coolify + +Déploiement sur l'infrastructure ghostinthemachine.fr, **sur le même modèle que le site des vacances** (`sudouest.ghostinthemachine.fr`) : dépôt Gitea → ressource Coolify en build pack **Static** → domaine servi par Traefik avec le certificat wildcard existant. + +Cible retenue dans ce tutoriel : `https://chordlab.ghostinthemachine.fr` + +> **Pourquoi héberger une app qui tient dans un fichier ?** Parce que **Web MIDI exige un contexte sécurisé** (`https://` ou `localhost`). En `file://`, la sortie MIDI live vers le hardware est bloquée par le navigateur. Une fois sur ton domaine en HTTPS, tout fonctionne — y compris depuis le portable posé à côté du studio. + +--- + +## 0. Prérequis (déjà en place sur ton infra) + +- Serveur Scaleway avec **Coolify 4.x** et **Traefik** opérationnels +- **Gitea** self-hosted accessible +- Wildcard DNS `*.ghostinthemachine.fr` pointant vers le serveur (Cloudflare) +- Certificat wildcard géré par acme.sh/Cloudflare — rien à faire côté SSL + +[PROBABLE] Les libellés exacts de l'interface Coolify peuvent varier légèrement selon la version ; le déroulé ci-dessous correspond au flux validé lors du déploiement du site des vacances. + +--- + +## 1. Préparer le dépôt Gitea + +### 1.1 Créer le dépôt + +Dans Gitea : **+ → Nouveau dépôt** → nom `chordlab`. Comme pour le site des vacances, le contenu n'a rien de sensible : **le plus simple est de le créer public** (voir §2.2 pour la raison précise). + +### 1.2 Structurer et pousser + +```bash +mkdir chordlab && cd chordlab +git init + +# Le fichier de l'app DOIT s'appeler index.html +# (le serveur statique sert index.html à la racine du domaine) +cp /chemin/vers/chordlab_v2.html index.html + +# Documentation +cp /chemin/vers/README.md . +mkdir docs +cp /chemin/vers/TUTORIEL_UTILISATION.md docs/ +cp /chemin/vers/TUTORIEL_DEPLOIEMENT_COOLIFY.md docs/ + +git add . +git commit -m "chordlab v2 — initial" +git remote add origin https://git.ghostinthemachine.fr/matthieu/chordlab.git +git push -u origin main +``` + +> Adapte l'URL du remote à ton instance Gitea réelle et à ton utilisateur. + +--- + +## 2. Créer la ressource dans Coolify + +### 2.1 Nouvelle ressource + +1. Coolify → ton projet → **+ New → Resource**. +2. Choisir **Public Repository** (dépôt public) et coller l'URL HTTPS du dépôt Gitea : + `https://git.ghostinthemachine.fr/matthieu/chordlab.git` +3. Branche : `main`. +4. **Build Pack : Static** — c'est le point clé. Pas de Dockerfile, pas de Nixpacks : Coolify sert simplement les fichiers via un conteneur nginx. +5. **Publish Directory : `/`** (l'`index.html` est à la racine du dépôt). + +### 2.2 ⚠️ Le piège du dépôt privé (leçon du site des vacances) + +Si le dépôt Gitea est **privé** et que la ressource est de type « Public Repository », le déploiement échoue avec : + +``` +exit code: 128 +fatal: could not read Username for 'https://git.ghostinthemachine.fr' +``` + +Coolify clone sans credentials, Gitea refuse. Deux solutions, exactement comme la dernière fois : + +| Option | Quand | Comment | +|---|---|---| +| **A. Rendre le dépôt public** | contenu non sensible (notre cas) | Gitea → dépôt → Paramètres → cocher « Visibilité : public ». Redéployer. C'est la solution retenue pour le site des vacances. | +| **B. Deploy Key SSH** | si tu tiens au dépôt privé | Coolify → ressource → Source → générer une clé de déploiement → l'ajouter dans Gitea (dépôt → Paramètres → Clés de déploiement) → utiliser l'URL **SSH** du dépôt (`git@git.ghostinthemachine.fr:matthieu/chordlab.git`) | + +### 2.3 Domaine + +Dans la ressource → **Domains** : + +``` +https://chordlab.ghostinthemachine.fr +``` + +- Le wildcard DNS Cloudflare couvre déjà `chordlab.ghostinthemachine.fr` → aucune entrée DNS à créer. +- Bien saisir le domaine **avec `https://`** : c'est ce qui pilote la génération des labels Traefik pour la redirection et le TLS. + +### 2.4 Déployer + +Bouton **Deploy**. Le log doit montrer : clone du dépôt → build statique → conteneur démarré. Première mise en ligne : généralement moins d'une minute. + +--- + +## 3. Vérifications post-déploiement + +1. **`https://chordlab.ghostinthemachine.fr`** répond avec l'interface (face avant beige, LCD). +2. **Cadenas SSL** valide (certificat wildcard). +3. **Test Web MIDI** : interface USB-MIDI branchée → recharger la page → le navigateur demande l'autorisation MIDI → le périphérique apparaît dans le panneau *MIDI out (live)* et le LCD affiche `MIDI ON`. Si l'autorisation n'est jamais demandée, vérifier que l'URL est bien en `https://` (c'était le même principe que le micro pour LibreChat : pas de périphérique sans contexte sécurisé). +4. **Test export** : deux accords → ADD → `↓ exporter .mid` → le fichier se télécharge. + +--- + +## 4. Mise à jour de l'application + +Même mécanique que pour le site des vacances : **le dépôt Git est la source de vérité**, Coolify redéploie depuis le dernier commit. + +### 4.1 Mise à jour manuelle (workflow de base) + +```bash +cd chordlab +# remplacer index.html par la nouvelle version de l'app +cp /chemin/vers/chordlab_v2.html index.html + +git add index.html +git commit -m "v2.1 — " +git push +``` + +Puis dans Coolify → ressource `chordlab` → **Redeploy**. Le conteneur est reconstruit avec les nouveaux fichiers ; interruption de service quasi nulle. + +### 4.2 Déploiement automatique au push (optionnel) + +Pour supprimer l'étape manuelle : + +1. Coolify → ressource → **Webhooks** → copier l'URL du webhook de déploiement. +2. Gitea → dépôt `chordlab` → **Paramètres → Webhooks → Ajouter un webhook → Gitea**. +3. URL cible : l'URL Coolify copiée · Événement : **Push** · branche `main`. +4. Tester avec « Test Delivery », puis faire un commit de contrôle : chaque `git push` déclenche désormais le redéploiement. + +### 4.3 Revenir en arrière + +Deux options : +- **Git** : `git revert ` puis push (propre, historisé — à préférer) ; +- **Coolify** : la liste des déploiements permet de relancer une image précédente. [INCERTAIN] La disponibilité du rollback en un clic dépend de la version de Coolify ; le revert Git fonctionne dans tous les cas. + +--- + +## 5. Dépannage + +| Symptôme | Cause probable | Correction | +|---|---|---| +| `exit code: 128 — could not read Username` | dépôt privé cloné sans credentials | §2.2 : dépôt public ou Deploy Key SSH | +| 404 Traefik sur le domaine | domaine mal saisi dans la ressource, ou routeur pas régénéré | vérifier Domains (avec `https://`), redéployer ; en dernier recours contrôler les labels du conteneur (`docker inspect`) | +| La page charge mais pas de demande d'autorisation MIDI | contexte non sécurisé ou navigateur Safari | vérifier `https://`, utiliser Chrome/Edge/Firefox | +| Ancienne version affichée après redéploiement | cache navigateur (fichier HTML unique) | rechargement forcé (Ctrl+Shift+R) ; si récurrent, ajouter un query string versionné dans les liens partagés (`?v=2.1`) | +| Le conteneur tourne mais rien ne répond | l'app n'est pas nommée `index.html` à la racine, ou Publish Directory incorrect | renommer le fichier / corriger le Publish Directory, redéployer | +| Périphérique MIDI absent de la liste | interface branchée après le chargement | recharger la page (l'app écoute les changements, mais certains OS n'exposent le port qu'à la connexion) | + +--- + +## 6. Récapitulatif du modèle + +``` +[poste local] [serveur ghostinthemachine.fr] +index.html ──git push──▶ Gitea ──clone──▶ Coolify (Static build pack) + │ + ▼ + conteneur nginx statique + │ + Traefik + wildcard SSL + │ + ▼ + https://chordlab.ghostinthemachine.fr +``` + +Un fichier, un push, un redeploy. Le même modèle resservira pour toute page ou micro-app statique à venir. diff --git a/TUTORIEL_UTILISATION.md b/TUTORIEL_UTILISATION.md new file mode 100644 index 0000000..8359d69 --- /dev/null +++ b/TUTORIEL_UTILISATION.md @@ -0,0 +1,236 @@ +# _chordlab v2 — Tutoriel complet d'utilisation + +Ce guide couvre l'intégralité de l'application, du premier accord jusqu'aux workflows dawless et DAW. Comptez 10 minutes pour tout lire, 2 minutes pour être opérationnel. + +--- + +## 1. Vue d'ensemble de l'interface + +L'écran est organisé comme une face avant de machine hardware : + +``` +┌─────────────────────────────────────────────────────┐ +│ LCD — nom de l'accord, notes, état des modes │ +├──────────────┬──────────────────────┬───────────────┤ +│ CHORD TYPE │ ROOT │ VOICING │ +│ TENSIONS │ (clavier 1 oct.) │ drop/slash │ +│ ALTÉRATIONS │ │ BASS / KEY │ +├──────────────┴──────────────────────┴───────────────┤ +│ PROGRESSION — slots, transport, perf, BPM │ +├──────────────────┬──────────────────┬───────────────┤ +│ MIDI OUT LIVE │ EXPORT MIDI │ SESSION │ +└──────────────────┴──────────────────┴───────────────┘ +``` + +Le **LCD** est votre référence permanente : il affiche le nom de l'accord courant, ses notes réelles (avec octaves), et l'état des modes (voicing, drop, key, perf, MIDI, voice-leading). + +--- + +## 2. Jouer un accord + +Le principe fondamental, hérité de l'Orchid : **vous ne jouez jamais les notes de l'accord, vous le décrivez**. + +1. **Type** — un seul actif à la fois (LED allumée). MAJ est sélectionné au démarrage. +2. **Fondamentale** — cliquez une touche du clavier, ou utilisez le clavier PC : `A W S E D F T G Y H U J` = C C# D D# E F F# G G# A A# B. +3. L'accord sonne immédiatement et s'affiche sur le LCD. + +Les huit types : + +| Bouton | Accord | Intervalles | +|---|---|---| +| DIM | diminué | 1 · ♭3 · ♭5 | +| MIN | mineur | 1 · ♭3 · 5 | +| MAJ | majeur | 1 · 3 · 5 | +| AUG | augmenté | 1 · 3 · ♯5 | +| SUS2 | suspendu 2 | 1 · 2 · 5 | +| SUS4 | suspendu 4 | 1 · 4 · 5 | +| 5 | power chord | 1 · 5 | +| m♭6 | mineur sixte bémol | 1 · ♭3 · ♭6 | + +--- + +## 3. Tensions et altérations + +Les deux rangées inférieures s'**empilent** librement sur le type (plusieurs LEDs actives simultanément). + +**Tensions** — elles *ajoutent* des notes : + +| Bouton | Ajoute | Exemple avec MAJ + C | +|---|---|---| +| 6 | sixte majeure | C6 | +| m7 | septième mineure | C7 | +| M7 | septième majeure | Cmaj7 | +| 9 | neuvième | Cadd9 (ou C7(9) si une 7e est là) | +| ♭9 / ♯9 | neuvièmes altérées | C7(♭9), C7(♯9) « Hendrix » | +| 11 / ♯11 | onzièmes | C7(11), Cmaj7(♯11) | +| 13 | treizième | C7(13) | + +**Altérations** — elles *modifient ou retirent* des notes : + +| Bouton | Effet | +|---|---| +| ♭5 | remplace la quinte juste par une quinte diminuée | +| ♯5 | remplace la quinte juste par une quinte augmentée | +| no3 | retire la tierce (accords ouverts, parfaits pour l'ambient) | + +**Combinaisons remarquables** : +- `DIM + 6` → accord de **septième diminuée** (Cdim7) +- `DIM + m7` → **demi-diminué** (Cø7) +- `MIN + m7 + 9` → le m9 des nappes deep +- `m7 + M7` ensemble → le LCD affiche `WTF?`. Vous êtes prévenu. + +--- + +## 4. Le voicing + +C'est le cœur expressif de la machine. Trois outils indépendants qui se cumulent : + +### 4.1 Le knob rotatif (±8) +Chaque cran fait une **rotation** de l'accord : à +1, la note la plus grave remonte d'une octave ; à −1, la plus aiguë descend. Exemple sur Cmaj7 : + +``` + 0 : C4 E4 G4 B4 ++1 : E4 G4 B4 C5 ++2 : G4 B4 C5 E5 +−1 : B3 C4 E4 G4 +``` + +Manipulation : glisser verticalement sur le knob, boutons −/0/+, flèches ←/→ du clavier, ou double-clic pour revenir à 0. Le même accord à +3 et à −2 raconte deux histoires complètement différentes — c'est l'outil n°1 pour trouver *la* couleur. + +### 4.2 Drop voicings +Appliqués après la rotation, ils écartent les voix comme le ferait un pianiste ou un arrangeur : + +| Mode | Effet | Usage typique | +|---|---|---| +| close | rien (position serrée) | défaut | +| drop 2 | 2e voix depuis le haut → −1 octave | le voicing jazz standard | +| drop 3 | 3e voix depuis le haut → −1 octave | grands écarts, guitare | +| drop 2+4 | deux voix descendues | très ouvert, cinématique | +| spread | une voix sur deux → +1 octave | nappes larges, ambient | + +### 4.3 Accords slash +Le sélecteur **basse /** choisit quelle note de l'accord la basse joue : fondamentale, tierce, quinte ou septième. Le LCD affiche alors `C/E`, `C/G`… La détection est intelligente : sur un accord mineur elle prend la tierce mineure, sur un ♭5 la quinte diminuée. + +### 4.4 BASS +Le bouton **BASS** active le moteur basse (−1 ou −2 octaves). En MIDI live et à l'export, la basse sort sur son propre canal — c'est elle qui pilote ta TD-3 pendant que les accords vont au Pro-800. + +--- + +## 5. Key Mode — accords diatoniques à un doigt + +Activez **KEY**, choisissez une tonique et une gamme parmi les huit disponibles. À partir de là : + +- Chaque touche du clavier génère automatiquement **l'accord diatonique du degré correspondant** (en Do majeur : C→C, D→Dm, E→Em, F→F, G→G, A→Am, B→Bdim). +- Les touches hors tonalité sont **grisées** et n'émettent rien (le LCD affiche `hors tonalité`). +- Les tensions 6/7/9/11/13 restent actives et sont harmonisées **dans la gamme** (la 7e de G en Do majeur sera F naturel → G7, pas Gmaj7). Un astérisque dans le nom (`G7*`) signale un accord harmonisé diatoniquement. + +Le mineur harmonique vaut le détour : le degré V y devient un vrai accord de dominante avec sensible — la cadence mineure classique à un doigt. + +--- + +## 6. Construire une progression + +### 6.1 Manuellement +Jouez un accord, puis **ADD** (ou barre espace). Il apparaît dans un slot avec son nom, ses notes et sa durée. + +Sur chaque slot : +- **badge durée** (`4♩`) — cliquer fait tourner 4 → 8 → 2 → 1 temps +- **‹ ›** — déplacer le slot dans la séquence +- **×** — supprimer +- **clic sur le slot** — l'auditionner seul + +### 6.2 Avec les presets +Le menu déroulant propose huit cadences classiques (I–V–vi–IV, ii–V–I, cycle des quintes…). **Charger** les génère dans la tonalité et la gamme sélectionnées, avec vos tensions et votre voicing courants. C'est le moyen le plus rapide d'avoir une base à triturer. + +### 6.3 Avec la suggestion harmonique +**✦ suggérer** ajoute un accord choisi par une table d'harmonie fonctionnelle (après un I : IV, V, vi… ; après un ii : V ; etc.), dans la tonalité courante. Enchaînez les clics pour laisser la machine dériver, reprenez la main quand ça devient intéressant. + +### 6.4 Voice-leading +Deux outils pour des enchaînements fluides : +- **VL AUTO** (transport) — chaque accord ajouté est automatiquement re-voicé pour minimiser le mouvement des voix par rapport au précédent. +- **⇄ voice-leading** — optimise d'un coup toute la progression existante. À utiliser après un chargement de preset : la différence s'entend immédiatement. + +--- + +## 7. Lecture et modes de performance + +**PLAY** lance la progression au BPM affiché ; **LOOP** la fait boucler ; le slot en cours s'illumine. + +Le sélecteur **perf** transforme la restitution de chaque accord : + +| Mode | Rendu | +|---|---| +| block | accord plaqué | +| strum ↑ / ↓ | notes égrenées vers le haut / le bas (façon guitare) | +| harp | balayage rapide (glissando) | +| arp ↑ / ↓ / ↕ / rnd | arpège à la vitesse du sélecteur **rate** (1/8, 1/16, 1/32) | + +**HUM** humanise vélocités (±10) et timing (±15 ms) — utile pour que les strums et arps respirent. + +> Ces modes s'appliquent partout : à l'audition, en MIDI live, et **dans l'export .mid** (désactivable, voir §9). + +--- + +## 8. MIDI live vers le hardware + +1. Branchez votre interface USB-MIDI **avant** d'ouvrir la page (ou rechargez-la après). +2. Le navigateur demande l'autorisation d'accès MIDI — acceptez. +3. Panneau **MIDI out (live)** : sélectionnez le périphérique. +4. Vérifiez les canaux : **accords ch3** (Pro-800), **basse ch5** (TD-3/K-2) par défaut — adaptez à votre routage. +5. Jouez : chaque accord cliqué, chaque slot auditionné et la lecture complète partent en MIDI, avec les modes de performance rendus. + +Le LCD affiche `MIDI ON` quand un périphérique est actif. En cas de note bloquée sur une machine, **STOP** envoie un All Notes Off sur les 16 canaux. + +> Contexte sécurisé requis : Web MIDI ne fonctionne qu'en `https://` ou sur `localhost`. C'est la raison principale d'héberger l'app (voir le tutoriel Coolify). + +--- + +## 9. Export .mid + +Panneau **Export MIDI** : + +- **pistes** : `accords + basse` (2 pistes, chacune sur son canal) ou `accords seuls` +- **perf rendue** : `oui` écrit les strums/arps note par note dans le fichier ; `non` exporte des accords plaqués (préférable si vous voulez arpéger dans le DAW ou le Tracker) + +Le fichier généré (`chordlab_Cm7-Fm7-Ab-Bb_112bpm.mid`, format 1, PPQ 480, tempo inclus) respecte la durée individuelle de chaque slot. + +**Destinations typiques** : +- **DAW** — glisser-déposer sur une piste instrument, c'est tout. +- **Polyend Tracker Mini** — copier le `.mid` sur la carte SD et l'importer ; chaque piste MIDI devient une piste du pattern. + +--- + +## 10. Sessions + +**↓ sauver la session** génère un `.json` contenant tous les réglages (type, tensions, voicing, drop, slash, tonalité, perf, BPM…) et la progression complète. **↑ charger une session** restaure tout. + +L'application ne stocke rien dans le navigateur : le fichier `.json` est l'unique persistance. Versionnez vos sessions dans Gitea comme n'importe quel fichier de projet. + +--- + +## 11. Raccourcis clavier + +| Touche | Action | +|---|---| +| A W S E D F T G Y H U J | fondamentales C → B | +| Espace | ADD (ajouter l'accord courant à la progression) | +| ← / → | voicing −1 / +1 | +| ↑ ↓ ← → (knob focalisé) | voicing fin | +| double-clic sur le knob | voicing = 0 | + +--- + +## 12. Deux workflows de référence + +### Workflow dawless (session hardware) +1. KEY ON, tonique et gamme du morceau. +2. Preset ou ✦ suggérer pour poser 4–8 accords ; ⇄ voice-leading. +3. MIDI live branché : accords ch3 → Pro-800 (nappe lente), basse ch5 → TD-3. +4. LOOP + perf `block`, BPM du morceau : la progression tourne pendant que vous sculptez les sons sur les machines et enregistrez sur le L-12. +5. Session sauvée en `.json` pour reprendre la structure plus tard. + +### Workflow DAW / Tracker (composition) +1. Construction libre (KEY OFF) : types + tensions + drop voicings pour chercher des couleurs. +2. VL AUTO activé, on empile au fil de l'inspiration. +3. Export `.mid` avec `perf rendue : non` (accords propres) → import dans le DAW ou le Tracker Mini. +4. L'arpégiation et le sound design se font dans la machine de destination. diff --git a/chordlab.html b/chordlab.html new file mode 100644 index 0000000..e042941 --- /dev/null +++ b/chordlab.html @@ -0,0 +1,958 @@ + + + + + +_chordlab — générateur d'accords + + + +
+
+

_chordlab ORC

+
chord ideas machine · underscorelab / leradiologue
+
+ + +
+
+
+
joue une note
+
+
+
VOICING 0
+
KEY OFF
+
MIDI
+
+
+ + +
+ + +
+

Chord type

+
+ + + + +
+
Modifiers
+
+ + + + +
+
combos : dim+maj=aug · min+sus=sus2
+
+ + +
+

Root

+
+
clavier PC : A W S E D F T G Y H U J  ·  ␣ = ajouter à la progression
+
+ + +
+

Voicing

+
+ + + + +
0
+
+ + + +
+
+
+ + +
+
+ + + +
+
+
+ + +
+
+

Progression

+
+ + + +
+
+
+
+ + + +
BPM
+
durée/accord + +
+
+
+ + +
+
+

MIDI out (live)

+
+
+
+
Web MIDI : en attente…
+
+
+

Export

+
+ +
+
+
+ +
_chordlab v1.0 · logique d'accords inspirée de l'Orchid ORC-1 (implémentation indépendante)
+
+ + + + diff --git a/files.zip b/files.zip new file mode 100644 index 0000000000000000000000000000000000000000..3ae1569e7b8c4ad564e3787dcc551e66854c01ff GIT binary patch literal 11268 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 + + + + +_chordlab v2 — générateur d'accords + + + +
+
+

_chordlab ORC·v2

+
chord ideas machine · underscorelab / leradiologue
+
+ + +
+
+
+
joue une note
+
+
+
VOICING 0 · CLOSE
+
KEY OFF · PERF BLOCK
+
MIDI · VL OFF
+
+
+ + +
+ + +
+

Chord type

+
+ + + + + + + + +
+
Tensions
+
+ + + + + + + + +
+
Altérations
+
+ + + + +
+
+ + +
+

Root

+
+
clavier PC : A W S E D F T G Y H U J · ␣ = ADD · ← → = voicing
+
+ + +
+

Voicing

+
+ + + + +
0
+
+ + + +
+
+
+ +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+
+ + +
+
+

Progression

+
+ + + + + +
+
+
+
+ + + + +
BPM
+
perf + +
+
rate + +
+ +
+
+ + +
+
+

MIDI out (live)

+
+
+
+
Web MIDI : en attente…
+
+
+

Export MIDI

+
+
+ +
+
+
+

Session

+ + + +
+
+
+ +
_chordlab v2.0 · logique d'accords inspirée de l'Orchid ORC-1 (implémentation indépendante étendue)
+
+ + + +