Show HN: Glitchy camera – a circuit-bent camera simulator in the browser
173 points| elayabharath | 14 days ago |glitchycam.com
Here are some photos taken: https://glitchycam.com/gallery
I intentionally leaned towards skeuomorphic design for nostalgia. I miss the days where I'd spend hours making a button to look like a physical button. Here I chose to make it look like a "good enough" Teenage Engineering device UI.
I tested/used GPT-5.3-Codex to build this from scratch, since there was a lot of hype around it on X. Maybe I wasn’t using it right, but I found it needed a lot of code cleanup at every step and a lot of hand holding along the way. It missed details/nuances and didn't land the skeuomorphic buttons or the interaction polish. It mostly helped with boilerplate where there wasn't much thinking/detailing. It did give a basic starting point for the effect calculations, but didn't really move the needle on the details.
Please give it a go and let me know what you think - your photos and video never leave your browser (you can download them if you choose to). Everything is processed locally in your browser (works offline), nothing is uploaded or seen by anyone.
nickthegreek|13 days ago
inspiration that I had me digging into this stuff: https://www.tiktok.com/@0xa.mp4
elayabharath|13 days ago
- https://ade3.substack.com/p/how-to-make-a-glitch-camera
- https://drive.google.com/drive/folders/1BbJMZmAN7hbA2YoD0xsV...
- https://fubar.space/wp-content/uploads/2022/10/Glitchwerks-C...
- https://www.reddit.com/r/CircuitBending/ [Many posts are about cameras]
flatcoke|13 days ago
imcritic|12 days ago
Is it working so slow (like 0.5-1 fps) only for me or is this intended?
Also, you mention video, how to switch to video from photo?
Other than that - that's pretty fun, just like others I love that everything is local on client.
0x7cfe|13 days ago
halfdaft|13 days ago
neom|13 days ago
Really really really fun! Thanks for making it. :)
ldad|13 days ago
fallinditch|13 days ago
gitowiec|13 days ago
andai|13 days ago
Is it emulating the CCD chip somehow, or approximating the effects?
elayabharath|13 days ago
naich|13 days ago
harel|13 days ago
elayabharath|13 days ago
tgv|13 days ago
elayabharath|13 days ago
1. The gain knob controls the overall intensity of the effect
2. The selected pins / effects are applied to the frame. I describe a couple of the effects below:
For HClock: If the horizontal clock pin is selected, I cut the frame into variable height slices (some are 2-3px, others 8-20px). For each slice, I calculate a random shift (up to ~20% of the frame width) and move the slice to the left or right by the shift value. Then I randomise between keeping the slice normal (70% of the time), black (15%), or a random color band (15%). I then add a magenta tint + darken every other line to simulate a broken TV signal.
For OD: If output drain pin is selected, I compute a random global offset and per line offet jitter. Then for each of the pixels, I move the red to the left and blue to the right by the jitter value.
After the effects are added, I add a global noise, some corrupt lines (on ~30% of the frames, random horizontal lines of magenta/pink/white, shifted/added)
3. Finally a global hue shift is added based on the second knob.
One thing I realised is that Math.random() produced a lot of noise and flow between the frames looked disorienting. So I used a simple integer hash function to produce a more "deterministic" random number and the frames looked more stable/consistent.
[1] I should probably look for optimisations to prevent the device heating up after a few minutes.
imbusy111|13 days ago
luckys|13 days ago
emilfihlman|13 days ago
Anyone else getting certificate issue?
...Certificate issue was here