GPSGPS · 1.3.29
Glitch Pixel Studio

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"

Also on Google Play (Android) · Desktop unlock code with Android purchase

Artist Statement

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

What's New · v1.3.29 · May 2026

  • NEWFaraday-style Face FX mask

    GPU-side dilation via a single uFaceMaskRadius uniform (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.

  • NEWMASK EXPAND

    Slider on the INPUT panel. Dial silhouette coverage from baseline body fit up to a 45 px bloom, all on-GPU at zero JS cost.

  • NEWGLYPH

    Typographic finisher post-pass: CHARS · BLOCKS · BRAILLE · SHADES · EDGES. Drop ASCII / Unicode type over the entire composite as a final layer.

  • NEWSplit 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.

  • UXFaster 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.

  • FIXCamera watchdog

    Auto-retries startCamera every 2.5 s if the cam is wanted but not live. Segmenter init now retries x5 with backoff for cold-boot WASM races.

  • FIXSCALE knob

    Drives true cell size again (chunkier pixels at higher SCALE), not just per-family noise zoom.

  • FXDiagnostic INPUT subtitle

    Stamp src:* fx:* cam:* seg:Y/n for 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

Inside the Rack

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.

Signal Path

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.

  1. 01
    CAMERA IN

    getUserMedia → HTMLVideoElement → glTexImage2D upload at the device's native resolution. Front, rear, or any UVC capture device.

  2. 02
    GENERATOR OVERLAY

    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.

  3. 03
    SINGLE-PASS SHADER

    One fragment shader runs all enabled racks: pixel sort → datamosh → kaleido + radials → RGBNDR → color → output. ~80 uniforms updated per frame.

  4. 04
    CPU SORT SIDECAR

    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.

  5. 05
    CAPTURE

    MediaRecorder for video (with optional mic), framewise readPixels into a quantized palette for GIF. Output respects your chosen aspect — 9:16 stays 9:16.

Field Notes

Plays nicely with serious glass

ANAMORPHIC ADAPTERS

Squeeze (1.33× / 1.55× / 1.8×) is preserved end-to-end. Pick the matching export aspect and the GIF / video comes out at the rig's native ratio. Lens flares survive the sort because the luma key reads them as bright runs.

EXTERNAL CAPTURE

Any UVC-class device — HDMI capture sticks, mirrorless webcam modes, action-cam dongles — appears as a normal camera source via getUserMedia. Use your big sensor, glitch it in the browser.

PROJECTORS / VJ RIGS

Projector mode strips chrome and edge-fades for clean mapping. MIDI CC throughout the rack means a Launch Control or Push lights up the whole studio for a live set.

MODULAR / LINE-IN

Route a USB audio interface in and the audio rack pulses every uniform. Eurorack to glitch is one cable away. Hold the canvas to record.

The Full Rack

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

Tech Specs

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.

Built on shoulders

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.

FAQ

Frequently asked

The questions that come up over and over.

What is Glitch Pixel Studio?+

A real-time WebGL glitch art and AI camera FX studio for Android. It runs a single fragment shader with on-device MediaPipe Face FX, true CPU Asendorf pixel sort, GPU datamosh, kaleido + 9 radial UV warps, 40+ procedural generators, and the GLYPH typographic finisher — all routed through one composite pipeline.

Does it work offline?+

Yes. Everything runs on-device. No cloud, no account, no tracking. It works in airplane mode. Camera frames never leave the phone.

What devices does it run on?+

Android 9.0 and up. Auto-quality fallback maps the pipeline to your hardware — runs smooth on a Pixel 4 and lights up an M-series rig like a Christmas tree. iOS is on the roadmap.

Can I use my real camera glass — anamorphic, macro, gimbal?+

Yes. Front and rear cameras stream straight into the shader at full GPU speed via getUserMedia. Plays nicely with Moondog / Sirui / Beastgrip anamorphic adapters, clip-on macros, gimbal rigs, and any UVC-class HDMI capture stick. NATIVE / 9:16 / 1:1 / 16:9 export aspects keep your squeeze intact.

How does Face FX work?+

MediaPipe Tasks Vision SelfieSegmenter runs on the GPU at 15–20 Hz with a categoryMask output. v1.3.29 added a faraday-style GPU dilation pipeline (uFaceMaskRadius uniform, 2.5–38.5 output px) that snaps the silhouette to the subject every tick — no temporal smear, no missed frames. FACE mode keeps the person clean while the background glitches; BG mode wraps the person in glitch and leaves the world raw; SWAP FG/BG flips it.

What's the MASK EXPAND slider?+

A single knob on the INPUT panel that scales the silhouette outward in output pixels. Left = baseline body fit. Right = ~45 px bloom for full coverage at fast motion. All on-GPU, zero JS cost — moving the slider doesn't drop framerate.

Is the pixel sort a real Asendorf sort or a fake UV displacement?+

Real. A 256×144 luma-keyed row-sort runs on the CPU at 20 Hz as a sidecar (so it never blocks the render loop) and uploads its result to TEXTURE5. The shader blends it back via uSortMix gated by REALSORT. Streaks read as light/dark luma runs, not blue-channel noise.

Can I record / export?+

Yes. GIF export uses a quantized palette at 24 / 30 / 60 fps with perfect-loop or full-length 5 / 15 / 30 / 60 second windows. Video export uses MediaRecorder with optional microphone audio. Tap to capture a still; hold the canvas to record. Output respects your chosen aspect — 9:16 stays 9:16.

Can I save my patches?+

Yes. Native Save / Load Project writes full session snapshots (every rack, every knob) as .gps JSON files to Documents/GlitchPixelStudio/projects/, with a one-tap Share sheet to Drive, Dropbox, Discord, Telegram, anywhere. Quick-slots let you hot-swap presets during a live set.

Does it support MIDI / VJ rigs?+

Yes. Full MIDI CC mapping across the rack so a Launch Control or Push lights up the whole studio. Single-pass uniform writes keep latency under one frame. Projector mode strips chrome and edge-fades for clean projection mapping.

Is it audio-reactive?+

Yes. Live mic FFT (bass / beat / level) modulates uSortAmt, uDatamosh, uRGBDrift, generator hue, and rack visibility. Route a USB audio interface in and the audio rack pulses every uniform — Eurorack to glitch is one cable away.

What's the GEN+CAM composite?+

A live composite that paints a procedural generator over the camera feed before the shader pass — so the rack glitches the composite, not just the cam. Combined with Face FX it stamps generator pattern across just the person (FACE mode) or just the background (BG mode).

Where can I download it?+

Coming soon on Google Play. The current build is v1.3.29.

Open the studio.

Runs natively on Android. Uses your camera. Exports glitch art you actually own.

Coming soon on Google Play
GPS Shader Kit

A taste of what the app does. The real GPS runs hundreds of agents per frame on your phone — fully on-device.