Aller au contenu
roomi fields

Composer avec des structures

Kanopi

Environnement de live coding dans le navigateur qui fait jouer plusieurs langages sur une même horloge, BPscript compris.

expérimental dernière modification 7 septembre 2026 licence AGPL-3.0-or-later

Essayer Code source

Kanopi part d’un constat, celui de son README : Flok édite plusieurs langages de live coding à la fois, Estuary partage une horloge, Max/MSP parle au matériel, et aucun outil ne réunit les trois. Sa limite principale : c’est une version alpha qui ne s’installe pas depuis son dépôt public, lequel dépend de onze paquets locaux dont plusieurs sont privés ; la version en ligne date du 6 juillet 2026.

La version en ligne s’ouvre sans rien installer, avec deux scènes d’exemple.

Un éditeur par langage, un transport pour tous

On peut penser Kanopi comme un éditeur de code dont chaque fichier est écrit dans son propre langage, surmonté d’un transport de séquenceur : une horloge, un tempo, une position en mesure et en temps. Chaque langage est branché par un adaptateur qui garde les outils de son éditeur d’origine ; Strudel, par exemple, garde sa coloration et ses aides par ses propres modules.

Une scène BPscript sert de chef d’orchestre : elle nomme des acteurs, les voix, dit quel langage joue chacun, et décide par ses règles qui joue quand.

Commencer

Ouvrez la version en ligne, puis le fichier main.bps dans la colonne de gauche. C’est une scène à trois voix de code, commutées par un drapeau :

@library.strudel "dirt-samples"

@actor drums   transport.audio  eval.tidal
@actor visuals transport.video  eval.hydra
@actor bass    transport.audio  eval.strudel

@flag scene: intro:1, drop:2, break:3

[scene==intro] S -> visuals
[scene==drop]  S -> { drums, visuals, bass }
[scene==break] S -> { visuals, bass }

drums -> `stack(s("bd*4").gain(0.9), s("~ cp").room(0.4), s("hh*8").gain(0.5).pan(sine.range(0.2, 0.8).slow(4)))`
visuals -> `osc(60, 0.1, 1.5).modulate(noise(3)).rotate(() => time/10).out()`
bass -> `note("c2 c2 eb2 g2").s("sawtooth").gain(0.4)`

L’éditeur l’accepte (« COMPILES ») et le panneau Actors affiche les trois voix. Relevé le 28 septembre 2026 sur la version en ligne, dont la ligne d’état indique v0.1.0-alpha. Le transport affiche alors trois boutons de scène : intro, drop, break.

Ce qu’il fait

  • Faire jouer six langages de code dans le navigateur : Strudel, Hydra, p5.js, Mercury, Csound et JavaScript.
  • Dériver des grammaires BP3 et des scènes BPscript, qui ordonnent ces voix dans le temps (BPscript).
  • Tenir un transport commun : lecture, arrêt, tempo tapé, position en mesure et en temps.
  • Commuter des scènes par drapeau, comme dans l’exemple ci-dessus.
  • Offrir une bibliothèque de grammaires BP3 et de scènes BPscript.
  • Moduler les sons : une valeur entre 0 et 1, portée sur la plage de l’entrée choisie (S14).

Où il en est

Le 7 septembre 2026, les 86 fichiers de tests unitaires passaient, mais la vérification complète s’arrêtait encore au contrôle de typage (baseline-status.json du dépôt). Les fichiers SuperCollider et Python s’ouvrent, mais aucun adaptateur ne les exécute.

Le dépôt public n’a pas bougé depuis le 7 septembre 2026 : le travail continue dans un dépôt privé qui réunit Kanopi, BPscript et leurs moteurs.

Dépôt · Version en ligne · S7 · S11 · osc-bridge

Merci aux auteurs de Strudel, Hydra, Mercury, p5.js et Csound : Kanopi embarque leurs moteurs sans les réécrire.

Fabrication. Claude Code (Claude Opus 5.5), à partir du dépôt, de son README et de ses notes de version. Méthode