Hello, I'm looking to build a setup which uses a video stream (like Syphon)

Hello, I’m looking to build a setup which uses a video stream (like Syphon) as an input to produce led output. It’s not that many leds, only about 20. Can this be implemented in fastspi in a way? Or should I look to alter and use a different library? Thanks!

if you have “processing” power i have seen people use processing to form / manipulate the images and then port to arduino/teensy for the led usage.

i can’t get round in my head how 20 leds will look with video stream… would it not just flicker weirdly?

side note… that syphon looks amazing!

Ah right, just a bit like Adavision does.
I’m making some kind of pixel blocks around the LEDs, so whole surfaces light up when the led does, then I can use abstract animations to light it up

You can definitely do this - the one question that I would have for you is which led chips are you using? Certain classes of chips, namely the tm1809 and ws2811 and ucs1903 have very specific timings and don’t deal well with interrupts - so if you’re using those chips I would suggest a protocol between the arduino and the computer along the lines of something where the arduino indiciates that it is ready to receive data and then the computer sends it along, vs. the computer sending data whenever it has it, assuming that the arduino’s interrupts will take care of receiving the incoming data.

I’m looking into ways to help work around this, e.g. a graceful exit from writing rgb data out when an interrupt fires, to allow the interrupt handlers to run - and basically cut a frame being written short vs. sending out corrupting data.

That’s great to hear, I’ve just got the ws2811 because it’s a wee bit smaller than the lpd8806 which I’ve also got. So if the lpd is easier to implement I’ll use that one for my first prototype, the ws2811 will come later then.

But how can I link a sketch which receives Syphon video in Processing to fast spi?

Another option would be to receive pixel information over OSC, which only need to be send to the correct led… (the osc part I got working now)

Your loop function would look something like:

WS2811Controller<23> LED;
CRGB leds[20];

loop() {
// receive data from Syphon
// copy rgb data from Syphon to led array?
LED.showRGB(leds, 20);
}

Of course, if you’re getting bytes from Syphon, in rgb order, already, you can probably skip the copy portion.

Is that the question you’re asking, or is it something else?

Also - I like the size of the ws2811 chips as well - hard to beat 60 leds/meter! Also they’re about half the cost of the LPD8806’s in bulk.

On the flip side, the ws2811 chips run at an 800kbps data rate (and even with paul’s OctoWS2811 library, that’s an aggregate rate of 6.4Mbps) - and the LPD8806’s i’ve been able to push at 22Mbps!

So many options, so little time :slight_smile: