Internal · SpaceMusic Studio · Art Pieces
RGB Strip for Real-Time Art Pieces
The strip we buy decides whether the piece survives a camera — and that is not a property anyone puts on the listing.
A category, not a product
"RGB LED strip" names a category the way "screen" names a category. Underneath it sits a range that varies by a factor of fifty across every property that decides whether a piece looks good — how many points along the strip we can control independently, how smoothly it dims towards black, how it behaves in front of a camera, how far it can run before the colours drift. The strips at opposite ends of that range are separated by a few euros per metre.
That is what makes this worth writing down rather than solving at the checkout. The price signal is nearly useless: the cheapest strip and the most capable strip look identical in a listing photograph and differ by about €5 per metre. Worse, most of these properties are invisible until the piece is finished. Nobody discovers that a strip flickers on camera while holding a reel. They discover it when the documentation photographer sends the files back.
We are about to start building art pieces with addressable strip inside them, each running its own software the way OI-Frame does — unattended, on hardware inside the object, with no studio machine in the room. This document is the technology survey behind that: what exists in 2026, which parts are good and which are traps, how the two serious control options compare, and what we should buy to start testing. The gallery lighting project is separate and stays separate — but it needs the same pixel layer, so everything settled here arrives there for free.
What a strip is made of
An addressable strip is three things chosen independently: a driver IC that receives data and sets brightness, the LED packages it drives, and the flexible circuit board that carries both. Almost every buying mistake comes from reading one number — usually "LEDs per metre" — and assuming it describes the other two.
The driver IC is the part that matters most, and the whole market divides into two families by how that IC is talked to.
- Clockless — one data wire. The controller sends a self-timed pulse train and the IC decodes it against hard-coded internal timing. Three wires total, cheap, universal. The cost is precision: the timing is fixed, the brightness is 8-bit, and the internal dimming runs slowly. WS2812B · WS2813 · WS2815 · SK6812 · WS2811 · WS2814 · WS2805
- Clocked — a data wire and a clock wire. The controller supplies the clock, so it sets the data rate. Four wires, slightly dearer, far more tolerant of long cable, and dramatically faster internally. This is the family used when the strip has to hold up under scrutiny. SK9822 · APA102 · HD107s · HD108
The default assumption in every hobby tutorial, every Amazon listing and most professional installs is the clockless family, because it is what WS2812B is and WS2812B is what most people have heard of. For an object that gets photographed at close range, that default is wrong. Section 4 is the argument.
The four numbers
Four properties decide a purchase. Everything else is a consequence of them.
Pixels per metre — and why it is not LEDs per metre
This is the single most common and most expensive misreading in the category, so it is worth being blunt about. On a WS2812B or SK6812 strip, one LED is one pixel, so 144 LEDs/m really is 144 independently controllable points. On strips with an external driver IC — which includes every COB strip on the market — one IC drives a whole group of LEDs, and the group can be thirty-six of them.
| Strip | LEDs/m | ICs/m = pixels/m | LEDs per pixel | W/m |
|---|---|---|---|---|
| FCOB RGB WS2811, 24 V | 720 | 20 | 36 | 21 |
| FCOB RGBW WS2814, 24 V | 784 | 14 | 56 | 18 |
| WS2805 RGB+CCT, 24 V | 60 | 10 | 6 | ~14 |
| WS2805 RGB+CCT, 12 V | 60 | 20 | 3 | ~14 |
| SMD SK6812 RGBW, 5 V | 60 | 60 | 1 | ~18 |
| SMD WS2812B, 5 V | 144 | 144 | 1 | ~43 |
A strip advertised as "720 LEDs per metre" gives us twenty addressable points per metre — one every five centimetres. A plain 60/m strip has three times the resolution and one twelfth the LED count. Both are legitimate products; they are simply answering different questions. COB gives a continuous line of light with no visible dots, which is beautiful and which a generative patch can barely address. SMD gives resolution and visible dots.
Note the two WS2805 rows. On grouped-IC strips the group size follows the supply voltage — three LEDs per IC at 12 V, six at 24 V — so the same strip at 12 V carries twice the addressable pixels. Where that applies it is free resolution, paid for in brightness and maximum run length. It does not apply everywhere and has to be checked per listing.
PWM refresh rate
An LED does not dim by receiving less current. It dims by being switched fully on and fully off very quickly, and the ratio of on to off is the brightness. That switching frequency is the PWM refresh rate, and across this market it ranges from about 400 Hz to 27 000 Hz — a factor of nearly seventy. It is never on the listing. Section 4 is entirely about this number.
Bit depth
Almost every strip is 8-bit per channel: 256 steps from off to full. That sounds ample and is not, because human perception of brightness is not linear. The bottom of the range is where the steps are visible, and the bottom of the range is exactly where a slow fade to black lives. One chip, the HD108, is 16-bit — 65 536 steps — and it is the only one that fades to black without stepping.
Voltage
Voltage decides run length. A 2.5 V drop along a run is 50 % of a 5 V strip, 21 % of a 12 V strip and 10 % of a 24 V strip; the first produces visibly wrong colours at the far end, the last is invisible. This matters enormously for a thirty-metre architectural cove and rather little for an art piece, where runs are typically one to five metres. For pieces, 5 V and 12 V are entirely adequate, which is convenient — see section 5.
The chips, with verdicts
| Chip | Wires | Volts | Colours | PWM | Bits | Verdict for art pieces |
|---|---|---|---|---|---|---|
| WS2812B | 1 | 5 | RGB | ~400 Hz | 8 | Avoid. The default everyone buys, and the worst on camera. |
| WS2813 | 1+ | 5 | RGB | ~400 Hz | 8 | WS2812B plus a backup data line. Same camera problem. |
| WS2815 | 1+ | 12 | RGB | ~400 Hz | 8 | Good for long runs. Irrelevant at art-piece scale. |
| SK6812 | 1 | 5 | RGB / RGBW | 1.2 kHz | 8 | Usable. The real white channel is worth having. Marginal above 30 fps. |
| WS2811 | 1 | 12/24 | RGB | ~400 Hz | 8 | The COB workhorse. Beautiful light, coarse pixels, bad on camera. |
| WS2814 | 1+ | 12/24 | RGBW | ~400 Hz | 8 | As WS2811, with white and break-point resume. |
| WS2805 | 1+ | 12/24 | RGB+CCT | ~400 Hz | 8 | The only way to get colour and tunable white in one strip. Camera caveat stands. |
| SK9822 | 2 | 5 | RGB | 4.7 kHz | 8 | Cheap entry to the clocked family. Needs power injection every 2.5 m. |
| APA102 | 2 | 5 | RGB | ~20 kHz | 8 | Strong. The long-standing choice for anything filmed. |
| HD107s | 2 | 5 | RGB | 27 kHz | 8 | The recommendation. APA102-compatible, fastest 8-bit part available. |
| HD108 | 2 | 5 | RGB | 27 kHz | 16 | The precision option. 65 536 levels. See the caveat in section 5. |
Two honest caveats on that table. Newer WS2812B revisions are advertised at higher PWM than the classic 400 Hz figure; we have not verified that claim and are assuming 400 Hz until we measure it ourselves. And a 16-bit clockless part called WS2816 is sold, but we could not confirm it from a primary source, so it is not listed.
The camera constraint
Here is the finding this document exists to deliver. An art piece is not judged only in the room. It is judged in the photographs, in the portfolio, in the press images and increasingly in video. If the strip inside it bands or strobes on camera, the piece photographs badly forever, and no amount of software fixes it.
The rule of thumb the lighting industry uses is that a strip's PWM rate should be at least thirty times the camera's frame rate. A 60 fps camera therefore needs at least 1 800 Hz. That single line disqualifies most of the market:
- WS2812B, WS2811, WS2814, WS2805 at ~400 Hz — will band on essentially any camera.
- SK6812 at 1.2 kHz — fine at 24 or 30 fps, visible at 60 and above.
- SK9822 at 4.7 kHz — safe to roughly 150 fps.
- APA102, HD107s, HD108 at 20–27 kHz — safe for anything, slow motion included.
Plotting the actual products against the two properties that matter — how finely we can address them, and whether a camera survives them — produces a map with an uncomfortable shape.
Figure 1 · The strip landscape Open full size · print A3 landscape ↗
The shape of that map is the argument. The two strips a studio reaches for by instinct — the cheap WS2812B because everyone uses it, and the gorgeous dotless COB because it looks like real architecture — are both in the bottom half. Neither survives a camera. The upper half is reachable only through the clocked family, and the upper right corner, where fine resolution meets camera safety, contains exactly one product class: HD107s and HD108 at 144 LEDs per metre.
The top-left quadrant is empty, and that emptiness is itself a finding. Continuous dotless COB light and a fast driver IC do not currently ship in the same product. If a piece needs a seamless line of light and has to be filmed close, that is an unsolved problem we would have to work around with diffusion rather than buy our way out of.
Where the software runs
The strip is half the system. The other half is not a controller box on a network — it is a small computer inside the object, running code we wrote. That distinction matters more than any product comparison, so it is worth stating before the hardware.
These pieces have to work the way OI-Frame works: their own software, running unattended, configured from a phone on the same network, with the studio machine present only during development. A piece that goes dark because a computer somewhere else stopped is not a piece, it is a demo. So the question is not "which box translates our network data into pixels". It is where our code runs, and how it reaches the strip.
The good news is that the strip recommendation from section 4 survives the reframing untouched, and picks up a second, entirely independent argument behind it.
Why a clocked strip makes our own code easy
Clockless strips encode data as pulse widths with hard-coded timing measured in hundreds of nanoseconds. Nothing about that suits a general-purpose computer. On a Raspberry Pi it needs DMA or PWM peripheral tricks; on an ESP32 it needs the RMT or I2S peripheral, and a frame can still be corrupted when a Wi-Fi interrupt lands in the wrong microsecond.
Clocked strips are the opposite, and the reason is structural: because the controller supplies the clock, the strip is insensitive to timing variation. An interrupt mid-frame stretches the clock and nothing notices. Driving one is a buffer and an ordinary SPI write — the same interface every microcontroller and every Pi has in hardware.
| What our code has to do | WS2812B — clockless | HD107s — clocked |
|---|---|---|
| Interface | Bit-exact pulse train, ~800 kbit/s | Ordinary SPI |
| On a Raspberry Pi | DMA or PWM peripheral tricks | /dev/spidev0.0 — a buffer and a write |
| On an ESP32 | RMT or I2S peripheral | The hardware SPI port |
| With Wi-Fi running | Interrupts can corrupt a frame | Insensitive — the clock simply stretches |
| Portability | A platform-specific driver each time | The same twenty lines everywhere |
So the strip we chose on camera grounds turns out to be the strip that makes our software portable across every runtime below. That is a rare piece of luck and it is worth taking.
Three places the code can live
- An ESP32 — our own firmware. C++ under Arduino or ESP-IDF. Hardware SPI, so the strip is a solved problem. No operating system and no filesystem to corrupt: it boots in under a second and runs for years. Enough compute for procedural content — noise fields, palettes, waves, a microphone input. Not enough for media files or anything wanting a GPU, and it is a different toolchain from everything else the studio ships. ~EUR 10 · ESP32-S3 · PlatformIO · FastLED or a direct SPI write
-
A Raspberry Pi — our own Node application. This is the OI-Frame stack, which already builds and ships for
linux-arm64. Hardware SPI overspidev, so the strip is equally solved, and full Linux means the phone-facing control interface is the same kind of code we already write. The cost is an operating system: twenty to thirty seconds of boot, and an SD card that corrupts on a hard power cut unless the root filesystem is made read-only. EUR 20–80 · Pi Zero 2 W or Pi 5 · Node + spidev · read-only rootfs - A small PC — Electron, or an exported vvvv executable. What OI-Frame actually does today. The right answer when the content genuinely needs a GPU: shaders, video, heavy audio analysis. Physically the largest and the hungriest, so it suits a piece that already has a screen and a mains supply rather than a small object. NUC-class · Electron · exported vvvv gamma exe
Figure 2 · Where the code lives Open full size · print A3 landscape ↗
The Raspberry Pi is the default, and the argument is reuse rather than capability. It runs the stack the studio already ships, it drives HD107s over hardware SPI in a few lines, and it gives us a phone control interface for free, because that is a small web server and we already know how to write those. The ESP32 is right for a piece whose content is genuinely simple and where instant boot and indestructibility matter more than convenience. A PC only when a GPU is unavoidable.
The Pi's failure mode is worth naming, because it will bite once: SD card corruption after a hard power cut. The fix is well established — a read-only root filesystem with writes redirected to a RAM disk, plus a supply that does not brown out. It is a day of setup that then applies to every piece, and OI-Frame needs exactly the same treatment.
Standalone and network-driven, from one switch
The requirement is not standalone or driven from the studio. It is both, and the architecture gives us both for almost nothing. The piece's software renders a buffer of pixel values and writes it to SPI; where those values come from is a single branch above that write.
- Generate — our own content, computed on the device. The default, and how a piece behaves in a gallery with nobody around.
- Receive — take frames from sACN arriving on the network and display them unchanged. Development, testing, and any occasion where we want to drive the piece live.
Both paths end at the same SPI write, so adding the second is a receiver library and a source switch rather than an architecture. For context on the numbers: one sACN universe carries 512 channels, so 170 RGB pixels, and a one-metre 144/m strip fits inside a single universe with room left over. The stream runs at roughly 44 frames per second, the historical DMX rate and still the practical target.
vvvv keeps its place as the tool we design and test the look in, and an exported executable stays available for a piece that genuinely warrants it. Nothing hangs on it being present.
What this does to the controller question
It largely dissolves it — and one recommendation from this document's first pass has to be corrected rather than quietly adjusted.
Advatek is out for art pieces. A PixLite is a closed appliance. It converts network lighting data into pixel data extremely well, and it cannot run our code. Under an architecture where the piece is the computer, it is a €480 box in the middle doing a job the Pi's own SPI port does for nothing. That is not a criticism of the product — it stays the right answer for the gallery, where fixtures are permanent, pixel counts run into the thousands, and nobody wants to maintain firmware. It is simply the wrong shape for an object that thinks for itself.
QuinLED survives, as hardware rather than as firmware. The Dig-Quad is an ESP32 on a well-made carrier board: proper level shifters, onboard fuses, reverse-polarity protection and screw terminals for power injection. All of that is worth having whatever code runs on it, and the ESP32 is ours to flash. We would buy it for the board and put our own firmware on it, not run WLED in production.
WLED becomes a bring-up tool, which is genuinely useful. Flash it, confirm the strip lights and the wiring is right, then replace it with our own code. An hour well spent, at no cost, and it removes “is it the hardware or is it my driver” from every later debugging session.
One consequence worth recording: the QuinLED 24 V defect stops mattering. The board's onboard converter fails at an elevated rate on a 24 V input, and the project's own advice, published 22 July 2026, is to wait for the revised board if 24 V is planned. Our strip is 5 V and our runs are metres, so we never build at 24 V and the fault never reaches us.
Sourcing and the parts list
Buying direct from China is fine and we should do it. Essentially all of this hardware is made there regardless, and the European resellers are the same product with a markup. The risk is not the country of origin, it is the listing, which is written to sell rather than to inform.
What to check before ordering
- ICs per metre, not LEDs per metre. This is the number that decides what our software can do with the strip. If a listing does not state it, ask, and assume the worst until answered.
- Copper weight of the flexible PCB. Good factories use 2 oz or 3 oz double-sided rolled copper. Single-layer or 1 oz means voltage drop and early failure.
- Watts per metre, cross-checked against the LED count. If 720 LEDs/m is quoted at 8 W/m, one of those two numbers is fiction.
- CRI with an R9 figure. A bare "CRI 90" with no R9 and no test report is marketing, not a measurement.R9 is the deep-red score — the one that decides whether skin and warm materials look right
- IP rating matched to the job. IP30 bare for inside a piece or a profile; IP65 silicone coating for damp. Avoid IP67 sleeved strip indoors — the sleeve traps heat and shortens life.
- Price 30 % under the market is a warning, not a bargain. It buys thin copper or off-spec dice every time.
- "RGBIC" on a consumer listing usually means fixed built-in effects, not an addressable strip. Look for the actual chip name.
In practice: order one-metre samples, never reels, and buy connectors and pigtails from the same seller in the same order, because pitch and polarity vary between factories. Solder the joints that matter; solderless clips are for prototyping. BTF-Lighting is the most consistently documented brand in this space and publishes real specification sheets, which makes it a sensible starting point rather than an endorsement — nothing below has been tested by us.
The parts list
Sized to answer questions rather than to build anything. Roughly €320–420 all in. It buys both candidate runtimes so the choice in section 5 can be made against real code rather than on paper, and it deliberately does not include an Advatek.
| # | Item | ~Price | What it is for |
|---|---|---|---|
| 1 | HD107s RGB, 5 V, 144/m — 1 m | €10–15 | The recommendation. 27 kHz, 144 px/m. |
| 2 | APA102 RGB, 5 V, 144/m — 1 m | €10–15 | The cheaper clocked part, as a cross-check. |
| 3 | HD108 RGB, 5 V, 144/m — 1 m | €12–18 | The 16-bit reference. Needs a non-WLED controller to show its advantage. |
| 4 | SK6812 RGBW, 5 V, 60/m — 1 m | €6–9 | Does a real white channel beat RGB-mixed white? |
| 5 | FCOB RGB WS2811, 12 V, 720/m — 1 m | €10–15 | The dotless look, for pieces never filmed close. |
| 6 | WS2805 RGB+CCT, 12 V, 60/m — 1 m | €12–18 | Colour and tunable white together, at 20 px/m. |
| 7 | Raspberry Pi Zero 2 W + quality SD card + supply | €25–35 | The default runtime. The OI-Frame stack, driving the strip over spidev. |
| 8 | ESP32-S3 dev boards, two | €20 | The no-OS runtime, and a spare for bring-up. |
| 9 | 74AHCT125 level-shifter breakouts | €8 | 3.3 V → 5 V. Both items 7 and 8 need one. |
| 10 | Optional QuinLED-Dig-Quad, assembled | €75–95 | A tidy ESP32 carrier: level shifters, fuses, terminals, four outputs. Buy it to have the wiring solved. Our firmware in production — WLED only for bring-up. |
| 11 | Mean Well LRS-100-5 (5 V, 18 A) | €22 | The 5 V rail. Clocked strips are the current-hungry ones. |
| 12 | Mean Well LRS-150-12 (12 V, 12.5 A) | €25 | The 12 V rail for items 5 and 6. |
| 13 | Inline fuse holders and fuses | €10 | One per injection point. |
| 14 | Shielded twisted pair, 20 m | €15 | Data. Unshielded runs act as antennas. |
| 15 | Wire, JST SM pigtails, heat-shrink | €20 | Power and joints. |
| 16 | 300–470 Ω resistors, 1000 µF/25 V caps | €5 | Series resistor on data, bulk capacitor at the strip. Standard practice. |
| 17 | Aluminium profile + frosted diffuser, 2 m, two widths | €25–35 | Diffuser depth decides whether dots are visible. Test it, do not assume. |
| 18 | A phone at 240 fps slow motion | free | The flicker test. Film all six strips and the answer is immediate. |
Two practical notes on wiring. All addressable strips want a 5 V data signal, and both a Raspberry Pi and an ESP32 output 3.3 V, so a level shifter is not optional beyond the first few centimetres — the QuinLED has proper ones built in, which is most of what the €85 buys. And measured data-wire limits are about 10 m on thin cable with a level shifter, or 20 m on 0.75 mm² kept away from interference. Neither is a constraint at art-piece scale.
Why this matters
"The two strips a studio reaches for by instinct — the cheap one and the beautiful one — are the two that photograph worst."
The decision this document asks for is small and cheap: about €300 of samples, and a preference for a strip family that costs perhaps €5 more per metre than the obvious one. The reason to make it deliberately rather than at the checkout is that the properties that separate these products are invisible at the point of purchase and expensive at the point of discovery. A piece built around the wrong strip is not a strip problem afterwards. It is a rebuild.
The specific finding worth carrying out of here is the camera one. We are a studio whose work is seen mostly through other people's screens. A pixel layer that bands in every photograph and every video of a piece has failed at the thing the piece is for, and no amount of real-time control compensates. That constraint points at one narrow corner of the market, and the good news is that the corner is neither exotic nor expensive — it is HD107s at 144 LEDs per metre, and it costs about what a mid-range WS2812B strip costs.
The control decision runs the other way from expectation, and it saves money by removing a component rather than by choosing a cheaper one. There is no controller box in this architecture. The piece is the computer, and a Raspberry Pi's own SPI port drives the strip directly. A professional pixel controller cannot run our code, and running our code is the entire point — so it would be €480 spent on a translator we do not need. That box is the right answer to the gallery's question, not to this one.
The two decisions also turn out to reinforce each other, which is worth noticing because it rarely happens. We chose a clocked strip because cameras demand it. A clocked strip is also the one our own software can drive from an ordinary SPI port on any platform — no timing tricks, no interference from Wi-Fi, the same twenty lines whether the code runs on an ESP32, a Pi or a PC. One choice, two problems solved, and the runtime decision stays open until we have written something.
What we get for €300 is the ability to stop guessing: six strips on a bench, one controller, a phone filming at 240 frames per second, and an afternoon. After that the arguments in this document are either confirmed or replaced with measurements, which is a better thing to build on.
Glossary
Terms and acronyms used in this document, in plain language.
- APA102
- A clocked driver IC with roughly 20 kHz refresh. The long-standing choice for strip that will be filmed.
- Art-Net
- An older way of carrying lighting data over ethernet. Broadcast-based, very widely supported, and what vvvv speaks natively.
- Bit depth
- How many brightness steps exist between off and full. 8-bit gives 256; 16-bit gives 65 536.
- Clocked
- A strip with a separate clock wire alongside the data wire, so the controller sets the speed. Four wires instead of three.
- Clockless
- A strip with one data wire and hard-coded internal timing. Three wires, cheaper, slower.
- COB
- Chip on board. Hundreds of tiny LED dice under a continuous phosphor layer, so the strip reads as a line of light with no visible dots.
- CRI / R9
- Colour Rendering Index. How faithfully a light source shows colour. R9 is the deep-red component and the number that actually matters.
- DDP
- Distributed Display Protocol. A leaner alternative to sACN, used when pixel counts get high enough that the universe structure becomes overhead.
- DMX512
- The original stage-lighting data standard. 512 channels per universe, about 44 frames per second. sACN and Art-Net both carry it over ethernet.
- ESP32
- A cheap Wi-Fi microcontroller. The chip inside almost every hobby-grade LED controller, including QuinLED. The S3 variant adds memory and headroom.
- FCOB
- Flexible COB — COB construction on a bendable strip.
- HD107s
- A clocked driver IC running at 27 kHz. Compatible with APA102 controllers. The recommendation in this document.
- HD108
- Like HD107s but 16-bit, giving genuinely stepless fades. Not supported by WLED.
- IP rating
- How sealed a strip is. IP30 is bare, IP65 is silicone-coated, IP67 is inside a sealed sleeve.
- Level shifter
- A small circuit that raises the controller's 3.3 V data signal to the 5 V the strip expects.
- OI-Frame
- The studio's existing audio-reactive light piece. Node and Electron, shipping
linux-arm64builds, running unattended on a small PC and configured from a phone. The reference architecture for these pieces. - MT3608
- The small voltage converter on QuinLED boards that fails when fed 24 V. The subject of the known fault in section 5.
- Pixel
- One independently controllable point of light. Not the same as one LED — on grouped strips a pixel can be 36 LEDs.
- PixLite
- Advatek's range of commercial pixel controllers.
- Power injection
- Feeding power into the middle or far end of a strip as well as the start, so the far end is not dim or discoloured.
- PWM
- Pulse-width modulation. LEDs dim by switching on and off rapidly. The switching frequency is the PWM rate, and it decides camera behaviour.
- QuinLED
- A small Dutch project making purpose-built ESP32 boards for driving addressable strip. Runs WLED.
- RMT
- A timing peripheral inside the ESP32. Needed to drive clockless strips; not needed at all for clocked ones.
- sACN
- Streaming ACN, formally ANSI E1.31. The modern standard for carrying lighting data over ethernet, using multicast so each device receives only what it asked for.
- SELV
- Safety extra-low voltage. The safe low-voltage side of a power supply — everything downstream of the Mean Well unit.
- SK6812
- A clockless IC available in RGBW, with a genuine white LED alongside the colours. 1.2 kHz refresh.
- SMD
- Surface-mount device. Conventional discrete LED packages in a row, as opposed to COB. Visible dots, higher addressable resolution.
- SPI
- Serial Peripheral Interface. A plain, universal hardware interface with a data line and a clock line. Every microcontroller and every Raspberry Pi has one, which is why clocked strips are easy to drive.
- spidev
- The Linux device file that exposes a Raspberry Pi's SPI port to ordinary software, as
/dev/spidev0.0. - Universe
- One block of 512 lighting channels — 170 RGB pixels or 128 RGBW pixels.
- vvvv gamma
- The visual live-programming environment the studio uses for real-time work. Programs keep running while they are edited.
- WLED
- Open-source firmware that turns an ESP32 into an addressable-LED controller speaking sACN, Art-Net and DDP. Current stable release is 16.0.1.
- WS2812B
- The most common addressable IC in the world, and the default in most tutorials. 5 V, 8-bit, ~400 Hz — which is why it bands on camera.
Settled
Clocked strip, and the piece is the computer
HD107s at 144/m is the default for anything that gets filmed — and the same choice lets our own code drive it from a plain SPI port on any platform. No pixel controller sits in the middle.
Next
~€350 of samples and an afternoon
Six one-metre strips, a Pi, two ESP32s, two supplies. Film all six at 240 fps, compare white quality and dot visibility behind two diffuser depths, then write the twenty lines that push a buffer to SPI and see which runtime we prefer.
Later
Advatek, 24 V, and 16-bit
Advatek is out for pieces — it cannot run our code — but stays right for the gallery, on the gallery budget. 24 V is unnecessary at this scale. 16-bit via HD108 is open, and our own driver could support it where WLED cannot.