Your work, on a stage, playing.
Sialk takes a sketch you already made in the browser and makes it an instrument. It hears the room, it runs at frame rate, and it is still yours afterwards.
01What you do tonight instead
Render it to video
The work stops being live. Whatever happens in the room, the screen has already decided what it is going to do.
Chain OBS to Spout to a media server
What people actually do, and documented broken from 2017 to 2025: judder on WebGL, audio that fails silently, a black frame with no error. It still reproduces on current hardware.
Rewrite it in TouchDesigner
Abandon the language and the ecosystem the work was made in. Most people look at the cost and stop.
02It has been broken the whole time
- 2017
BrowserSource component very laggy and overload CPU for canvas or WebGL renderer. Maintainer reply: there is nothing that can be done about that.
obsproject.com, thread 69768 - 2020
It has been this way for a very long time. Even on the most powerful Macs Apple currently offers.
obsproject.com, thread 133655 - 2023
I cannot hear them and neither can the stream, but they show the visuals and light up on the volume mixer.
obsproject.com, thread 171175 - 2023
It is black. No feed is coming through. Then a feedback loop, then judder from a hidden frame-rate mismatch. Silent failure, no error.
spout.discourse.group, thread 522 - 2025
The same performance collapse on an RTX 3070, OBS 31.0.1. It is CPU related, yeah.
obsproject.com, thread 184305
03The room reaches the artwork
The room reaches your sketch through a published contract: three bands, onset, tempo, level. Version 1 is frozen. Fields are only ever added, so a sketch written against it tonight still compiles in five years.
Read the contract · frozen at v1 · additive for ever
04Measured, with the conditions
- A raymarched GLSL scene holds frame rate
- 119.1 frames per second, one dropped in 422, at 1280×720 on an M3 Max.
- Two runtimes composite together
- A GLSL layer and a p5 layer at 120.1 frames per second, nothing dropped.
- The audio contract reaches the artwork
- Read out of a live shader's uniforms, not from a mock.