EQ — a live equaliser driven by your microphone
Idle
1 / 33 — Classic Bars
← → or 1–9 / 0 · a b c change the display · Space freezes · right-click or hold the picture for more
Recording
One frame, no sound. Works even where recording does not.
Made here and written straight to your disk — no copy leaves this machine, and EQ never asks for your screen. Keep this tab in front while recording, and press Stop before you leave.
What it is
EQ is an equaliser display for live sound: it takes your microphone, reads it in 512-sample frames, and draws the result thirty-three different ways. There is no library and no transport — nothing to upload, nothing to pick, nothing to wait for. Allow the microphone; the room is on the screen.
Thirty of them are the numbered chips. The other three sit in the column of letters beside them, and they listen for the music rather than just the level: each hears its own kicks, snares and notes as they land. a · Note Warp flies you through a score — staves streak out of the centre and notes come at you on every hit, whole notes on the bass, sixteenths on the hats, faster the louder it gets. b · Truchet Tiles is a grid of quarter-circle tiles, one column to a band from the lows on the left, and a tile turns a quarter with a colour fringe when its band hits. c · Rose Pens is nine pens drawing the rose curves r = sin(kθ): each row reaches with the bass, the mids or the highs, and all nine race when the music gets loud.
The picture follows the edition you read labs.llc in. In paper it is drawn in ink on paper; in dark it is light on black. The palette switch above the stage picks the inks either way: grey and orange, or blue and violet.
Sensitivity multiplies the numbers before they are drawn, which is what to reach for in a quiet room. Smoothing sets how quickly the reading settles: at zero the bars snap, at 0.95 they drift. Freeze holds the picture where it is without touching the microphone.
Want to play a track instead? VIZZI is the room next door: it takes its own four track lists, a stage and a transport, and paints what it is playing. EQ has no player — it only listens to what is already in front of it.Recording it
Record makes a file from what EQ is drawing and hearing, on this machine, straight to your disk. No copy leaves this machine, and EQ never asks for your screen.
- Picture + sound — the display and your microphone in one file. MP4 comes first wherever this browser can make it, because it opens on an iPhone; WebM does not.
- Sound only — just the microphone, at a higher audio bitrate than Picture + sound uses, in a file roughly a tenth the size.
- S, M and L — each card shows the exact picture size and bitrates it asks for. S and M shrink a large picture; none of them enlarges a small one.
- Size — the figure per minute is a budget. The encoder decides the real size, and EQ prints it when you stop.
- File types — the menu lists only what this browser can really make. If its recorder still refuses, EQ says so and names the error.
- Save a frame — one still picture, PNG, JPEG or WebP. It needs no recorder.
- Before you go — keep the tab in front while recording (a hidden tab stops drawing), and press Stop before leaving: a closing page cannot save a download.
To see this machine’s own frame timings with the recorder off and on, add
?debug to the address.
Where the sound goes, and what this page loads
Where the microphone goes. The track you allow is connected to two things and only two. One is a Web Audio analyser, read every frame for the numbers the picture is drawn from. The other is your browser's own recorder, and only while a recording runs: the same live track goes in so your file has sound, and is handed back untouched when you stop. The analyser never reaches your speakers: nothing is played back. Nothing the microphone hears is uploaded, and none of it is written to this browser's storage. Pressing Record is the exception, and it is what the button is for: the file is a copy of the sound, saved to your disk by your browser. EQ never asks to record your screen — only its own picture.
The picture is an element in this document. Every frame, EQ reads the analyser and paints it into
the <canvas> on this page — from the moment you allow the microphone, on every
visit, with no switch to turn that off. A canvas in a document can be read by any script in that document:
its pixels through toDataURL, its moving frames through captureStream. They are a
drawing of the sound rather than the sound itself, and they are reachable. That is how drawing on a web page
works, not something EQ can code its way out of.
A finished file is addressable for an instant. EQ hands it to your browser the only way a
page can: a temporary blob: address, and a hidden download link on it placed into this
document, because a browser will not act on a link the page does not contain. For that instant any script
running here could read the address of your file — again how downloading from a web page works,
not a choice EQ made. What EQ controls is how long it lasts: the link is removed in the same instant it is
added, the address is revoked twenty seconds later, and no “save it again” link is left on the
page holding it. A saved frame is handed over the same way and revoked on the same clock.
Nothing here hands out the live track. The track, the audio context and the analyser stay inside
one closure; nothing in the document can ask EQ for them. Frame timings, the recorder's configuration and
the buttons you can already press are published as an EQ object only when you open the page
with ?debug in the address. None of that carries sound, but a script holding those hooks could
work the controls as you can. Without ?debug there is no such object here.
What else this page loads. From this site: the web font, in two files; the logo and the tab icon; and a small script that stamps the build number into the header and the foot. The one piece of third-party code is Google Analytics, from googletagmanager.com. Its tag attaches its own standard fields to everything it sends — a visitor id kept in a cookie, the full address of this page, the page you arrived from, the title, the language and the screen size. This page adds two events. The first fires the first time you press anything that is not the site header, the footer or the edition switch — the picture counts, so a press on the canvas fires it — and it carries the name of this tool, the path of this page and which edition of labs.llc you are reading in. It fires once, and it does not report that the microphone was started: a visitor who changes a display and enables nothing sends it too. The second can follow after thirty seconds on screen with at least one interaction, and carries the path and the edition and no tool name. Neither carries any audio, any measurement of it, or anything about what the microphone heard. Google can change the code it serves from that address without this page being rebuilt; an extension that blocks the tag removes it, and EQ works the same without it.
What is kept between visits. EQ keeps two things, in this browser's storage: which of the two palettes you picked, and whether Record makes a video or sound only. The estate chrome keeps which edition of labs.llc you read in — in that same
storage, under the name the whole site uses and under an older name it still writes alongside it, and in a
cookie of the same name so the site's PHP pages can read it before they draw a link. The analytics tag keeps
two cookies of its own, _ga and _ga_Z2N672WDTY, which are how it recognises this
browser on a later visit. None of that records anything about your sound.
The microphone light. Send the tab to the background and the audio context is suspended, so nothing is analysed on a tab nobody is looking at; it starts again when you come forward. The track is deliberately left open across that, so coming back is instant rather than a second permission prompt — which is why your browser may keep showing its microphone indicator until you actually stop. Press Stop the mic, or leave the page, and the track is stopped and released: that is what puts the light out.
The keyboard
- ← and → — the previous and next display.
- 1–9 and 0 — the first ten displays directly.
- a, b and c — Note Warp, Truchet Tiles and Rose Pens, the three in the column of letters. The arrows walk through them too, after 30.
- Space — freeze and unfreeze the picture. While a button has the focus, Space belongs to the button and presses it.
- Tab reaches every control on the page and each one shows a ring where it is.
- Right-click the picture, or press and hold it on a phone, for the menu: pop out, full screen, a random display, shuffle, the palette, recording and more. With the picture focused, the menu key or Shift + F10 opens it; the arrows move through it and Esc closes it.
When something is missing
If you refuse the microphone, or there is no input device, or the page is opened as a file instead of over HTTPS, EQ says which of those happened on the start card and leaves the button ready to try again. The idle animation keeps running behind the card, so the page never looks dead while you go and fix it.