Each one picks a performer, a reading, a light style and a palette together. They layer — a voice painting the field while a camera on the dancers plays the notes is two of these at once, not a mode.
A screen is a window with nothing in it but the light — a projector,
a second display, or a browser source in OBS. Each one draws in its own style and can
be locked to one performer, so the voice goes to the wall and the dancers go to
the stream. copy link gives you the address to paste into OBS; it opens with no
label on it at all.
Screens are windows of this browser on this machine. Another laptop is
not a screen — that is a recording, and the path for it is in STUDIO.md.
rec now records the light as video with the sound already in it — one file that plays, instead of two somebody has to line up. Put the console in lamp first: the video is the light surface, and in glow mode that is a rim around a control panel. The table, the json and the audio come down with it.
No measurements yet. Press play.
The resistance is worked back out of the pulse rate, so it is only as right as the two component values below. SPEC §1 puts plant tissue between 50 kΩ and 2 MΩ.
Two pads on the plant, far enough apart not to touch: leaf and stem is the usual pair. The third lead, if the board has one, goes in the soil. The wiring, the board pins and the self test are at savia.flowme.one/setup.
Everything here plays at once. Tap a row to point the scope, the check tab and the signal tab at it. Each one keeps its own threshold, because a busy dancer would otherwise move the threshold out from under a quiet plant — and its own voice, its own colour, its own rack of seven effects and its own place in the room. The chips switch a unit on; rack opens the amounts.
k in change > mean + k·σ.Measurement rate and the rolling buffer of SPEC §4.1. 32 at 40 Hz is 0.8 s of history, which is the timescale the threshold is about.
Swing delays every second subdivision — the difference between a drum machine and a person. Glide scales how far a note slides into the next one; the feel decides the length and this scales it.
The reverb return: how loud the room comes back. How much of each performer goes into it is that performer's own send, on its row in the mixer.
One button does all of it. Tap LOOP to start recording, tap it again to close the loop, and it plays. After that every tap records another layer on top, in time, and the tap after that ends the layer.
Tap a number to say where the next layer goes. The bar inside each one runs with the loop, so you can see where in it you are before deciding to punch in.
Pause stops the loop and keeps every take — it starts again from the top of the bar. Undo clears the layer recorded most recently, whichever track that landed on.
A guitar on input 1 of a two-input interface is the left channel. The line goes into the same rack the synth uses, so it can be filtered, driven and looped with the plant.
A phone in a pocket is a wearable. Turn this on and its tilt and turn drive whatever you point them at below, underneath whatever else is playing: Touch Me on the notes, a dancer on the filter. It takes those controls over the moment it is on, so unmap one to get it back.
Add a camera performer in the mix tab and it turns light into sound. The preview is the 64×48 the instrument actually reads, with its zones drawn on it and the ones that just played lit — so a corner that never sounds is a corner you can see is dark. The video never leaves this device. Each frame becomes four numbers per zone and is thrown away in the same tick: nothing is recorded, nothing is sent, and the console makes no network call after its first load.
Each row of the frame is one section, top to bottom, with its own instrument and register — arms up are the top row, the feet are the bottom. Across a row, every column is the next note of the scale, so eight columns are eight different notes. A drum kit row is played by where: the kick in the middle, where the feet are, snares and toms beside it, hats at the edges. The whole band keeps the console’s key.
A flick is soft and a punch is loud. Turn it down in a small room where everything moves hard; turn it up when the dance is slow and wide. How high you move opens the sound, how wide you move widens it, and how much you move fills the room with echo.
The camera finds each person’s skeleton — wrists, ankles, head — and follows every part on its own. On your own you are the whole band: the right hand plays the lead (higher hand, higher note), the left hand the bass, the left foot the kick and the right foot the snare. A hand that does not move makes no sound, whatever else crosses in front of it. A hit plays when a hand or foot stops — the stick meeting the drum — so the swing back is silent.
When a second person walks in, everybody becomes one instrument, and keeps it when you cross. Both hands above your head, held still for a second, changes yours. Violin, cello, flute, sax, trumpet, strings and organ are bowed: they sound while your arm keeps moving and stop when it rests.
Hold your hands up in front of the camera, palms down, as if over a keyboard. The keyboard is drawn on the picture; tap a finger down and the key under its tip plays, as loud as the tap was fast, and holds until you lift it. Moving your whole hand plays nothing, so you can slide to another octave without a sound. The black keys are the upper half of the keyboard — reach up the picture for a sharp. All eighty-eight are there; fewer keys are bigger and easier to hit.
Which way the frame is read for pitch. Left → right is a keyboard laid across the lens, and a hand sweeping plays a run. Low → high puts a high thing in the frame at a high note, which is the direction the light already puts pitch in. Somebody chose this, the same way somebody chose the scale.
How far above its own noise a zone has to go before it plays. Every zone keeps its own threshold, or a bright window would play the whole set and a dim wall would never play at all.
A washed-out zone plays softly and a saturated one leans in. Off by default because a room lit by one bulb is all one saturation, and then this is a volume control that never moves.
The synth has twelve voices and a lit frame has more than twelve opinions. Three is a chord; six is a wall; one is a melody.
How soon one zone may play again. Short is a tremolo on anything that keeps moving; long makes the same gesture one note.
Point it at something red and the room goes red and a note happens at the same instant. Switch to this performer if the camera needs its own colour in the light instead, like every other row.
The torch in choose visuals holds a camera too, and most phones will not give the same lens twice. If the camera refuses, switch the torch off.
Add a mic performer in the mix tab and the room plays. The preview is what the instrument is actually hearing. The sound never leaves this device — each frame becomes a handful of numbers and is thrown away in the same tick. Nothing is recorded and nothing is sent.
A microphone in the same room as the speaker it is driving is a feedback loop with an instrument attached. Echo cancellation is on by default and the rolling thresholds absorb a steady tone, but neither is a fix. The answer is headphones.
This is the one setting with no equivalent anywhere else here. Every other source hands over a position and the scale invents the note; a sung note already is one, so the scale stops inventing and starts deciding how much of it to keep.
A quiet room is silence, not a machine gun on the noise floor. Raise it until the meter above stops moving when nobody is playing.
The hue of a sound is where its energy sits: a thud is red, a hiss is cyan. That is a choice, the same kind the scale is.
Cancellation is the opposite of what the plug asks for — that one wants the raw signal off a socket. This one is usually a phone on a table next to its own speaker, and without it the room howls in about a second. Turn it off for headphones or an interface.
The master version of the light only button on a row. Every performer keeps measuring, firing and lighting; none of them makes a sound. Silencing one row while five others keep playing is not what anybody means by "it should not make a sound".
Pitch picks the colour. That is a choice, the same kind the scale is. A performer given its own colour on the mixer overrides this one and keeps pitch as a lean inside it — so a room can see who is playing.
?jam= and a scene's name to the console's address and
it opens on that scene, ready, with one tap left to make —
savia.flowme.one/console/?jam=dancers. Good on a poster, a QR code by a
door, or a message to whoever is holding the other phone. It cannot press play for
you: no browser opens a microphone or a lens without a person tapping something.Tap a square. The row is the note AND the colour — the same table the light uses, read backwards. Four lanes share one grid and one place in the mixer, because four performers for one instrument would eat two thirds of a band.
The tempo is the console's — it is in the sound tab with everything else that decides when a note lands. While the grid is running it owns that tempo, because it is the thing everybody else has to land with.
Point the phone at whatever is playing and tap listen. Eight seconds of it go out to be recognised, the words come back timed, and they run from wherever in the song the room already is.
Re-sync listens again and re-pins the clock — that is the button for a track that was paused, skipped or started over, and it keeps the words it already has if the song has not changed. The two nudges move the lyrics against the room by three tenths of a second each: the microphone, the speaker and the phone all add a little delay, and it is easier to feel the right number than to measure it.
No recognition needed for this one. Type the song and the timed lyrics come back the same way — then re-sync, or nudge, to put them where the room is.
If no one has ever made a lyric file for what is playing, the
console can write one: it sends the last 24 seconds it heard to be
transcribed word by word, and lays the result out on the same clock. Run it
again later in the song and the lines accumulate.
This is the weak link and it should be read as one. A phone hearing a
record across a room gets some of it wrong, held sung vowels are not what a
speech model was trained on, and an instrumental comes back as silence or as an
invented sentence. It is the difference between something to sing along to and
nothing at all, not between right and wrong.
Every other tab in this console runs entirely on the device and sends nothing anywhere. This one does not. A tap on listen, find or write uploads a few seconds of what the microphone hears — the room, and anyone talking in it — to a recognition service, to LRCLIB, or to a transcriber. Nothing is stored by the console and nothing is recorded to the log, but the audio does leave. It also means this is the one tab that needs signal.
Hit tag the moment something happens to the plant: a touch, a cut, a light change. A row that says what was done at 412.6 s is worth more than an hour of unattended recording.
A camera performer writes a second table of its own,
-camera.csv: one row per note, carrying what the lens saw — the zone's
hue, saturation, brightness and movement, and the whole frame's — next to the note
it became and the colour the light actually showed. The mapping that produced it is
in the json, because without the settings those are two unrelated numbers.
Interleaving it with the plant's table would leave half of every row empty, and a
table that is half empty is two datasets in a trenchcoat.
A voice, a room, a lens, the way you move, a controller, a plant. Savia listens to one of them and plays what it finds, as sound and as light. Everything you play is worked out on this device. Two things use the internet: signing in, which sends your email address, and the karaoke tab, which has to ask what song is playing.
Stuck? The guide button in the corner answers questions.
what do you want to play?
How to start · Savia Live
▶ Watch the 1-minute video guide ↗