Chipgrid / Documentation / Référence
Temps et logique
Horloges, battements, séquences, hasard et calcul : les opérateurs qui fabriquent les nombres et les bangs dont tout le reste se sert.
C horloge
Compte les ticks et écrit le compte dessous.
Compte les ticks. Écrit (tick ÷ pas) mod mod en dessous : 1C4 compte 0 1 2 3 0 1 2 3… Branchez-le sur une séquence S pour parcourir une mélodie.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | pas | divise le compte des ticks |
| à droite | mod | combien de valeurs / combien de ticks |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. Les vieux jeux faisaient tourner leur musique sur un compteur lié à l’écran : 50 images par seconde en Europe (PAL), 60 aux États-Unis et au Japon (NTSC). Le tempo se comptait en « images par ligne » — c’est pourquoi un même jeu joue plus vite sur une console américaine.
Exemple
# HORLOGE - exemple #
.
...2C8
.1D2.SCDEFGABb
...P4.12
2C8 compte 0 1 2 … 7, un pas tous les 2 ticks, et écrit le compte dessous. Ce nombre est l’index de la séquence S : il parcourt les 8 notes. D2 fait jouer P tous les 2 ticks : chaque pas est entendu une fois, une gamme qui monte.
À essayer
- Changez le
8en4: seules les 4 premières notes bouclent. - Changez le pas
2en4: chaque note est jouée deux fois. - Essayez
3comme modulo : une boucle de 3 sur une mesure de 4.
D battement
Écrit un bang * dessous tous les N ticks.
Écrit un bang * en dessous tous les pas × mod ticks. D4 = tous les 4 ticks = chaque temps (un tick est une double-croche). D8 tous les deux temps, 3D3 tous les 9 — décalé.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | pas | divise le compte des ticks |
| à droite | mod | combien de valeurs / combien de ticks |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. Un tick = une double-croche : 4 ticks par temps. Les trackers (Soundtracker 1987, FamiTracker, LSDJ sur Game Boy) comptent pareil, une ligne par double-croche.
Exemple
# BATTEMENT - exemple #
.
...D4....D6
....B3C2o.N530
D4 écrit un bang tous les 4 ticks (chaque temps) à côté d’une grosse caisse au triangle. D6 bange tous les 6 ticks à côté d’une caisse claire en bruit. Ils se retrouvent tous les 12 ticks : une polyrythmie, 3 contre 2.
À essayer
- Changez
6en8: grosse caisse à chaque temps, caisse claire tous les 2 temps — un rythme rock. - Tapez un pas à gauche :
2D4bange tous les 2 × 4 = 8 ticks. - Essayez
D5ouD7pour des rythmes qui ne tiennent pas en place.
S séquence
Choisit le pas donné par son index (à gauche) et l’écrit dessous.
Une séquence : les cases à sa droite (jusqu’à 16, jusqu’à une case vide) sont les pas. L’index à sa gauche choisit le pas écrit en dessous. Les pas peuvent être des notes (CEGA), des nombres ou des bangs : *000*000 est un motif de batterie (0 = silence).
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | index | quel pas sortir |
| à droite, jusqu’à une case vide | pas | jusqu’à 16 : notes, nombres ou bangs |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. C’est un pattern de tracker couché sur le côté. Des compositeurs comme Koji Kondo ou Rob Hubbard écrivaient la musique en colonnes de codes de notes, une ligne par tick.
Exemple
# SÉQUENCE - exemple #
.
.1Cg
...S*0*0*0*0*0*0*0*0
..J.N010
...S0000*0000000*000
..J.N530
...S000000*000000*0*
....N421
Une horloge 1Cg compte 0–15 (une mesure de 16 ticks). Trois séquences la lisent — les J font descendre le compte. Leurs pas sont des bangs * et des silences 0 : un motif de batterie sur une grille de 16 pas, comme une boîte à rythmes. Chacune joue un bruit différent.
À essayer
- Déplacez les
*dans une ligne : le rythme change à la mesure suivante. - Une séquence peut aussi contenir des notes :
SCEGAdevant l’entrée note d’une voix. - Raccourcissez un motif (finissez-le par une case vide) : il boucle sur moins de pas.
R hasard
Écrit un nombre au hasard dessous, à chaque tick.
Écrit en dessous une valeur au hasard entre min et max, à chaque tick. Placez-le sur l’index d’une séquence pour tirer des notes au hasard dans une gamme.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | min | plus petite valeur |
| à droite | max | plus grande valeur |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. Les consoles n’avaient pas de puce de hasard. Les jeux utilisaient la même astuce que le canal de bruit — un registre à décalage — ou lisaient le compteur d’images au moment où l’on appuyait sur un bouton.
Exemple
# HASARD - exemple #
.
...0R4
.1D2.SCDEGA
...P5.12
.
....0Rn
....X.c3
.
.T3
0R4 écrit un nombre au hasard de 0 à 4 à chaque tick. C’est l’index d’une séquence qui contient une gamme pentatonique (do ré mi sol la) : les notes sont au hasard, mais jamais fausses. Dessous, un second R donne un x au hasard à un pixel X : il saute le long d’une ligne.
À essayer
- Changez le max
4en2: seulement do, ré, mi. - Remplacez la gamme par vos notes, par exemple
SCdFGa(une gamme plutôt mineure). - Changez le max
ndu pixel en8: il reste à gauche.
A addition
Écrit a + b dessous.
Additionne a + b et l’écrit en dessous (en base 36). Pour transposer : un index de note + 7 = une quinte plus haut.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | a | premier nombre |
| à droite | b | second nombre |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. Le processeur 6502 de la NES, du C64 et de l’Apple II passait sa vie à faire des ADC (addition avec retenue) sur un seul octet — 8 bits, de 0 à 255. C’est ça, « 8 bits ».
Exemple
# ADDITION - exemple #
.
...2C4
.....S0247
...D2.A3
....P4.12
La séquence contient une petite mélodie en demi-tons au-dessus de do : 0 2 4 7 (do ré mi sol). A ajoute 3 à chacun avant qu’il n’arrive à P : le même air, 3 demi-tons plus haut (ré# fa sol la#). C’est transposer.
À essayer
- Changez
3en0,1ou2pendant la lecture : l’air garde sa forme et se déplace d’un bloc. - Attention : une somme au-delà de 10 s’écrit avec une lettre (
b,c…), et dans une entrée note,a–gsont des noms de notes (c= do#). Restez jusqu’à 10, ou transposez par octaves sur l’entrée octave.
J saut
Copie la case du dessus dans celle du dessous.
Copie la case du dessus dans la case du dessous. Une colonne de J partage une même horloge entre plusieurs séquences (voir le chapitre Batterie).
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| au-dessus | entrée | case à copier |
| dessous | sortie | sortie, écrite à chaque tick |
Exemple
# SAUT - exemple #
.
...2C8
.1D2.SCEGEAGED
...P4.12
.....J
...Xv.4
.
.M05
La note de la mélodie va dans P. J recopie la même note une case plus bas, dans le y d’un pixel X au bord droit (x = v = 31). M05 fait défiler l’image vers la gauche : chaque note laisse un point à sa hauteur — un piano roll.
À essayer
- Empilez deux
Jpour descendre une valeur de deux cases. - Changez la mélodie : le dessin suit.
W onde
Écrit une onde douce (un sinus) dessous : 0 → max → 0, un cycle tous les pas×4 ticks.
Une onde : écrit un sinus dessous, qui va doucement de 0 → max → 0, un cycle tous les pas × 4 ticks (4W = une fois par mesure). La phase le décale : deux ondes décalées d’un quart (9) dessinent un cercle. Branchez-la sur une coordonnée pour un mouvement qui ralentit aux bords.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | pas | divise le compte des ticks |
| à droite | max | plus grande valeur |
| 2e à droite | phase | où commence le cycle (0–35 = un cycle entier) |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. Les démos ne calculaient jamais de sinus en direct : le 6502 ne savait pas multiplier. Elles les lisaient dans une table de sinus — 256 octets précalculés — parcourue par un compteur. Logos qui rebondissent, copper bars, scrollers : tout ça, ce sont des tables de sinus.
Exemple
# ONDE - exemple #
.
...4Wn
..Xv.6
.
.M05
4Wn va doucement de 0 à 23 (n) et revient, un cycle tous les 16 ticks. Il alimente le y d’un pixel au bord droit, et M05 fait défiler vers la gauche : l’écran dessine une sinusoïde, comme un oscilloscope.
À essayer
- Pas
2: deux fois plus vite. Pas8: lent et large. - Max
8: une petite onde en haut. - Ajoutez une phase à droite :
4Wn9commence un quart plus tard.
Y envoi
Envoie la valeur à sa gauche dans la case dx à droite, dy en bas.
Envoie la valeur à sa gauche dans une case dx à droite et dy en bas. Utile quand une entrée ne peut pas être alimentée juste au-dessus — par exemple le y d’un X dont le x est déjà alimenté par une onde.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | valeur | ce qu’il faut envoyer |
| à droite | dx | combien de cases à droite |
| 2e à droite | dy | combien de cases en bas |
dx à droite, dy en bas | sortie · cible | la case où il écrit |
Histoire. C’est une écriture à une adresse : l’instruction STA du 6502 écrivait un octet n’importe où en mémoire — y compris dans les registres de la puce vidéo.
Exemple
# ENVOI - exemple #
.
....3Wn
......Y23
.
......1Cw
......X..4
.
.T1
Le pixel X prend son x d’une horloge juste au-dessus. Son entrée y est deux cases à droite — rien ne peut l’atteindre par le haut. L’onde 3Wn passe donc dans Y23, qui l’envoie 2 cases à droite et 3 en bas, droit dans ce y. Le point trace une sinusoïde.
À essayer
- Survolez la case où
Yécrit : elle est marquée comme sa cible. - Changez
Y23enY33: l’onde tombe dans l’entrée couleur.
I écoute
Écoute un canal de la puce : écrit son volume (0–f) dessous.
Écoute un des quatre canaux de la puce et écrit son volume actuel (0–f) dessous : 0 pulse 1, 1 pulse 2, 2 triangle, 3 bruit. Branchez-le sur une largeur, un rayon ou une couleur et l’image suit la musique.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à droite | canal | 0 pulse 1 · 1 pulse 2 · 2 triangle · 3 bruit |
| dessous | sortie | sortie, écrite à chaque tick |
Histoire. Les programmes pouvaient relire la puce sonore : le SID du C64 permettait de lire l’enveloppe de la voix 3, et les démos s’en servaient pour faire pulser l’image avec la musique.
Exemple
# ÉCOUTE - exemple #
.
...2C8
.1D2.SCEGEAGED
...P4.12
.
.....I0
..Qgc.3
.
.T5
La mélodie joue sur le pulse 1. I0 écoute ce canal et écrit son volume (0–f) dessous, dans le rayon d’un anneau. Chaque note commence fort et s’éteint : l’anneau bondit et rétrécit à chaque note.
À essayer
- Changez
I0enI3(bruit) : rien, aucun bruit ne joue. Ajoutez-en un ! - Allongez les notes (
P4.14) : une respiration plus lente.
! tempo
Règle le tempo avec les trois chiffres à sa droite : !150 = 150 BPM.
Règle le tempo à chaque tick pendant la lecture. Les trois cases à sa droite se lisent comme un nombre : !150 = 150 BPM, de 40 à 999. Chacune peut être alimentée par-dessus : une onde ou une séquence peut donc faire bouger le tempo. Sans chiffres, il ne fait rien. Pendant la lecture, un ! a priorité sur la case BPM. Il n’y a qu’un seul tempo : s’il y a plusieurs !, c’est le dernier tapé ou modifié qui décide, et les autres sont grisés. Effacez-le et le précédent reprend la main. Avec une porte, ?! change le tempo sur un bang.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à droite | centaines | premier chiffre du BPM |
| 2e à droite | dizaines | deuxième chiffre du BPM |
| 3e à droite | unités | troisième chiffre du BPM |
Exemple
# TEMPO - exemple #
.
..8Wi
.!1.0
.
.1D4
.
..B2C2
Une onde lente W écrit dans le chiffre des dizaines de !1.0 : le tempo oscille entre 100 et 280 BPM. La grosse caisse en dessous accélère et ralentit avec lui.
À essayer
- Enlevez le
Wet tapez un chiffre à la place de sa sortie : un tempo fixe. - Changez le
1en5: 500 BPM et plus.
? gate
Porte : l’opérateur à sa droite ne tourne que si un bang touche la porte. Rouge = elle ne peut rien faire là.
Une porte. L’opérateur à sa droite ne tourne plus tout seul et ne s’exécute que lorsqu’un bang touche la porte, par la gauche, le haut ou le bas. ?X dessine sur le temps, ?V change de palette à une nouvelle partie, ?! change le tempo au bon moment, ?T estompe sur la caisse claire. Les voix, F et K se déclenchent sur un bang à la porte, comme s’il les touchait. Une porte affichée en rouge ne peut rien faire : mobiles, ; et opérateurs qui ont une entrée à gauche, comme C ou D.
Exemple
# GATE - exemple #
.
.1D40Rv
...?X.c7
.
.T2
1D4 bange tous les 4 ticks et le bang touche la porte. Le X derrière ne dessine qu’à ce moment-là, à un x au hasard : les points tombent sur le temps.
À essayer
- Effacez le
?: X dessine de nouveau à chaque tick. - Mettez une porte devant
T2: l’image ne s’estompe que sur un bang.
@ envoi
Envoie sa valeur de gauche, ou un bang, sur un lien nommé. Majuscule = partagé avec la salle.
Envoie sur un lien nommé : un fil sans câble, pour placer le code n’importe où sur la grille. Il envoie la valeur à sa gauche, ou un bang si un bang est à sa gauche, au-dessus ou en dessous. & avec le même nom le reçoit. Un nom en minuscule n’est qu’à vous. Un nom en majuscule est partagé avec toute la salle en multijoueur : quelqu’un envoie sur B, et qui veut écoute. Un bang arrive dans le même tick ; une valeur arrive au son dans le même tick et aux autres opérateurs au tick suivant.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à gauche | valeur | ce qu’il faut envoyer |
| à droite | nom | minuscule = à vous · majuscule = partagé avec la salle |
Exemple
# ENVOI - exemple #
.
.1D4
...@k
.
.
..&k
...P4C24
Le bang sous D entre dans @k, et &k le ressort en dessous de lui, juste à côté de la voix. Pas de câble : déplacez le bas où vous voulez, ça joue encore.
À essayer
- Ajoutez un second
&kailleurs, avec sa propre voix. - En multijoueur, mettez
Kau lieu dek: tout le monde peut écouter.
& receive
Reçoit depuis un lien nommé et l’écrit en dessous.
Reçoit ce qu’un @ envoie sous le même nom et l’écrit en dessous : la dernière valeur envoyée, ou un bang pendant un tick. Plusieurs & peuvent écouter le même nom.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à droite | nom | minuscule = à vous · majuscule = partagé avec la salle |
| dessous | sortie | sortie, écrite à chaque tick |
Exemple
# RECEIVE - exemple #
.
.2C4
...@n
.
...&n
.D2.SCEGA
..P4.24
Cette fois le lien transporte une valeur : le compte de l’horloge voyage de @n à &n et parcourt la séquence en dessous.
À essayer
- Changez le
2de2C4: la mélodie accélère, à distance.
; swell
Saute à sa crête sur un bang, puis redescend : branchez-la et tout bat.
Une impulsion. Un bang la met à crête (15 si vide), puis elle baisse de un tous les chute ticks et écrit sa valeur en dessous. Branchez-la sur une taille, une couleur ou une quantité et tout bat avec la musique : la grosse caisse fait sauter l’anneau, qui se rétracte tout seul.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à droite | crête | où un bang la met (vide = 15) |
| 2e à droite | chute | ticks entre deux baisses |
| dessous | sortie | sortie, écrite à chaque tick |
Exemple
# SWELL - exemple #
.
..1D8
....;f1
.Qgc.7
.
.T41
Chaque bang met ; à f (15), puis elle baisse de 1 à chaque tick. Sa valeur est le rayon de l’anneau : il saute puis se rétracte.
À essayer
- Changez la chute
1en3: une impulsion plus lente.
, eye
Regarde un bloc de l’image et écrit sa couleur, ou un bang, en dessous.
Un œil : il regarde un bloc de l’image, en x, y, et écrit en dessous ce qu’il voit : la couleur, ou rien. Avec allumé à 1, il écrit un bang si quelque chose y est dessiné. L’image peut donc jouer la musique : dessinez des barres, faites-les parcourir par un œil, et chaque barre est une note. Il lit le calque où il se trouve : une ligne de balayage sur un autre calque ne le gêne pas.
| Case | Rôle | Ce qu’elle prend |
|---|---|---|
| à droite | x | 0–31 blocs (×5 pixels) |
| 2e à droite | y | 0–23 blocs |
| 3e à droite | allumé | 1 = un bang s’il y a quelque chose |
| dessous | sortie | sortie, écrite à chaque tick |
Exemple
# EYE - exemple #
.
.H0841
.
.1Cw
.,.81
..P5C02
Une barre est dessinée à partir de x = 0, sur 4 blocs, et l’horloge fait parcourir la ligne à l’œil. Quand il passe sur la barre, il écrit un bang et la voix joue. L’image est la partition.
À essayer
- Changez la largeur de la barre : un motif de notes plus long.