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.

  1. 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
  2. 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.

StripLEDs/mICs/m = pixels/mLEDs per pixelW/m
FCOB RGB WS2811, 24 V720203621
FCOB RGBW WS2814, 24 V784145618
WS2805 RGB+CCT, 24 V60106~14
WS2805 RGB+CCT, 12 V60203~14
SMD SK6812 RGBW, 5 V60601~18
SMD WS2812B, 5 V1441441~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

ChipWiresVoltsColoursPWMBitsVerdict for art pieces
WS2812B15RGB~400 Hz8Avoid. The default everyone buys, and the worst on camera.
WS28131+5RGB~400 Hz8WS2812B plus a backup data line. Same camera problem.
WS28151+12RGB~400 Hz8Good for long runs. Irrelevant at art-piece scale.
SK681215RGB / RGBW1.2 kHz8Usable. The real white channel is worth having. Marginal above 30 fps.
WS2811112/24RGB~400 Hz8The COB workhorse. Beautiful light, coarse pixels, bad on camera.
WS28141+12/24RGBW~400 Hz8As WS2811, with white and break-point resume.
WS28051+12/24RGB+CCT~400 Hz8The only way to get colour and tunable white in one strip. Camera caveat stands.
SK982225RGB4.7 kHz8Cheap entry to the clocked family. Needs power injection every 2.5 m.
APA10225RGB~20 kHz8Strong. The long-standing choice for anything filmed.
HD107s25RGB27 kHz8The recommendation. APA102-compatible, fastest 8-bit part available.
HD10825RGB27 kHz16The 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:

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 ↗

27 kHz 20 kHz 4.7 kHz 1.2 kHz 400 Hz PWM REFRESH · CAMERA SAFETY ADDRESSABLE PIXELS PER METRE ← COARSE · 14–20 px/m FINE · 144 px/m → 1 800 Hz · THE 60 FPS THRESHOLD NO CLOCKED COB FOUND dotless light ships only with slow ICs COB · WS2811 / WS2814 / WS2805 14–20 px/m · 400 Hz · no dots WS2812B · 144/m 400 Hz · the default SK6812 RGBW · 60/m 1.2 kHz SK6812 RGBW · 144/m 1.2 kHz SK9822 · 60/m 4.7 kHz · clocked APA102 · 144/m 20 kHz · clocked HD107s / HD108 · 144/m 27 kHz · clocked · HD108 is 16-bit the only corner a camera cannot break

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 doWS2812B — clocklessHD107s — clocked
InterfaceBit-exact pulse train, ~800 kbit/sOrdinary SPI
On a Raspberry PiDMA or PWM peripheral tricks/dev/spidev0.0 — a buffer and a write
On an ESP32RMT or I2S peripheralThe hardware SPI port
With Wi-Fi runningInterrupts can corrupt a frameInsensitive — the clock simply stretches
PortabilityA platform-specific driver each timeThe 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

  1. 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
  2. A Raspberry Pi — our own Node application. This is the OI-Frame stack, which already builds and ships for linux-arm64. Hardware SPI over spidev, 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
  3. 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 ↗

sACN · DEV ONLY THE PIECE — SELF-CONTAINED OUR CODE RUNS HERE · PICK ONE STUDIO · DEV TIME ONLY vvvv gamma authoring · testing or an exported exe ESP32 our firmware · C++ ~EUR 10 · boots instantly Raspberry Pi our Node app · linux-arm64 the OI-Frame stack Small PC Electron, or a vvvv exe when it needs a GPU Hardware SPI data + clock any platform HD107s · 144/m 27 kHz PWM 4 wires · 5 V one SPI port is all our code needs — the clocked strip buys that too

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.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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
  5. 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.
  6. Price 30 % under the market is a warning, not a bargain. It buys thin copper or off-spec dice every time.
  7. "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~PriceWhat it is for
1HD107s RGB, 5 V, 144/m — 1 m€10–15The recommendation. 27 kHz, 144 px/m.
2APA102 RGB, 5 V, 144/m — 1 m€10–15The cheaper clocked part, as a cross-check.
3HD108 RGB, 5 V, 144/m — 1 m€12–18The 16-bit reference. Needs a non-WLED controller to show its advantage.
4SK6812 RGBW, 5 V, 60/m — 1 m€6–9Does a real white channel beat RGB-mixed white?
5FCOB RGB WS2811, 12 V, 720/m — 1 m€10–15The dotless look, for pieces never filmed close.
6WS2805 RGB+CCT, 12 V, 60/m — 1 m€12–18Colour and tunable white together, at 20 px/m.
7Raspberry Pi Zero 2 W + quality SD card + supply€25–35The default runtime. The OI-Frame stack, driving the strip over spidev.
8ESP32-S3 dev boards, two€20The no-OS runtime, and a spare for bring-up.
974AHCT125 level-shifter breakouts€83.3 V → 5 V. Both items 7 and 8 need one.
10Optional QuinLED-Dig-Quad, assembled€75–95A 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.
11Mean Well LRS-100-5 (5 V, 18 A)€22The 5 V rail. Clocked strips are the current-hungry ones.
12Mean Well LRS-150-12 (12 V, 12.5 A)€25The 12 V rail for items 5 and 6.
13Inline fuse holders and fuses€10One per injection point.
14Shielded twisted pair, 20 m€15Data. Unshielded runs act as antennas.
15Wire, JST SM pigtails, heat-shrink€20Power and joints.
16300–470 Ω resistors, 1000 µF/25 V caps€5Series resistor on data, bulk capacitor at the strip. Standard practice.
17Aluminium profile + frosted diffuser, 2 m, two widths€25–35Diffuser depth decides whether dots are visible. Test it, do not assume.
18A phone at 240 fps slow motionfreeThe 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-arm64 builds, 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.

RGB Strip for Real-Time Art Pieces · designed for A3 landscape print ← back to the document

Figure 1 · The strip landscape

27 kHz 20 kHz 4.7 kHz 1.2 kHz 400 Hz PWM REFRESH · CAMERA SAFETY ADDRESSABLE PIXELS PER METRE ← COARSE · 14–20 px/m FINE · 144 px/m → 1 800 Hz · THE 60 FPS THRESHOLD NO CLOCKED COB FOUND dotless light ships only with slow ICs COB · WS2811 / WS2814 / WS2805 14–20 px/m · 400 Hz · no dots WS2812B · 144/m 400 Hz · the default SK6812 RGBW · 60/m 1.2 kHz SK6812 RGBW · 144/m 1.2 kHz SK9822 · 60/m 4.7 kHz · clocked APA102 · 144/m 20 kHz · clocked HD107s / HD108 · 144/m 27 kHz · clocked · HD108 is 16-bit the only corner a camera cannot break
RGB Strip for Real-Time Art Pieces · designed for A3 landscape print ← back to the document

Figure 2 · Where the code lives

sACN · DEV ONLY THE PIECE — SELF-CONTAINED OUR CODE RUNS HERE · PICK ONE STUDIO · DEV TIME ONLY vvvv gamma authoring · testing or an exported exe ESP32 our firmware · C++ ~EUR 10 · boots instantly Raspberry Pi our Node app · linux-arm64 the OI-Frame stack Small PC Electron, or a vvvv exe when it needs a GPU Hardware SPI data + clock any platform HD107s · 144/m 27 kHz PWM 4 wires · 5 V one SPI port is all our code needs — the clocked strip buys that too