diff --git a/viz/index.html b/viz/index.html
index 5643e37..5a4e74e 100644
--- a/viz/index.html
+++ b/viz/index.html
@@ -1137,6 +1137,10 @@
The Groove — one feel for the whole pattern. The grooves tab carries Ableton's Groove Pool, reduced to the 16-step grid: swing lays the off-beats back, humanize is a touch of random timing so nothing is machine-stiff, velocity lets each hit breathe in loudness, and an amount master scales the lot — with one-click presets (straight, swing 16, MPC 8-4, drunk). Under the roll sit three expression lanes: velocity (how hard each step hits), chance (how likely each step fires at all — drop a step to 40% and it plays four times in ten, so the loop varies itself), and ratchet (how many times a step re-fires, 1–4 — an instant roll or 32nd-note glitch from a single step, and if that step is a Play-One stack each sub-hit re-rolls the note). The feel and the per-step shaping save with your patch. And the texture voices (the filter, the glitch, the reverb, the drive) get their own lane: a ⬗ p-lock, the Pocket-Operator move — pin that voice to a blocky value on any step, so the filter jumps to a different cutoff on every hit, disjointed and alive; drag a step below the lane to hand it back to the world. And any lane takes a ⬢ Euclidean fill — say how many pulses to spread across the steps and they distribute themselves as evenly as possible (E(3,8) is the tresillo, E(5,8) the cinquillo, E(4,16) four-on-the-floor), with steps and rotate to taste: the oldest rhythms of the world fall straight out of the arithmetic.
♪ One scale for the whole planet, and ⬛ Play One for the glitch. Set a root and scale at the top of the grooves tab and every melody you draw is in that key — the piano roll is only ever the scale's own notes, so nothing lands wrong; change the scale and your patterns re-harmonise in place. And a column isn't limited to one note: stack several and it turns blue — a Play One group, from which the sequencer picks a single note at random each time it fires. Stack a handful of in-key notes under a fast Euclidean fill and the line glitches itself into something new on every pass, always in tune. (Adapted from Ableton's Group Notes → Play One.)
⤳ Follow actions — the song composes itself. Give any clip (A/B/C) a follow action in the grooves tab — play again, next, any, any other, stop — with a chance, and once the arrangement is playing that clip can hand off to another at the bar line instead of just repeating. Set two clips to "any other" and they trade the lane back and forth; sprinkle a low-chance divert and the piece drifts. As Ableton's manual puts it, "structures that repeat but can also be surprising… never exactly repeat." A ⤳ marks any clip that can divert. Nothing changes for arrangements without follow actions — they loop exactly as written.
+🥁 The beat — five drums on the godtime clock. Press B (or the 🥁 button) and the beat drawer opens: five lanes — kick, snare, clap, closed hat, open hat — synthesised from oscillators and noise like every other voice, so they ride the world's saturation, crush and reverb too. Click a step to draw; ▶ starts all five at once. They live on the same godtime clock as the grooves, and the feel — swing, humanize, velocity, amount — is the very same the tracks use (shared, not copied). The same three expression lanes shape each step (velocity, chance, ratchet), and ⬢ euclid spreads N pulses across the sixteen. Open the 🎛 kit drawer to voice each drum: tune, punch, decay, level, pan — and on the kick, duck: every kick parts the sea, dipping the pads and drone out from under itself so the thump lands in its own air. The beat saves with your patch; a mood never silences it — the world's hands change, but the beat belongs to you; and a beat drawn in zero counts as a build, so leaving zero offers to keep it.
+Keys 1–5 & ⏺ rec — finger-drum the kit. With the beat open the number row is the kit — 1 kick, 2 snare, 3 clap, 4 hat, 5 open hat — played by hand, live, straight into the world's FX. Hold ⇧ for the ghost note, softer. Arm ⏺ rec and every tap writes itself into the grid, quantized to the nearest sixteenth — tap a hi-hat pattern into a quiet pocket and it's a lane — so you play the beat in rather than clicking it out.
+🌾 AMPLER — there is ample, for god is abundant. The SP-404 move, made of the planet. Right-click the sky → 🌾 AMPLER: ⏺ capture a stretch of the sounding world (1.5, 3 or 6 seconds of the live master — and since a fed tab is the world, that YouTube loop counts), then ✂ chop it into 8 or 16 slices. Tap a slice to audition it, ⇄ to play it backwards, then seat a slice onto a drum voice — and that lane stops synthesising and starts playing the world. The slice rides the voice's own level and pan and, on the kick, its duck; a slice on the open hat still chokes under a closed one — the machine's rules don't care whether a hit is oscillator or sample. Sample anything playing on the machine, chop it, and it's a kit. Session-only for now: the slices don't travel with your patch (yet).
+The beat leaves the building. The drum lanes ride MIDI out on channel 10 — General MIDI percussion, kick 36, snare 38, clap 39, closed hat 42, open hat 46 — so with an out port chosen in ⚙ they play your hardware and DAW exactly as the note lanes do. And they land in export .mid: draw a beat, hit export, and the Standard MIDI File carries a channel-10 drum track (looped across the arrangement's bars) alongside your lead and bass — drag it into Ableton and the planet's rhythm is already programmed.
📽 The stage — send the visual to any screen. Right-click the sky → the stage and a clean black mirror window opens, fed live from the canvas. Drag it to a projector, an AirPlay display, a second monitor — macOS treats it like any window — and double-click for fullscreen. The stage has a camera: the whole view by default (whatever you're in — a skin, the wheel, mind mode's POV), or right-click any node → project this node and the camera glides after that one sphere through its orbits, or project its station to frame a whole wheel and its satellites. Change cameras live from the menus while the projector runs; the audience sees the camera breathe from subject to subject.
🕸 The commune — play together, properly. Right-click the sky → the commune. This is for signed-in players: your session rides the connection, so the hub knows exactly who everyone is — no impostors, no setup, no Bluetooth. One of you hosts: name the room, then ✉ invite the others by their username (they must be on the site — invitations reach the present). The invited see the invitation arrive live and join or decline; anyone may leave whenever they wish, and if the host leaves, the room closes with them. Then the sections: members claim voices (right-click any voice, or the panel's picker), or the host allocates them — this bass to her, those pads to him, the godtime itself to whoever conducts — and the hub enforces it: only the section's holder can speak for it. From that moment your levels, mutes, grooves and arranger lanes for what you hold follow your hands on every screen, same living room or opposite sides of the earth. The world — the Source — stays identical for everyone, because it always was. Three people, one planet, one instrument.
diff --git a/viz/manual.html b/viz/manual.html
index 39fa180..9cad154 100644
--- a/viz/manual.html
+++ b/viz/manual.html
@@ -239,6 +239,105 @@
.seqcell.on { background: #78a0ff; box-shadow: 0 0 6px rgba(120,160,255,0.6); }
.seqcell.cur { outline: 1px solid rgba(255,238,150,0.85); }
+ /* 🥁 GODRUM — the beat panel: a sibling of the arranger, sharing its groove & clock */
+ #beat {
+ position: fixed; left: 12px; right: 12px; bottom: 54px; z-index: 13;
+ background: rgba(10,15,26,0.95); border: 1px solid rgba(120,150,200,0.35);
+ border-radius: 12px; padding: 8px 10px; display: none; color: #c7d4ea;
+ font-size: 11px; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
+ max-height: 46vh;
+ }
+ #beat.open { display: flex; flex-direction: column; }
+ #beat .agrip { height: 8px; margin: -8px -10px 2px; cursor: ns-resize; border-radius: 12px 12px 0 0; }
+ #beat .agrip:hover { background: rgba(150,180,230,0.25); }
+ #beat .atop { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
+ #beat .abody { flex: 1; min-height: 0; overflow-y: auto; }
+ #beat .arow { display: flex; align-items: center; gap: 3px; margin: 2px 0; }
+ #beat .albl { color: rgba(150,170,200,0.65); font-size: 10px; flex: 1; }
+ #beat .aclose { cursor: pointer; color: #8fa4c8; font-size: 16px; padding: 0 4px; }
+ #beat .asel { background: rgba(30,40,60,0.85); color: #dbe6f5; border: 1px solid rgba(120,150,200,0.3);
+ border-radius: 6px; padding: 3px 8px; font-size: 11px; }
+ #beat .btitle { color: #cfe0ff; font-size: 12px; font-weight: 600; flex: 0 0 auto; }
+ #beat .midibtn { background: rgba(40,52,74,0.85); color: #b9c8e2; border: 1px solid rgba(120,150,200,0.25);
+ border-radius: 6px; padding: 3px 10px; font-size: 11px; cursor: pointer; }
+ #beat .midibtn.on { background: rgba(120,220,150,0.22); color: #bff0c9; border-color: rgba(130,230,160,0.55); }
+ #beat .midibtn.rec-on { background: rgba(230,90,90,0.28); color: #ffd2d2; border-color: rgba(240,110,110,0.6); }
+ #beat .bmini { padding: 2px 7px; font-size: 11px; line-height: 1.1; }
+ #beat .grow { gap: 12px; flex-wrap: wrap; align-items: center; margin: 4px 0 2px; }
+ #beat .gctl { display: inline-flex; align-items: center; gap: 5px; }
+ #beat .gctl .glbl { color: rgba(160,180,215,0.8); font-size: 10px; min-width: 48px; text-align: right; }
+ #beat .gctl input[type=range] { width: 74px; accent-color: #7fa0e6; height: 3px; }
+ #beat .gctl .gval { color: #aebbdc; font-size: 10px; min-width: 30px; }
+ #beat .glbl { color: rgba(160,180,215,0.8); font-size: 10px; }
+ #beat .gpreset { font-size: 10px; padding: 2px 7px; opacity: 0.85; }
+ #beat .eunum { width: 52px; background: rgba(20,26,40,0.8); color: #cfe0f5;
+ border: 1px solid rgba(120,150,220,0.3); border-radius: 4px; font-size: 11px; padding: 1px 4px; }
+ #beat .emrow { gap: 6px; align-items: center; margin-top: 6px; }
+ #beat .blane { display: flex; align-items: center; gap: 4px; margin: 3px 0; }
+ #beat .blead { display: flex; align-items: center; gap: 4px; width: 104px; min-width: 104px; }
+ #beat .bname { flex: 1; color: #aebfda; font-size: 10px; text-align: right; overflow: hidden;
+ white-space: nowrap; text-transform: uppercase; letter-spacing: 0.4px; }
+ #beat .bsteps { display: grid; grid-template-columns: repeat(16, 26px); gap: 3px; }
+ #beat .seqcell { width: 26px; height: 20px; border-radius: 4px; }
+ #beat .exprlane { display: grid; grid-template-columns: repeat(16, 26px); gap: 3px;
+ height: 46px; align-items: end; margin: 4px 0 8px 108px; }
+ #beat .exprcell { width: 26px; height: 46px; display: flex; align-items: flex-end;
+ background: rgba(30,36,54,0.6); border-radius: 4px; cursor: ns-resize; }
+ #beat .exprcell.bar { background: rgba(40,48,72,0.7); }
+ #beat .exprbar { width: 100%; background: rgba(120,150,230,0.35); border-radius: 4px; min-height: 2px; }
+ #beat .exprbar.lit { background: rgba(140,175,255,0.85); }
+ #beat .bkit { gap: 8px; align-items: flex-start; }
+ #beat .bvoice { display: inline-flex; flex-direction: column; gap: 2px; padding: 4px 6px;
+ background: rgba(20,26,40,0.5); border-radius: 6px; }
+ #beat .bvn { color: #9fb6dc; font-size: 10px; text-align: center; margin-bottom: 1px;
+ text-transform: uppercase; letter-spacing: 0.4px; }
+ #beatbtn {
+ position: fixed; right: 14px; bottom: 128px; z-index: 12; padding: 6px 12px;
+ border-radius: 9px; background: rgba(20,28,44,0.85); color: #9fb4d8;
+ border: 1px solid rgba(120,150,200,0.3); cursor: pointer; font-size: 12px;
+ -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); user-select: none;
+ }
+ #beatbtn:hover { color: #dbe8ff; border-color: rgba(150,180,230,0.6); }
+ #beatbtn.on { color: #cfe0ff; border-color: rgba(150,200,255,0.7); background: rgba(30,42,66,0.9); }
+ #beatbtn.hidden { display: none; }
+
+ /* 🌾 AMPLER — right-side sample-slicing panel (the bottom is the drawers' turf) */
+ #ampler {
+ position: fixed; right: 12px; top: 64px; width: 300px; z-index: 13;
+ background: rgba(10,15,26,0.95); border: 1px solid rgba(120,150,200,0.35);
+ border-radius: 12px; padding: 8px 10px; display: none; color: #c7d4ea;
+ font-size: 11px; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
+ max-height: 82vh; overflow-y: auto;
+ }
+ #ampler.open { display: flex; flex-direction: column; gap: 6px; }
+ #ampler .atop { display: flex; align-items: center; gap: 8px; }
+ #ampler .btitle { color: #cfe0ff; font-size: 12px; font-weight: 600; flex: 1; }
+ #ampler .aclose { cursor: pointer; color: #8fa4c8; font-size: 16px; padding: 0 4px; }
+ #ampler .row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
+ #ampler .albl { color: rgba(150,170,200,0.7); font-size: 10px; }
+ #ampler .midibtn { background: rgba(40,52,74,0.85); color: #b9c8e2; border: 1px solid rgba(120,150,200,0.25);
+ border-radius: 7px; padding: 3px 9px; cursor: pointer; font-size: 11px; }
+ #ampler .midibtn.on { background: rgba(230,120,120,0.22); color: #ffc9c9; border-color: rgba(230,130,130,0.55); }
+ #ampler .midibtn:disabled { opacity: 0.6; cursor: default; }
+ #ampler .bmini { padding: 2px 7px; }
+ #ampler .asel { background: rgba(30,40,60,0.85); color: #dbe6f5; border: 1px solid rgba(120,150,200,0.3);
+ border-radius: 6px; padding: 2px 5px; font-size: 10px; }
+ #ampler canvas { width: 100%; height: 54px; background: rgba(20,26,40,0.7); border-radius: 6px; display: block; }
+ #ampler .sgrid { display: grid; gap: 3px; }
+ #ampler .scell { position: relative; height: 30px; border-radius: 4px; background: rgba(40,52,74,0.7);
+ border: 1px solid rgba(120,150,200,0.25); cursor: pointer; font-size: 9px; color: #9fb6dc;
+ display: flex; align-items: center; justify-content: center; }
+ #ampler .scell:hover { border-color: rgba(150,180,230,0.6); }
+ #ampler .scell.sel { border-color: rgba(150,200,255,0.85); background: rgba(50,66,96,0.85); }
+ #ampler .scell.rev { background: rgba(120,150,230,0.32); }
+ #ampler .scell .rv { position: absolute; top: 0; right: 2px; font-size: 9px; color: #bcd; }
+ #ampler .scell .rv:hover { color: #eaf2ff; }
+ #ampler .amap { display: flex; flex-direction: column; gap: 3px; }
+ #ampler .maprow { display: flex; align-items: center; gap: 5px; }
+ #ampler .mvn { width: 40px; color: #aebfda; font-size: 10px; }
+ #ampler .x { cursor: pointer; color: #ff8b8b; font-weight: 700; padding: 0 3px; }
+ #ampler .hint { color: rgba(130,150,180,0.6); font-size: 10px; line-height: 1.5; }
+
/* right-click context menu — every setting, on everything */
#ctxmenu {
position: fixed; z-index: 30; display: none; width: 240px; max-height: 72vh;
@@ -427,7 +526,7 @@
@keyframes gsTwinkle { from { opacity: 0.55; } to { opacity: 1; } }
/* ---- the grimoire (manual) ---- */
- #grimtrigger { position: fixed; top: 76px; left: 36px; z-index: 11; cursor: pointer;
+ #grimtrigger { position: fixed; top: 24px; left: 36px; z-index: 11; cursor: pointer;
color: rgba(180,200,235,0.75); font-size: 12px; letter-spacing: 0.5px; user-select: none;
border-bottom: 1px dotted rgba(160,185,225,0.4); }
#grimtrigger:hover { color: #eaf1ff; }
@@ -1006,6 +1105,7 @@
Press P — performance mode. Everything that is not the world vanishes: the wordmark, the header, the counts, the godtime readout, the ticker, every button and chip — pure visuals, with only a rotating line of dispatches from the world (bitcoin at $62,902 · the moon is 81% lit · mercury is retrograde · M4.2 earthquake) rising for the audience. Put the console on the projector, hit P, and conduct. (Want even the labels and dispatches gone? Z is zen — nothing but the sky.)
Press W — the sky wheel. The zodiac rises behind the whole instrument, huge and faint, drawn the way a natal chart is drawn: a sign band with the twelve glyphs in their element colours and degree ticks running the rim, the living planets just inside it exactly where they stand tonight, the sky's aspects strung as chords across the wheel — red for the hard angles, green for the soft, gold for the meetings — and the sign the Sun is walking right now lit in its own colour (Cancer in early July), so one glance says where in the year you are. Cast a chart (✨ your stars) and the layer deepens: your whole-sign houses divide the wheel, the ASC and MC stand in gold, your natal planets sit as gold ghosts on the inner ring, and transit chords strike them as the sky moves. The same wheel the zodiac skin draws, now living under the main view. W again to put it away; it remembers.
Press Z — zen. Every word vanishes: labels, readouts, panels, the header, the ticker, the dial — all of it — and only the visuals remain, full screen. The spheres, the cables, the shockwaves, the sky wheel if it's up, still moving to the world; nothing left to read, everything left to watch. Z or esc brings the words back.
+🌱 Lifestrument — the gentle door. The same hub, a second instrument: godstrument.pro/life.html plays only the sources about living — your pulse, the weather, the sun going down, a baby born somewhere — as eight one-tap Vibes with two knobs and no cables at all. Made for a phone in one hand and a friend who doesn't want a manual. This console is where you build; that one is where you feel. (Right-click the sky → 🌱 lifestrument.)
The keyboard is yours — F1–F10 and beyond. A default set of function keys is ready to fly: F1 the grimoire, F2 play/stop the synth, F3 the skin view, F4 next skin, F5 cycle mood, F6 tracks, F7 performance mode, F8 lock the godtime, F9 the earth echo, F10 the stage. But every key is remappable: right-click the sky → ⌨ keys to bind any key to any action, or map a key from a voice's own right-click menu. Want a and s to raise and lower a drone's level like a fader? Right-click that voice → map a key → raise its level, press a; again for lower, press s — now they nudge it live, hold to sweep. Your whole flow, under your fingers.
Press C — chakra view. The sources leave their column and take up their stations on the subtle body: seven wheels on a spine of light, crown to root, each feed orbiting the chakra it belongs to — the sky's machinery at the crown, the omens at the third eye, the species talking at the throat, weather and air at the heart, fire and money at the solar plexus, birth and water at the sacral, quakes and debt and the mortal weight at the root. Each wheel glows with the live average of its members and spins its traditional petals, counter-rotating wheel to wheel. Drag empty space to spin the whole body 360°, drag up/down to tilt, flick and let momentum carry it. Everything still works in there: click a node to mute it, drag it onto a voice to patch, shift-click for its tab. C again and the sources glide home.
Right-click anything — the everything menu. Every node carries its full settings under the right button: mute, solo, a level fader (0–2×), a trim offset, every cable it carries with its amount slider and an unpatch ×, and a nested patch to → list for laying new cables without dragging. Right-click the empty sky for the view menu. And the modifiers, for the fast hands: click mutes · ⇧-click opens the node's tab · ⇧-drag rides the level up and down · ⌥-click solos a source · ⌘-click multi-selects for grouping · ⌘⇧-click resets a node to neutral. People play differently; the instrument shouldn't care which hand you reach with.
@@ -1017,6 +1117,10 @@
The Groove — one feel for the whole pattern. The grooves tab carries Ableton's Groove Pool, reduced to the 16-step grid: swing lays the off-beats back, humanize is a touch of random timing so nothing is machine-stiff, velocity lets each hit breathe in loudness, and an amount master scales the lot — with one-click presets (straight, swing 16, MPC 8-4, drunk). Under the roll sit three expression lanes: velocity (how hard each step hits), chance (how likely each step fires at all — drop a step to 40% and it plays four times in ten, so the loop varies itself), and ratchet (how many times a step re-fires, 1–4 — an instant roll or 32nd-note glitch from a single step, and if that step is a Play-One stack each sub-hit re-rolls the note). The feel and the per-step shaping save with your patch. And the texture voices (the filter, the glitch, the reverb, the drive) get their own lane: a ⬗ p-lock, the Pocket-Operator move — pin that voice to a blocky value on any step, so the filter jumps to a different cutoff on every hit, disjointed and alive; drag a step below the lane to hand it back to the world. And any lane takes a ⬢ Euclidean fill — say how many pulses to spread across the steps and they distribute themselves as evenly as possible (E(3,8) is the tresillo, E(5,8) the cinquillo, E(4,16) four-on-the-floor), with steps and rotate to taste: the oldest rhythms of the world fall straight out of the arithmetic.
♪ One scale for the whole planet, and ⬛ Play One for the glitch. Set a root and scale at the top of the grooves tab and every melody you draw is in that key — the piano roll is only ever the scale's own notes, so nothing lands wrong; change the scale and your patterns re-harmonise in place. And a column isn't limited to one note: stack several and it turns blue — a Play One group, from which the sequencer picks a single note at random each time it fires. Stack a handful of in-key notes under a fast Euclidean fill and the line glitches itself into something new on every pass, always in tune. (Adapted from Ableton's Group Notes → Play One.)
⤳ Follow actions — the song composes itself. Give any clip (A/B/C) a follow action in the grooves tab — play again, next, any, any other, stop — with a chance, and once the arrangement is playing that clip can hand off to another at the bar line instead of just repeating. Set two clips to "any other" and they trade the lane back and forth; sprinkle a low-chance divert and the piece drifts. As Ableton's manual puts it, "structures that repeat but can also be surprising… never exactly repeat." A ⤳ marks any clip that can divert. Nothing changes for arrangements without follow actions — they loop exactly as written.
+🥁 The beat — five drums on the godtime clock. Press B (or the 🥁 button) and the beat drawer opens: five lanes — kick, snare, clap, closed hat, open hat — synthesised from oscillators and noise like every other voice, so they ride the world's saturation, crush and reverb too. Click a step to draw; ▶ starts all five at once. They live on the same godtime clock as the grooves, and the feel — swing, humanize, velocity, amount — is the very same the tracks use (shared, not copied). The same three expression lanes shape each step (velocity, chance, ratchet), and ⬢ euclid spreads N pulses across the sixteen. Open the 🎛 kit drawer to voice each drum: tune, punch, decay, level, pan — and on the kick, duck: every kick parts the sea, dipping the pads and drone out from under itself so the thump lands in its own air. The beat saves with your patch; a mood never silences it — the world's hands change, but the beat belongs to you; and a beat drawn in zero counts as a build, so leaving zero offers to keep it.
+Keys 1–5 & ⏺ rec — finger-drum the kit. With the beat open the number row is the kit — 1 kick, 2 snare, 3 clap, 4 hat, 5 open hat — played by hand, live, straight into the world's FX. Hold ⇧ for the ghost note, softer. Arm ⏺ rec and every tap writes itself into the grid, quantized to the nearest sixteenth — tap a hi-hat pattern into a quiet pocket and it's a lane — so you play the beat in rather than clicking it out.
+🌾 AMPLER — there is ample, for god is abundant. The SP-404 move, made of the planet. Right-click the sky → 🌾 AMPLER: ⏺ capture a stretch of the sounding world (1.5, 3 or 6 seconds of the live master — and since a fed tab is the world, that YouTube loop counts), then ✂ chop it into 8 or 16 slices. Tap a slice to audition it, ⇄ to play it backwards, then seat a slice onto a drum voice — and that lane stops synthesising and starts playing the world. The slice rides the voice's own level and pan and, on the kick, its duck; a slice on the open hat still chokes under a closed one — the machine's rules don't care whether a hit is oscillator or sample. Sample anything playing on the machine, chop it, and it's a kit. Session-only for now: the slices don't travel with your patch (yet).
+The beat leaves the building. The drum lanes ride MIDI out on channel 10 — General MIDI percussion, kick 36, snare 38, clap 39, closed hat 42, open hat 46 — so with an out port chosen in ⚙ they play your hardware and DAW exactly as the note lanes do. And they land in export .mid: draw a beat, hit export, and the Standard MIDI File carries a channel-10 drum track (looped across the arrangement's bars) alongside your lead and bass — drag it into Ableton and the planet's rhythm is already programmed.
📽 The stage — send the visual to any screen. Right-click the sky → the stage and a clean black mirror window opens, fed live from the canvas. Drag it to a projector, an AirPlay display, a second monitor — macOS treats it like any window — and double-click for fullscreen. The stage has a camera: the whole view by default (whatever you're in — a skin, the wheel, mind mode's POV), or right-click any node → project this node and the camera glides after that one sphere through its orbits, or project its station to frame a whole wheel and its satellites. Change cameras live from the menus while the projector runs; the audience sees the camera breathe from subject to subject.
🕸 The commune — play together, properly. Right-click the sky → the commune. This is for signed-in players: your session rides the connection, so the hub knows exactly who everyone is — no impostors, no setup, no Bluetooth. One of you hosts: name the room, then ✉ invite the others by their username (they must be on the site — invitations reach the present). The invited see the invitation arrive live and join or decline; anyone may leave whenever they wish, and if the host leaves, the room closes with them. Then the sections: members claim voices (right-click any voice, or the panel's picker), or the host allocates them — this bass to her, those pads to him, the godtime itself to whoever conducts — and the hub enforces it: only the section's holder can speak for it. From that moment your levels, mutes, grooves and arranger lanes for what you hold follow your hands on every screen, same living room or opposite sides of the earth. The world — the Source — stays identical for everyone, because it always was. Three people, one planet, one instrument.