Instrument x Seth Akkerman
Projects Variable Font Controller

Variable Font Controller

A peer-to-peer experiment that turns your phone into a wireless controller for manipulating variable font axes on screen

Variable Font Controller is a dual experiment exploring two ideas at once: peer-to-peer device connectivity and the creative potential of variable font axes.

How it works

A desktop screen displays text set in Instrument Sans — a variable font with weight and width axes. When the page loads, it generates a unique QR code. Scanning that code with your phone opens a touch controller interface, creating a direct peer-to-peer connection between the two devices.

From your phone, you can manipulate the font in real time: drag to adjust weight and width simultaneously across a 2D space, toggle italics on and off, or reset to defaults. The text on screen responds instantly — no perceptible lag.

The technology

Instead of a traditional WebSocket server, this uses PeerJS for WebRTC peer-to-peer connections, backed by Google’s public STUN servers. The QR code encodes a randomly generated session ID that pairs the two devices directly. No server sits in the middle relaying messages, which keeps latency extremely low.

The connection is lightweight and temporary — it exists only as long as both devices are on the page. If the connection drops, scanning the QR code re-establishes it instantly.

Why it matters

The variable font piece is interesting on its own — it’s a tangible way to understand how axes work and what a typeface can do when weight and width aren’t fixed values. But the real unlock is the connection pattern.

The same peer-to-peer approach could power:

Any scenario where you want someone to control a shared screen from their personal device — without installing anything — this pattern handles it.

Role
Creative Technologist
Tools
PeerJS WebRTC Variable Fonts QR Code JavaScript
Metrics
Real-time cross-device control with sub-second latency
URL
https://instrument-variable-type.netlify.app/
Video thumbnail for Variable Font Controller