← Ressources

Partie 1 — Introduction

1. Qu'est-ce que le live coding ?

Définition

Le live coding est une pratique artistique qui consiste à écrire et modifier du code informatique en temps réel devant un public, pour produire du son, de l'image, ou les deux simultanément. Le code n'est pas préparé puis exécuté lors d'un concert : il est tapé, transformé, cassé et reconstruit pendant la performance elle-même.

C'est un déplacement important : le code devient l'instrument, et l'acte d'écrire devient l'acte de jouer. Là où un guitariste manipule des cordes, le live codeur manipule des fonctions, des boucles, des paramètres.

Ce qui distingue le live coding

Trois éléments le différencient des pratiques électroniques voisines :

Cette dernière contrainte technique est fondamentale : un environnement de live coding est, avant tout, un environnement où on peut changer le programme pendant qu'il tourne.

TOPLAP et le manifeste

En février 2004, à Hambourg, un groupe d'artistes-chercheurs (Alex McLean, Click Nilson, Julian Rohrhuber, entre autres) fondent TOPLAP — Temporary Organisation for the Promotion of Live Algorithm Programming. Ils rédigent un manifeste qui pose les principes encore référents aujourd'hui :

« Give us access to the performer's mind, to the whole human instrument. »
« Obscurantism is dangerous. Show us your screens. »
« Programs are instruments that can change themselves. »
« Algorithms are thoughts. Chainsaws are tools. Chainsaws are dangerous. »

Deux exigences à retenir :

  1. « Show us your screens » — montrer le code projeté est devenu une signature esthétique et politique de la pratique. Le public voit la pensée à l'œuvre. Ce qui est en jeu : la transparence, le refus de la magie noire, la dimension pédagogique de la performance.
  2. L'erreur fait partie du jeu — un crash, une boucle infinie, un son saturé : ces accidents sont assumés. Cela rapproche le live coding de l'improvisation jazz plus que du concert classique.

Une généalogie courte

Le live coding ne sort pas de nulle part. Il s'inscrit dans plusieurs lignées :

Le tournant est l'apparition de TidalCycles (Alex McLean, 2009) pour la musique, puis d'environnements visuels comme Hydra (Olivia Jack, 2018) qui démocratisent radicalement la pratique en la mettant dans un navigateur.

Le mouvement Algorave

En 2012, Alex McLean et Nick Collins inventent le terme Algorave : des soirées où des live codeurs jouent de la musique dansante générée par algorithme, le code projeté derrière eux. C'est aujourd'hui le format de diffusion principal de la scène, avec des éditions partout dans le monde.

L'Algorave a deux conséquences importantes :

Ce que le live coding n'est pas

2. Pourquoi le live coding aux arts numériques ?

Le live coding n'est pas une bizarrerie née d'un bricolage de geeks. C'est l'aboutissement contemporain d'une lignée artistique longue, qui traverse la musique, les arts visuels, la performance et la pensée du code. Cette section trace cette filiation pour situer la pratique : un live codeur ne joue pas contre l'histoire de l'art, il la prolonge avec un nouvel instrument.

Le code comme matériau, pas comme outil

Première bascule conceptuelle : aux arts numériques, le code n'est pas un outil au service d'une œuvre extérieure (un script qui rendrait une image), il est la matière de l'œuvre. Le geste artistique consiste à manipuler des symboles, des règles, des structures formelles — pas seulement à appuyer sur un bouton qui les exécute.

Cette bascule a un nom dans le champ académique : les software studies, portées notamment par Lev Manovich (The Language of New Media, 2001) et Wendy Hui Kyong Chun (Programmed Visions, 2011). Le code est étudié comme un fait culturel, pas seulement technique.

Filiation historique

La musique algorithmique

Bien avant les ordinateurs, des compositeurs ont cherché à formaliser la composition par des règles. Iannis Xenakis (1922–2001) écrit dans les années 1950 des œuvres stochastiques — Pithoprakta, Achorripsis — où les nuées de notes sont calculées à partir de distributions de probabilités. Sa Musique formelle (1963) est un texte fondateur : la composition y est explicitement décrite comme un programme.

Gottfried Michael Koenig, à Utrecht puis à Cologne, développe dès les années 1960 des programmes de composition (Project 1, Project 2). John Cage et l'usage du I Ching, Karlheinz Stockhausen et la sérialisation intégrale, Pierre Boulez et ses structures formelles : tous explorent l'idée d'une partition comme ensemble d'instructions plutôt que comme suite de notes.

Le live codeur hérite directement de cette tradition. Quand on écrit en Strudel n("0 3 7 12").scale("minor"), on déclare une règle, pas un événement.

L'art génératif visuel

Parallèlement, dès les années 1960, des artistes utilisent des ordinateurs pour générer des images :

Ces artistes pratiquent un live coding différé : ils écrivent un programme, le lancent, observent, modifient. Le live codeur compresse cette boucle dans le temps de la performance.

Sol LeWitt et l'instruction comme œuvre

En dehors du numérique, l'art conceptuel a posé une question parallèle. Sol LeWitt, dans ses Wall Drawings (à partir de 1968), définit une œuvre comme une instruction écrite que des assistants exécutent — l'œuvre est l'instruction. Sa formule de 1967 : « The idea becomes a machine that makes the art. »

Le parallèle avec le live coding est frappant : la performance live coding rend visible cette « machine de l'idée » pendant qu'elle tourne.

La démoscène

À partir des années 1980, sur Commodore 64, Amiga, puis PC, des collectifs (les demogroups) produisent des démos : courtes performances audiovisuelles temps réel, calculées par le programme lui-même, pas pré-rendues. Compétitions célèbres : Assembly en Finlande, Revision en Allemagne. Catégories « 4k » ou « 64k » : produire une œuvre audiovisuelle de plusieurs minutes en moins de 64 kilo-octets de code.

La démoscène apporte trois choses au live coding :

Glitch art, net art et culture du dysfonctionnement

Dans les années 1990–2000, des artistes comme JODI (Joan Heemskerk et Dirk Paesmans), Cory Arcangel, ou Rosa Menkman (Glitch Studies Manifesto, 2010) revendiquent l'erreur, le bug, l'incompréhension du code par lui-même comme matière artistique. Le live coding accueille cet héritage : un crash en performance n'est pas une honte, c'est un événement.

Le code comme partition

Une métaphore travaille toute la pratique : le programme est une partition. Cette métaphore a des conséquences concrètes dans le design des langages dédiés :

L'élève musicien retrouve donc, à un niveau plus abstrait, la logique d'une portée : on déclare un matériau et un traitement temporel.

Dimension politique : code visible, code partagé

Le live coding est traversé par une éthique — héritée de la culture du logiciel libre, du hacker, et du DIY :

C'est pourquoi initier quelqu'un au live coding, ce n'est pas seulement enseigner des outils — c'est l'introduire à une culture.

Repères bibliographiques

Et deux conférences fondatrices à voir en captation : Andrew Sorensen, The Concert Programmer (TEDx Queensland, 2014) ; Sam Aaron, Programming as Performance.

3. Cartographie des outils du cursus

Le cursus mobilise cinq outils, couvrant trois familles : les environnements pédagogiques (Sonic Pi, Strudel), les environnements professionnels de synthèse (SuperCollider), le live coding visuel (Hydra), et la composition scénique libre (OBS Studio). Chacun a un paradigme — une manière de penser le temps, le matériau et la performance — qu'il faut comprendre avant la syntaxe.

Sonic Pi

Auteur : Sam Aaron, université de Cambridge, 2012. Plateforme : Linux, macOS, Windows, Raspberry Pi. Langage : dérivé de Ruby. Sous le capot : le serveur SuperCollider (scsynth).

Paradigme

Sonic Pi est conçu comme un instrument pédagogique d'abord, instrument de scène ensuite. La syntaxe est verbale, lisible (play 60 = joue le do médian). Le concept central est la live_loop : une boucle nommée qui peut être réécrite à chaud pendant qu'elle tourne.

live_loop :kick do
  sample :bd_haus
  sleep 0.5
end

live_loop :melody do
  use_synth :prophet
  play choose([:c4, :e4, :g4, :a4]), release: 0.3
  sleep 0.25
end

Deux boucles tournent en parallèle. Modifier le choose ou le sleep, recharger : la nouvelle version remplace l'ancienne au prochain cycle, sans coupure.

Forces : courbe d'apprentissage très douce, excellent pour l'éducation musicale, communauté pédagogique active. Limites : moins puissant que SuperCollider en synthèse, pas de patterns aussi riches que TidalCycles/Strudel. Ressources : sonic-pi.net.

Strudel

Auteur : Felix Roos, à partir de 2022. Plateforme : navigateur web. Langage : JavaScript + mini-notation inspirée de TidalCycles. Filiation : portage JS de TidalCycles (Alex McLean, 2009), écrit en Haskell.

Paradigme

Strudel pense la musique comme des cycles. Un cycle dure par défaut une seconde. Tout pattern est une fonction du temps qui découpe ce cycle en événements — paradigme fonctionnel pur, pas d'état mutable, pas de boucle visible.

La mini-notation

"bd sd [bd cp] sd"

Lecture : un cycle est divisé en 4 temps. Aux temps 1, 2, 4 : kick, snare, snare. Au temps 3, deux subdivisions imbriquées : kick puis clap.

"a b c"        // séquence
"a [b c]"      // subdivision
"a*3"          // répétition (a a a)
"a/2"          // étirement (a sur deux cycles)
"a@2 b"        // pondération de durée
"a(3,8)"       // rythme euclidien : 3 pulsations sur 8 pas
"a | b | c"    // alternance (random sur cycles)
"<a b c>"      // alternance déterministe sur cycles

Rythmes euclidiens

L'opérateur (k,n) génère un rythme euclidien : distribuer k pulsations le plus régulièrement possible sur n pas (algorithme de Bjorklund, appliqué aux rythmes par Godfried Toussaint en 2005). Il produit des rythmes traditionnels du monde entier :

(2,5)  // x . x . .            : khafif-e-ramal (Perse)
(3,8)  // x . . x . . x .      : tresillo (Cuba)
(5,8)  // x . x x . x x .      : cinquillo
(7,16) // x . . x . x . x . . x . x . x .  : Samba

Exemple complet

stack(
  s("bd(3,8)"),
  s("hh*8").gain(0.4),
  n("0 3 5 7 12".add("<0 -3 2>"))
    .scale("D:minor")
    .s("sawtooth")
    .lpf(sine.range(400, 2000).slow(4))
).cpm(120)

Trois couches superposées : kick euclidien, charley, ligne de basse en mineur naturel transposée par cycles, avec un filtre passe-bas modulé par un sinus lent.

Forces : rien à installer, très expressif, communauté active. Limites : sons par défaut limités. Ressources : strudel.cc, workshop interactif intégré (Learn).

SuperCollider

Auteur : James McCartney, 1996, libre depuis 2002. Langage : sclang, inspiré de Smalltalk. Architecture : client (sclang) / serveur audio (scsynth) via OSC.

Paradigme

SuperCollider est l'environnement adulte de la synthèse temps réel — le moteur qu'utilisent Sonic Pi (en interne) et TidalCycles (par OSC). On y descend pour définir ses propres synthés (SynthDef), faire de la synthèse fine (FM, granulaire, soustractive, additive, physique), travailler avec des patterns sophistiqués (Pbind, Pmono, Pdef).

SynthDef(\bass, { |freq=110, amp=0.3, gate=1, cutoff=800|
    var env, sig;
    env = EnvGen.kr(Env.adsr(0.01, 0.2, 0.6, 0.3), gate, doneAction: 2);
    sig = Saw.ar(freq) + Saw.ar(freq * 1.005);
    sig = RLPF.ar(sig, cutoff, 0.3);
    sig = sig * env * amp;
    Out.ar(0, sig ! 2);
}).add;

Un synthé soustractif : deux scies légèrement désaccordées passées dans un filtre passe-bas résonant, modulées par une enveloppe ADSR.

Pdef(\groove,
    Pbind(
        \instrument, \bass,
        \scale, Scale.minor,
        \degree, Pseq([0, 2, 4, 7, 4, 2], inf),
        \octave, 3,
        \dur, Pseq([0.25, 0.25, 0.5, 0.25, 0.25, 0.5], inf),
        \cutoff, Pwhite(400, 2000)
    )
).play;

Forces : puissance maximale en synthèse, stabilité (en production depuis 1996). Limites : courbe d'apprentissage raide, documentation parfois aride. Ressources : supercollider.github.io.

Hydra

Auteur : Olivia Jack, 2018. Plateforme : navigateur web. Sous le capot : compile vers du GLSL fragment shader, exécuté par WebGL sur le GPU.

Paradigme

Hydra pense l'image comme un réseau de buffers vidéo qui se modulent les uns les autres — inspiré des video synthesizers analogiques (Sandin, Rutt-Etra, années 1970).

Quatre sortes d'objets : sources (osc, noise, shape, voronoi, gradient, solid, src(o0)), géométrie (rotate, scale, kaleid, pixelate, repeat), couleur (color, invert, contrast, luma, posterize), combinaisons (add, mult, blend, diff, modulate, modulateScale, modulateRotate). Quatre buffers de sortie : o0 à o3.

osc(20, 0.1, 1.2)
  .rotate(0.3)
  .kaleid(5)
  .modulate(noise(3, 0.2))
  .out()

Un oscillateur sinusoïdal coloré, tourné, kaléidoscopé, dont les coordonnées UV sont déformées par un bruit. Quatre lignes pour une vidéo musicale entière.

Audio-réactivité

a.show()                  // visualise les bandes (réglage)
a.setBins(4)              // découpe en 4 bandes
a.setSmooth(0.8)          // lissage temporel

osc(10, 0.1, 1)
  .modulate(noise(3))
  .scale(() => 1 + a.fft[0] * 2)   // graves font respirer l'image
  .rotate(() => time * 0.1)
  .out()

Le () => ... est crucial : c'est une fonction réévaluée à chaque frame. Sans elle, la valeur serait figée à l'instant du chargement.

Forces : aucune installation, esthétique riche obtenue très vite, couplage audio simple. Limites : tout est en mémoire GPU dans le navigateur, peu d'options pour intégrer de la vidéo lourde ou de la 3D complexe. Ressources : hydra.ojack.xyz, The Book of Shaders pour le GLSL en général.

OBS Studio

Auteur : Hugh « Jim » Bailey, premier lancement 2012 ; développé depuis par l'OBS Project, communauté ouverte. Plateforme : Windows, macOS, Linux. Licence : GPL v2, libre et gratuit.

Paradigme

OBS Studio n'est pas du live coding et n'a pas été conçu pour le VJing — à l'origine, c'est un outil de composition et de diffusion vidéo (streaming, enregistrement). Mais son modèle de scènes composées de sources empilées, avec effets, filtres et bascules à la volée, en fait une alternative libre crédible aux séquenceurs visuels propriétaires comme Resolume, une fois complété par quelques extensions.

Architecture mentale

Pont avec le live coding

Deux approches, complémentaires :

Forces : libre, gratuit, multiplateforme, communauté et écosystème de plugins considérables, intégration NDI de premier ordre. Cohérent avec l'éthique open source du reste du cursus. Limites : pensé pour le streaming, pas le VJing — les fonctions typiquement attendues d'un séquenceur visuel (grille de clips synchronisée au BPM, transitions avancées prêtes à l'emploi) demandent plus de configuration manuelle ou des plugins tiers. Ressources : obsproject.com.

Vue d'ensemble

OutilFamilleParadigmeNiveauIntégration
Sonic PiAudio LCBoucles nomméesDébutantSC en interne
StrudelAudio LCPatterns fonctionnelsDébutant–avancéWebAudio, OSC
SuperColliderAudio LCSynthèse client/serveurAvancéOSC, MIDI
HydraVisuel LCChaînage GLSLDébutant–avancéNDI/Spout/Syphon
OBS StudioComposition scénique libreScènes + sourcesDébutant–scèneNDI/Spout (plugins), OSC (plugin), Browser Source

Une chaîne typique de fin de cursus : Strudel (motif rythmique, envoie OSC) → SuperCollider (synthèse) → analyse audio → Hydra (visuel) → OBS Studio (composition de scène et diffusion).

4. Live coding et VJing : deux gestes pour l'image en direct

Cette section est l'articulation théorique du cursus. Il faut penser ensemble ce qui sépare et ce qui rapproche le live coding et le VJing, parce que la pratique contemporaine ne respecte plus la frontière — et c'est tant mieux.

Brève histoire du VJing

Le VJ (video jockey) hérite de plusieurs lignées : les light shows psychédéliques des années 1960 (Joshua Light Show, Mark Boyle, l'Exploding Plastic Inevitable d'Andy Warhol) ; les video synthesizers analogiques des années 1970 (Dan Sandin, Rutt-Etra) ; le cinéma élargi (Gene Youngblood, 1970) ; les clubs et raves des années 1980–90, où le VJ devient un métier.

Jalons logiciels : VDMX (1999), Modul8 (2003), Resolume Avenue (2003), VVVV (2002), TouchDesigner (2008), MadMapper (2010) — tous propriétaires. OBS Studio (2012) arrive plus tard dans cet écosystème, non pas comme outil VJ dédié mais comme alternative libre détournée par la communauté.

Deux gestes différents

VJing (OBS Studio type)Live coding visuel (Hydra type)
Matériau de baseClips vidéo préparésCode écrit en direct
Geste de scèneDéclencher, mixer, modifier paramètresÉcrire, modifier, recharger
PréparationTrès lourde (banque de clips)Légère (quelques snippets de départ)
ImprovisationSur l'enchaînement et les effetsSur le contenu lui-même
Risque scéniqueFaible (clips testés)Élevé (un crash est possible)
Identité visuelleDonnée par les clips choisisÉmergente, parfois imprévue
Public visibleInterface, parfois cachéeCode projeté

Ce ne sont pas deux versions d'une même chose : ce sont deux esthétiques de la performance. Le VJ assume un répertoire visuel, comme un DJ assume sa discothèque. Le live codeur assume un processus dont le résultat n'est pas connu d'avance.

Ce que les deux ont en commun

Zones de recouvrement et hybrides

Hydra utilisé comme outil VJ

De plus en plus de VJ « purs » utilisent Hydra en préparant des sketches qu'ils déclenchent comme des clips : Hydra devient une source dans un setup VJ, sans que le code soit projeté.

TouchDesigner et le node-based

TouchDesigner (Derivative, Toronto) brouille la frontière autrement : environnement node-based, on patche visuellement (comme Max/MSP), avec du Python à l'intérieur. C'est l'équivalent visuel de Pure Data / Max/MSP pour le son : programmation visuelle, pas live coding au sens TOPLAP, mais générative et temps réel.

Routage entre mondes

Hydra (navigateur)
   --[Browser Source directe, ou capture Spout/Syphon/NDI]-->
OBS Studio (composition et scéno)
   --[HDMI, ou sortie NDI]-->
Vidéoprojecteurs / LED walls
Strudel (rythme + OSC out)
   --[OSC]--> SuperCollider (synthèse audio)
   --[audio bus]--> analyse FFT
   --[OSC]--> Hydra (audio-réactivité)

Live coding dans OBS ?

Plus direct qu'avec un séquenceur fermé : une source Browser pointée sur un sketch Hydra hébergé en ligne se recharge dès que le fichier change. On peut donc éditer le code du visuel pendant que la scène OBS tourne, sans jamais quitter le navigateur — la frontière avec le live coding s'efface presque complètement.

Audio-réactivité : techniques communes

Analyse FFT

Décomposition d'un signal audio en bandes de fréquences. En général 4, 8 ou 16 bandes pour une réactivité de scène : la basse module les éléments lents/grands, les hautes les détails fins. Dans Hydra : a.fft[i]. Dans OBS : plugin audio-réactif tiers (ex. obs-audio-visualizer) ou pilotage externe par OSC. Dans SuperCollider : FFT.kr et Onsets.kr.

OSC (Open Sound Control)

Protocole UDP textuel, conçu en 1997 à Berkeley pour remplacer le MIDI. Format : /path/to/something <args>.

// dans Strudel
s("bd").osc("/kick")
// dans Hydra (avec extension OSC)
osc(20, 0.1).out(o0)
oscReceive("/kick", () => { osc(40, 0.2, 1).out(o0) })

MIDI

Plus ancien (1983), moins flexible mais universel. Utile pour brancher un contrôleur physique (Akai LPD8, Korg nanoKONTROL, Launchpad).

Synthèse

La distinction live coding / VJing est utile au début pour cadrer la pratique. Elle s'efface ensuite : sur scène, ce qui compte est la cohérence entre le geste et le rendu, pas l'étiquette de l'outil.

Le VJ choisit ce qu'il joue, le live codeur choisit ce qu'il invente, et le bon performeur sait quand basculer de l'un à l'autre.
Partie 2 — Approfondissements

5. Scène strasbourgeoise et glitch art en profondeur

La scène strasbourgeoise

La scène live coding strasbourgeoise s'organise autour de TOPLAP Strasbourg, antenne locale de l'organisation internationale TOPLAP fondée à Hambourg en 2004. Le format de diffusion principal est l'évènement Chaos Lab, série de soirées qui réunissent live codeurs, vidéastes en temps réel et public dans une logique d'algorave francophone.

Chaos Lab

Plusieurs éditions ont eu lieu depuis les débuts du collectif. Chaque édition rassemble plusieurs performeurs sur une même soirée, dans une logique de plateau partagé plutôt que de tête d'affiche. Le public est invité à voir le code, à poser des questions ; la plupart des sets sont captés vidéo et archivés.

Lieux et écosystèmes proches

Sociologie de la scène

  1. Une pratique transverse. Les Chaos Labs croisent musiciens noise, codeurs, plasticiens, danseurs ponctuellement.
  2. Un fonctionnement DIY. Pas de subvention massive, beaucoup d'auto-organisation.
  3. Une culture du partage. Captations en ligne, code parfois publié, ateliers gratuits ou à prix libre.

Glitch art en profondeur

Le glitch est l'esthétique du dysfonctionnement assumé. Plutôt que de masquer l'erreur, on l'invite, on la provoque, on l'organise. C'est l'une des esthétiques les plus directement compatibles avec le live coding : le code visible, le bug visible, la machine qui montre ses entrailles.

Origines

Nam June Paik, Magnet TV (1965). Un téléviseur cathodique avec un aimant posé dessus déforme le faisceau d'électrons : un acte glitch avant le mot.

Steina et Woody Vasulka. Dès les années 1970, exploration systématique des artefacts vidéo (drop-out, tearing, boucles de signaux), transformés en grammaire.

Émergence du terme. Le mot glitch s'impose dans la culture numérique des années 1990, d'abord côté musique (Oval, Pole, Alva Noto), puis côté arts visuels.

Théoriciens

Rosa Menkman — Glitch Studies Manifesto (2010), The Glitch Moment(um) (2011) — pose la distinction fondatrice entre glitch (pur), accident réel non reproductible, et glitch-alike, reproduction délibérée et contrôlée de cette esthétique.

Iman Moradi, thèse Glitch Aesthetics (2004), un des premiers travaux universitaires sur le sujet. Hugh S. Manon & Daniel Temkin, Notes on Glitch (2011) : le glitch comme expérience du réel matériel de l'image numérique.

Techniques — panorama

1. Databending. Ouvrir un fichier image (BMP, RAW, TIFF) avec un éditeur audio (Audacity), lui appliquer des effets sonores (réverb, écho, delay), le ré-enregistrer.

# Exemple : ouvrir un BMP dans Audacity
# 1. File > Import > Raw Data (U-Law / 8-bit / mono)
# 2. Sélectionner la zone après l'en-tête (54 octets pour BMP)
# 3. Appliquer un effet : Echo, Reverb, Phaser
# 4. Export > Other uncompressed > même format brut
# 5. Renommer en .bmp, ouvrir

2. Datamoshing. Les codecs vidéo (H.264) distinguent images-clés (I-frames) et images-différences (P-frames). Supprimer les I-frames fait que les P-frames suivantes « appliquent leur différence » à une image incohérente : écoulements, morphings. Référence : Takeshi Murata, Monster Movie (2005).

3. Pixel sorting. Popularisé par Kim Asendorf (2010). Pour chaque segment d'une ligne vérifiant un critère (luminosité, teinte), on trie les pixels selon une mesure.

# Pseudo-code (Python + PIL)
from PIL import Image
img = Image.open('input.jpg').convert('RGB')
w, h = img.size
pix = img.load()
for y in range(h):
    row = [pix[x, y] for x in range(w)]
    start, end = 100, 500
    row[start:end] = sorted(
        row[start:end],
        key=lambda c: 0.299*c[0] + 0.587*c[1] + 0.114*c[2]
    )
    for x, p in enumerate(row):
        pix[x, y] = p
img.save('output.png')

4. Mauvaise interprétation de codec / format. Forcer un programme à lire un fichier comme s'il était dans un autre format (ex : interpréter un fichier audio comme image).

5. Bit shifting et XOR. Manipuler les octets d'une image par décalage de bits ou XOR avec une clé. PNG résiste (CRC) ; BMP, TIFF, RAW se laissent faire.

# Python : XOR sur les pixels d'un BMP (saute les 54 octets d'en-tête)
with open('in.bmp', 'rb') as f: data = bytearray(f.read())
key = 0x37
for i in range(54, len(data)):
    data[i] ^= key
with open('out.bmp', 'wb') as f: f.write(data)

6. JPEG — coups dans la quantification. Modifier les tables de quantification DCT pour obtenir des artefacts de blocs caractéristiques (projet jpglitch de Daniel Temkin).

7. Compression à outrance et générations. Sauver, recompresser, répéter : la perte se cumule (équivalent visuel de I Am Sitting in a Room de Lucier).

8. Glitch GLSL en temps réel. Plutôt que de corrompre des fichiers, écrire des shaders qui simulent le glitch — l'approche de référence pour la performance.

// Hydra : un glitch numérique
osc(40, 0.1)
  .modulateScale(noise(2, 1).pixelate(20, 20), 0.3)
  .pixelate(50, () => 50 + a.fft[0]*200)
  .modulate(noise(10).thresh(0.5))
  .out()

9. Glitch matériel : circuit bending. Reed Ghazala, années 1970–90 : court-circuiter volontairement des jouets sonores et synthétiseurs bon marché.

10. Mojibake et corruptions de texte. Encodages mélangés (UTF-8/ISO-8859-1) produisant des séquences de caractères absurdes, utilisées comme matière par Jodi, Daniel Temkin.

Glitch et live coding : ce qui s'aligne

Pour aller plus loin

6. Le feedback en profondeur

Le feedback — la rétroaction — est l'un des grands principes esthétiques et techniques du temps réel. Une sortie qui revient en entrée, un système qui s'écoute lui-même, et qui dérive ou s'auto-stabilise. Aussi vieux que le micro qui siffle devant une enceinte, aussi neuf qu'un src(o0) dans Hydra.

Origine cybernétique

Le terme feedback entre dans le langage scientifique avec Norbert Wiener, Cybernetics: Or Control and Communication in the Animal and the Machine (1948). Deux régimes : feedback négatif (corrige l'écart, stabilise — thermostat) et feedback positif (amplifie l'écart, diverge, sature, oscille).

L'art du feedback en arts numériques navigue presque toujours dans la zone positive ou à la frontière : juste assez de divergence pour que le système ait l'air vivant, juste assez de stabilité pour qu'il ne sature pas instantanément.

Feedback audio

Feedback acoustique : le Larsen

Un microphone capte une enceinte qui amplifie ce qu'il capte ; certaines fréquences sont renforcées à chaque tour de boucle. Jimi Hendrix, à Monterey en juin 1967, joue Wild Thing avec la guitare collée à l'ampli, le Larsen comme matière musicale. Glenn Branca, Rhys Chatham en feront un vocabulaire dans les années 1980 à New York.

Alvin Lucier, I Am Sitting in a Room (1969)

Lucier enregistre lui-même prononçant un texte, puis rejoue et ré-enregistre cet enregistrement dans la même pièce, en boucle. À chaque génération, les résonances propres de la pièce sont accentuées, la voix se désintègre, et il ne reste qu'une nappe harmonique — la signature acoustique de la pièce. Manifeste : le médium est la composition.

Stockhausen, Mikrophonie I (1964)

Deux musiciens frottent un grand tam-tam ; deux autres déplacent des micros directionnels ; deux autres filtrent et spatialisent en direct. Un dispositif de feedback contrôlé.

No-input mixer (Toshimaru Nakamura)

Une table de mixage branchée sur elle-même, sans signal source : elle entre en oscillation et devient un instrument dont on « joue » en bougeant les potentiomètres (fin des années 1990).

Feedback synthétique : bouclages internes

// SuperCollider : Karplus-Strong minimal
SynthDef(\karplus, { |freq=220, amp=0.3|
    var sig, in;
    in = WhiteNoise.ar() * EnvGen.kr(Env.perc(0.001, 0.05));
    sig = LocalIn.ar(1) * 0.99;       // lit le buffer feedback
    sig = LPF.ar(sig + in, freq * 4);
    sig = DelayC.ar(sig, 0.05, 1.0/freq);
    LocalOut.ar(sig);                  // écrit dans le buffer feedback
    Out.ar(0, sig * amp ! 2);
}).add;

Trois lignes de feedback (LocalIn, DelayC, LocalOut) suffisent à transformer un bruit blanc bref en corde pincée. Le coefficient 0.99 contrôle la décroissance ; 0.999 prolonge à l'infini.

Feedback vidéo

Le feedback analogique : caméra-écran

Filmer un écran de TV qui affiche ce que la caméra filme : au moindre angle, un motif émerge (couloirs infinis, fractales, vortex). Steina et Woody Vasulka, Joan Jonas (Vertical Roll, 1972) ont systématiquement exploité cette boucle.

Feedback numérique : Hydra

Hydra a fait du feedback un primitif central avec src(o0) (lire le buffer de sortie comme une source).

// Feedback simple — le couloir infini
osc(10, 0.1, 0.8).out()

src(o0)
  .scale(0.98)        // chaque image est légèrement réduite
  .layer(osc(10, 0.1, 0.8).mask(shape(4, 0.3)))
  .out()
// Feedback modulé — le "Lucier visuel"
osc(20, 0.05, 1.4)
  .modulate(src(o0), 0.005)
  .blend(src(o0), 0.92)
  .out()
// Feedback chaotique
src(o0)
  .rotate(() => 0.01 + a.fft[0]*0.05)
  .scale(1.01)
  .modulateHue(src(o0), 0.4)
  .layer(osc(40, 0.1).luma(0.3).color(1, 0, 0))
  .out()

Concept clé : le coefficient de fuite

Tout feedback artistique repose sur un dosage entre persistance (combien on garde du passé) et nouveauté (combien on injecte). 0.95 et 0.99 ne donnent pas du tout la même musique.

Feedback en code : auto-modification

Extempore (Andrew Sorensen) permet de redéfinir des fonctions pendant qu'elles sont en cours d'exécution. Gibber (Charlie Roberts) intègre des notions de réflexivité où l'éditeur peut être modifié par le code joué — la limite asymptotique du live coding : le code s'auto-réécrit.

Feedback comme matière mathématique

La carte logistique (May, 1976)

x(n+1) = r · x(n) · (1 − x(n)) — un système discret à feedback dont le comportement varie selon r : convergence (r<3), oscillation (3<r<3.45), régime chaotique (r>~3.57).

// SuperCollider : carte logistique comme LFO
SynthDef(\logistic_lfo, { |out=0, r=3.8, freq=4|
    var x;
    x = LocalIn.kr(1, 0.5);
    x = r * x * (1 - x);
    LocalOut.kr(x);
    Out.kr(out, x);
}).add;

L'attracteur de Lorenz (1963)

Trois équations différentielles couplées (σ=10, ρ=28, β=8/3) tracent l'attracteur étrange en forme de papillon — trois signaux de contrôle corrélés mais imprévisibles.

Feedback : pratique pédagogique

  1. Acoustique. Un micro, une enceinte, on écoute le Larsen, on apprend à le contrôler.
  2. Numérique audio. Un Karplus-Strong en SuperCollider ou Sonic Pi, coefficient de 0.5 à 0.999.
  3. Numérique visuel. En Hydra, osc().out() puis src(o0), doser le blend.

Pour aller plus loin

7. Pure Data : programmation visuelle pour le temps réel

Présentation

Pure Data (Pd) est un environnement de programmation visuelle pour le son, l'image et l'interactivité, créé par Miller Puckette en 1996. On y « patche » en branchant des boîtes les unes aux autres, comme on connecterait des modules eurorack. C'est l'outil de référence des arts numériques depuis vingt-cinq ans : installations interactives, scénographies, instruments embarqués, prototypage temps réel.

Filiation : Patcher, Max, Pd

  1. 1985–1990, IRCAM, Paris. Miller Puckette développe Patcher sur Macintosh — le grand-père commun.
  2. 1990, IRCAM puis Cycling '74. Patcher devient Max — aujourd'hui Max/MSP/Jitter, commercial.
  3. 1996, UCSD. Puckette repart d'une page blanche, plus modulaire et libre : Pure Data. Open source dès l'origine.

Pd et Max sont conceptuellement frères, mais Pd est libre, Max payant et plus poli graphiquement.

Versions

Concepts fondamentaux

Patch

Un programme Pd est un patch : un canevas où l'on dispose des boîtes (objets, messages, nombres, atomes) reliées par des cordons.

Types de boîtes

Inlets et outlets

L'inlet de gauche est « chaud » : tout message reçu déclenche le calcul. Les inlets suivants sont « froids » : ils mettent à jour des valeurs internes sans déclencher. Conséquence : pour qu'un [+] additionne A et B, il faut envoyer B en froid d'abord, puis A en chaud.

Audio rate vs message rate

Message rate : asynchrone, événementiel (un bang, un nombre). Audio rate (~) : flux continu à la fréquence d'échantillonnage (44100, 48000 Hz).

Premier patch : un oscillateur

   [number 440]              <-- fréquence ajustable
        |
   [osc~ 440]                <-- oscillateur sinusoïdal audio
        |
   [*~ 0.3]                  <-- multiplication par 0.3 (volume)
        |
   [dac~]                    <-- sortie audio

Quatre boîtes, trois cordons, on entend un sinus à 440 Hz. Modifier le number change la fréquence en temps réel.

Feedback en Pd

On connecte une sortie à une entrée précédente. Pour des feedbacks sans larsen numérique, on utilise les paires [send~ bus] / [receive~ bus]. Karplus-Strong en Pd : [noise~] pulse bref → [delwrite~ corde 50] ← [delread~ corde] multiplié par 0.99 et filtré, rebouclé.

GEM et le visuel

GEM (Graphics Environment for Multimedia), extension graphique historique (Mark Danks, 1995) : 2D, 3D, vidéo, OpenGL en patch. Concurrence aujourd'hui avec Ofelia (openFrameworks) et des solutions externes via OSC vers Hydra/TouchDesigner.

Cas d'usage typiques

Pure Data et live coding : le faux opposé

Pd / MaxLive coding textuel
Programmation visuelleProgrammation textuelle
Patch préparé, modulé en liveCode écrit/modifié pendant la performance
Le geste est dans les contrôleursLe geste est dans la frappe
Le « programme » est figé visuellementLe programme est en mouvement permanent

Mais Pd permet de modifier le patch en cours d'exécution ; beaucoup de live codeurs textuels travaillent à partir de templates préparés ; des outils hybrides (Bespoke Synth, vvvv, TouchDesigner) brouillent encore plus la frontière. Pd est un cousin du live coding plus qu'un opposé.

Pour aller plus loin

8. Open source, art libre et Creative Commons

Cette section n'est pas un appendice juridique. C'est l'ossature politique et éthique du live coding, qu'il faut transmettre en même temps que la technique. Faire du live coding sans comprendre la culture du logiciel libre, c'est manquer la moitié du sujet.

Free software : l'origine politique

Richard Stallman et le projet GNU (1983)

Stallman, chercheur au MIT AI Lab, démissionne en 1983 et lance le projet GNU. En 1985, il fonde la Free Software Foundation. Il définit le logiciel libre par quatre libertés :

Le mot free est ici « libre », pas « gratuit ». La distinction « libre vs gratuit » est essentielle.

Copyleft et licence GPL

La licence GPL (1989, v2 en 1991, v3 en 2007) introduit le copyleft : tout dérivé d'une œuvre GPL doit lui-même être distribué sous GPL. Une logique virale et délibérée : la liberté se propage.

Open source : la reformulation pragmatique (1998)

En 1998, Eric Raymond, Bruce Perens et d'autres lancent l'Open Source Initiative. Discours plus pragmatique : l'open source, c'est efficace (Raymond, The Cathedral and the Bazaar, 1999 : « Given enough eyeballs, all bugs are shallow. »). Free software (FSF) : argument éthique. Open source (OSI) : argument pragmatique. En pratique, les licences agréées se recouvrent à 99%.

Familles de licences logicielles

Copyleft fort : GPL v2/v3 (SuperCollider est en GPL), AGPL. Copyleft faible : LGPL, MPL. Permissif : MIT, BSD (Pure Data, Hydra sont proches), Apache 2.0.

Les outils du cursus, leurs licences

OutilLicenceFamille
SuperColliderGPL v3Copyleft fort
Sonic PiMITPermissif
TidalCyclesGPL v3Copyleft fort
StrudelAGPL v3Copyleft fort + réseau
HydraAGPL v3Copyleft fort + réseau
Pure DataBSD-3Permissif
OBS StudioGPL v2Copyleft fort

Sept outils sur sept de l'écosystème du cursus sont libres — y compris côté VJing, en s'écartant volontairement du standard propriétaire de l'industrie (Resolume, MadMapper) au profit d'OBS Studio.

Creative Commons : libérer les œuvres, pas les programmes

En 2001, Lawrence Lessig fonde Creative Commons pour combler le manque de licences adaptées aux œuvres artistiques. Quatre clauses : BY (Attribution), SA (Share-Alike), NC (Non-Commercial), ND (No Derivatives).

Six combinaisons, de la plus libre à la plus restrictive : CC BY, CC BY-SA (licence de Wikipédia), CC BY-NC, CC BY-NC-SA, CC BY-ND, CC BY-NC-ND. Et hors combinaisons : CC0, équivalent du domaine public.

Critique des clauses NC et ND

NC est juridiquement flou et freine la circulation autant qu'un copyright classique. ND interdit le remix — contraire à l'esprit des arts numériques. Pour un live codeur, CC BY ou CC BY-SA sont les choix naturels, cohérents avec le manifeste TOPLAP.

Free Art License (LAL)

La Licence Art Libre, publiée en 2000 par le collectif Copyleft Attitude à Paris. Conçue spécifiquement pour l'art, copyleft pur. Compatible avec CC BY-SA depuis 2014.

Open art, art libre, art en partage

Limites et tensions

Qu'enseigner concrètement

  1. Lire les licences des outils qu'on utilise.
  2. Choisir une licence pour son propre travail dès le début (par défaut : CC BY-SA 4.0 pour les œuvres, MIT ou GPL v3 pour le code).
  3. Créditer systématiquement.
  4. Publier le code de ses performances, pas « quand ce sera propre ».
  5. Utiliser des plateformes neutres (Codeberg, Gitea auto-hébergé).

Pour aller plus loin

↑ Retour au sommaire