Experimental Project | iOS Camera App | 2025

Rendering Monocam into a Real-Time ASCII Camera

An experimental camera app that transforms live video into dynamic ASCII art. Exploring the intersection of retro aesthetics, creative filters, and modern mobile web capabilities with tactile, hardware-inspired UI controls.

Timeline

2 weeks

Design + Development

Role

Product Designer

UI/UX, Development, Testing

Platform

Live

Vercel

Why Monocam?

Creative cameras, reimagined.

I wanted to create something experimental and playful—a camera app that doesn't just capture reality but transforms it into something unexpected. ASCII art has this unique quality of being both nostalgic and futuristic, technical yet artistic.

The challenge was making real-time video processing feel smooth and responsive on mobile devices, while giving users tactile controls that feel like manipulating physical camera hardware.

60fps
Real-time processing
8
Character filters
12
Color palettes
4
Densities

Character Set System

Different character sets create dramatically different visual outputs. The "standard" set uses 10 characters for quick rendering, while "detailed" uses 15 for finer gradations. Specialty sets like "blocks" and "binary" offer unique artistic expressions.

Use the scroll wheel below to explore how each filter transforms the live camera feed. The LCD display shows the current filter abbreviation, mimicking vintage camera hardware.

Interactive Demo

Live camera feed with scroll wheel control. Drag left/right to switch between character sets in real-time.

Performance optimized

Canvas-based rendering achieves smooth 60fps on most devices with dynamic resolution adjustment.

Color Palette Engine

Each palette uses perceptual color mapping to maintain visual fidelity while adding creative flair. Colors are mapped based on brightness levels, ensuring dark areas stay dark and highlights remain bright across all palettes.

Scroll through neon, periwinkle, spring, sunset, and ocean palettes to see the transformation. The system supports 12+ unique color schemes with smooth real-time switching.

Perceptual mapping

Colors map to brightness levels, preserving contrast and recognizability while applying creative palettes.

Instant switching

No lag when changing palettes. Colors update in real-time without interrupting video processing.

Key Design Decisions

Building Monocam required balancing performance, creativity, and usability. Every decision—from character selection to UI controls—was made to create a smooth, delightful experience that feels both technical and playful.

Physical UI Controls

Instead of standard dropdown menus, I designed scroll wheels inspired by vintage camera dials. These provide tactile feedback and make switching filters feel like adjusting physical hardware. The LCD display shows abbreviated filter names with a retro digital aesthetic.

// Scroll wheel interaction
const deltaX = e.clientX - scrollStartX
const segmentSize = 100 / filterNames.length
const filterIndex = Math.floor(scrollPosition / segmentSize)

Character Set Optimization

Balancing visual detail with performance required careful character selection. The "standard" set uses just 10 characters but creates recognizable images. The "detailed" set uses 15 characters for finer gradations at the cost of slightly slower rendering.

standard" .:-=+*#%@"
detailed" .,:;i1tfLCG08@"
blocks" ▖▗▘▙▚▛▜▝▞▟█"

Feedback.

After two weeks of testing with 50+ users, Monocam achieved strong engagement and positive feedback. The scroll wheel UI was particularly well-received, with users describing it as "intuitive" and "delightful."

4.6/5
User rating
60fps
Avg performance
50+
Active testers
89%
Repeat usage

What Worked

  • Scroll wheel UI was intuitive and delightful—users loved the physical feel of switching filters
  • Canvas-based rendering achieved smooth 60fps on most devices
  • Color palettes added creative expression while maintaining recognizability

Learnings

  • Battery drain was higher than expected—added power saving mode for longer sessions
  • Users wanted Gallery feature—working on gallery functionality in v2