
A real-time WebGL glitch + AI camera FX studio. True CPU Asendorf pixel sort, GPU datamosh, kaleidoscope chained through nine radial UV warps, 40+ generators, on-device MediaPipe Face FX, GEN+CAM live composite, native Save / Load Project, audio-reactive racks, MIDI / VJ control, projector mode.
Computational vision engine · pipeline: active · fx: multi-layer · audio: reactive
I built this because I wanted it.
This is evolving into a single instrument that can datamosh a live cam, run a real Asendorf row-sort, fold it through a kaleidoscope, datamosh that, and paint pixel cells over the top — while hooking up to a projector (projector mode), VJing (MIDI + audio-react), and spitting out a 9:16 GIF.
Glitch Pixel Studio sits in the middle — every effect is a knob you turn while pointing the lens at something. Stack them, automate them, audio-react them, save the patch.
— LOVEBEING
LIVE CAPTURE · NO POST
- NEW — Faraday-style Face FX mask. GPU-side dilation via a single
uFaceMaskRadiusuniform (2.5–38.5 output px) replaces the old CPU separable max-filter. Removed the temporal smear that was costing ~70 ms of perceptual lag. The mask now snaps to the subject every segmenter tick — no lag, no missed frames, full body coverage. - NEW — MASK EXPANDslider on the INPUT panel. Dial silhouette coverage from baseline body fit up to a 45 px bloom, all on-GPU at zero JS cost.
- NEW — GLYPH typographic finisher post-pass: CHARS · BLOCKS · BRAILLE · SHADES · EDGES. Drop ASCII / Unicode type over the entire composite as a final layer.
- NEW — Split INPUT panel: BASE (CAM | UPLOAD) and GEN OVERLAY (OFF / FULL / SUBJ / BG) are now separate tile rows with one job each, plus an explicit SWAP FG/BG button.
- UX — Faster boot. The intro overlay now hides the camera + segmenter init so there's no dead pause and no gen-only fullscreen flash before FX engage.
- FIX — Camera watchdog auto-retries
startCameraevery 2.5 s if the cam is wanted but not live. Segmenter init now retries x5 with backoff for cold-boot WASM races. - FIX — SCALE knob drives true cell size again (chunkier pixels at higher SCALE), not just per-family noise zoom.
- FX — Diagnostic INPUT subtitle stamp
src:* fx:* cam:* seg:Y/nfor live state visibility. Color-blind-safe white 2 px borders on active BASE / GEN tiles.
ON-DEVICE · NO CLOUD · NO ACCOUNT · WORKS IN AIRPLANE MODE
Synth-style UI, built for one-thumb performance
Every rack collapses, every knob is gated, every session persists.



Twelve dedicated synth-style racks
Every knob is gated, every uniform is single-source, every session persists.
REAL ASENDORF PIXEL SORT
Not a UV displacement fake — a true CPU row-sort at 256×144 @ 20 Hz, sampled back into TEXTURE5 as uSortTex and gated by a single REALSORT master knob. Luma-keyed (Y << 24 | localIndex) so the streaks read as light/dark runs, not blue-channel noise. AMOUNT, LOW/HIGH, SEGMENT, NOISE, WOBBLE, TEAR, MODE (LINE / SPIRAL / BLOCK / SLICE / HILBERT), INTERVAL gate, ANGLE — all sculpted within the REALSORT envelope.
GPU DATAMOSH RACK
Twelve dedicated controls: I-FRAME freeze, MOTION bleed, COMPRES (DCT-style block crush), MAP (motion-vector reuse), BLOCK glitch, LIQUID feedback, CHRASH (MPEG smear), FEEDBACK loop, plus SOFT/HARD modes. Linear 0–2 INTENS so the top half of the slider keeps doing work — no dead zone.
KALEIDO + 9 RADIAL UV WARPS
KALEIDO chains into nine stacked radial warps — TILE, DROSTE, SPIRAL, YANTRA, MANDALA, ROSETTE, STARFOLD, HEXFOLD, INVERT-SYM. Each is an independent mask-gated UV transform you can stack like a modular synth patch. Combos that don't exist anywhere else.
40+ GENERATORS
Bayer dither, halftone, mosaic, voronoi, plasma, ASCII (ertdfgcvb glyph atlas), hex, weave, truchet, stripes, brick, diamond — plus L-systems, reaction-diffusion, boids, particle life, DLA, and a CPU sphere-traced SDF stack. Every generator pipes through the full FX rack.
CAMERA-NATIVE, RIG-FRIENDLY
Front or rear camera streams straight into the shader at full GPU speed via getUserMedia. Plays nicely with anamorphic adapters (Moondog, Sirui, Beastgrip), clip-on macro lenses, gimbal rigs, and external HDMI capture devices presenting as UVC. NATIVE / 9:16 / 1:1 / 16:9 export aspects so your anamorphic squeeze stays intact.
MIDI · AUDIO REACTIVE · VJ
Live mic FFT — bass / beat / level — modulates uSortAmt, uDatamosh, uRGBDrift, generator hue, and rack visibility. MIDI CC mappings for hands-on VJ control, livestream-friendly, single-pass uniform writes so latency stays under one frame.
PROJECTOR MODE
Dedicated full-screen output with chrome stripped and edge-fade for clean projection mapping. Drive it from the same browser that's running the rack, or fan it out to a second display.
GIF + VIDEO EXPORT
STD / HIGH / ULTRA quality presets, 24/30/60 fps, perfect-loop or full-length, 5/15/30/60 second windows. GIF path uses a quantized palette; video path uses MediaRecorder with optional microphone audio. Hold-the-canvas gesture also records.
PRESETS · QUICK-SLOTS · SESSIONS
Save the patch. Stack racks, automate them, audio-react them, hot-swap from quick-slots. Full session persistence across reloads. Bring up a saved live-set in seconds.
WEBGL1 SINGLE-PASS PIPELINE
One fragment shader, ~3000 lines of GLSL, ~80 uniforms. Hoisted scratch buffers (Uint32Array(SW=256)) keep GC quiet during sort runs. Auto-quality fallback maps to your device — runs smooth on a Pixel 4 and lights up an M-series rig like a Christmas tree.
How a frame travels through the studio
Five hops from sensor to export. The shader does the heavy lifting; the CPU sort runs as a sidecar so it never blocks the render loop.
getUserMedia → HTMLVideoElement → glTexImage2D upload at the device's native resolution. Front, rear, or any UVC capture device.
When a generator layer is armed, a procedural canvas composites with the camera feed before the shader pass — so the rack glitches the composite, not just the cam.
One fragment shader runs all enabled racks: pixel sort → datamosh → kaleido + radials → RGBNDR → color → output. ~80 uniforms updated per frame.
When REALSORT > 0, a 256×144 luma-keyed Asendorf row-sort runs at 20 Hz on the CPU and uploads its result to TEXTURE5. The shader blends it back via uSortMix.
MediaRecorder for video (with optional mic), framewise readPixels into a quantized palette for GIF. Output respects your chosen aspect — 9:16 stays 9:16.
Plays nicely with serious glass
Built like a modular synth
Every effect is its own panel. Every panel is independent, gated, and persists across sessions. Stack them, save patches as presets, assign them to quick-slots. Tap to capture, hold the canvas to record.
- PIXEL SORT — REALSORT master + 8 sculpt knobs
- DATAMOSH — 12 controls, SOFT/HARD modes
- KALEIDO + 9 RADIAL FX (TILE → HEXFOLD)
- RGBNDR — analog VGA channel-bender
- PIXEL DRAWER — paint living glitch cells
- ASENDORF / GYSIN — REACT-D, VOROSRT, GLYPH
- PIXEL GENERATOR — 40+ styles, 4 layers + master
- COLOR / TONE / MASK — luma key + tone curves
- AUDIO REACTIVITY — mic FFT, beat detection
- MIDI CONTROL — full CC mapping for VJ rigs
- PROJECTOR MODE — clean fullscreen output
- PRESETS + QUICK-SLOTS — save, recall, hot-swap
Under the hood
Single-pass shader, on-device AI, zero cloud. Numbers from the shipping v1.3.29 build.
- ENGINE
- WebGL1 single-pass fragment shader, ~3000 lines GLSL, ~80 uniforms / frame
- PLATFORM
- Android 9.0+ (Capacitor 7 native shell, WebView)
- FRAMEWORK
- Next.js 15 static export → native APK / AAB
- PIXEL SORT
- True CPU Asendorf row-sort, 256×144 @ 20 Hz, luma-keyed (Y << 24 | localIndex), uploaded to TEXTURE5
- FACE FX
- MediaPipe Tasks Vision SelfieSegmenter, GPU delegate, categoryMask, adaptive 50/67/100 ms cadence
- MASK PIPELINE
- GPU 13-tap MAX dilation (uFaceMaskRadius 2.5–38.5 output px), feather 0.008, latest-tick paint (no temporal smear)
- SOURCES
- getUserMedia (front / rear / UVC capture sticks), upload (image / GIF / video), procedural generators
- GENERATORS
- 40+ : Bayer · halftone · mosaic · voronoi · plasma · ASCII (ertdfgcvb atlas) · hex · weave · truchet · L-systems · reaction-diffusion · boids · particle life · DLA · CPU SDF
- FX RACKS
- Pixel Sort · Datamosh · Kaleido + 9 Radials · RGBNDR · Pixel Drawer · React-D · Vorosort · GLYPH (CHARS/BLOCKS/BRAILLE/SHADES/EDGES) · Color/Tone · Mask
- AUDIO
- Live mic FFT (bass / beat / level) modulating uSortAmt, uDatamosh, uRGBDrift, generator hue, rack visibility — single-pass uniform writes, sub-frame latency
- CONTROL
- MIDI CC mapping across the rack, on-screen knobs, multi-touch gestures, presets + quick-slots, full session persistence
- EXPORT
- GIF (quantized palette, 24 / 30 / 60 fps, 5 / 15 / 30 / 60 s, perfect-loop) · Video (MediaRecorder + optional mic) · NATIVE / 9:16 / 1:1 / 16:9 aspects
- PROJECTS
- .gps JSON snapshots → Documents/GlitchPixelStudio/projects/, native Share sheet to Drive / Dropbox / Discord / Telegram
- PROJECTOR MODE
- Chrome-stripped fullscreen output with edge-fade for projection mapping
- PERFORMANCE
- Auto-quality fallback by device. Smooth on Pixel 4-class hardware, lights up M-series rigs. Hoisted Uint32Array(SW=256) scratch buffers keep GC quiet during sort runs.
- PRIVACY
- 100% on-device. No cloud, no account, no tracking, works in airplane mode. Camera frames never leave the device.

Influences
Kim Asendorf's ASDFPixelSort · satyarth/pixelsort · the Gysin / ertdfgcvb ASCII tradition · After Effects Pixel Sorter (Plugin Everything) · classic VGA channel-benders · hg_sdf for the SDF generators · the Akascape pixelsort interval experiments · every modular-synth designer who decided one knob should be the master.
Real frames. Real glitches.
Captured live on Android — no post, no filters, no fake demo reel. Just the studio doing what it does.






Frequently asked
The questions that come up over and over.
What is Glitch Pixel Studio?
Does it work offline?
What devices does it run on?
Can I use my real camera glass — anamorphic, macro, gimbal?
How does Face FX work?
What's the MASK EXPAND slider?
Is the pixel sort a real Asendorf sort or a fake UV displacement?
Can I record / export?
Can I save my patches?
Does it support MIDI / VJ rigs?
Is it audio-reactive?
What's the GEN+CAM composite?
Where can I download it?
Open the studio.
Runs natively on Android. Uses your camera. Exports glitch art you actually own.
COMING SOON ON GOOGLE PLAY