Knobs: An old-school interface

7 August, 2013


I love thinking about and designing computer interfaces, in code and in the physical world. And I really love knobs, specifically infinite-scrolling with rotary encoders.

Pursuant to my love of interfaces and knobs, I put together a three-knob interface for my laptop, and I call it “Knobs.”

Why knobs?

I was thinking about the touch-based inputs we use so often now. I really like touch screens, but they miss out on some of the haptic satisfaction of bulkier, older-style interfaces. I love old Hi-Fi audio equipment, because of its sense of purpose and ease of operation. I wanted to experiment with a heavier, more tangible interface for my computer.

Knobs are cool because they can represent any linearly variable quantity, like volume, brightness, intensity, or tone. Thy can also represent position, speed, or menu choices. I built this project to be as open-ended as possible, because I didn’t really know what I would use it for.


I currently have the knobs controlling my window manager. One emulates alt + tab, for switching between open windows, and one emulates ctrl + alt + arrow, for switching between workspaces. I haven’t decided what the third should do, and I haven’t yet used the shaft button for anything.

Technical implementation

Knobs is really simple: an Arduino Pro Micro knockoff is wired to three rotary encoders. It doesn’t have enough interrupts to watch all three, so instead it polls each encoder as quickly as possible.

The Arduino has a built-in USB stack, so it emulates a keyboard. It sends keypresses when the encoders move, and those are mapped to window-manager controls on my laptop.

The source code, for Arduino 1.0 or higher, is on my GitHub.

Physical Design

Most of the project as focused on the form factor of a human-computer knob interface. I decided three knobs would be useful without being too bulky. I wanted a feeling of high quality and solidity, with intuitive purpose.

Knobs without the, erm, knobs.

The knobs invite the user to interact with them. They aren’t labelled, but their effects are immediate and reversible, so experimenting with them is natural. The enclosure is a solid block of black walnut, hollowed with a drill press and oiled with Tung oil. The two end faces are quarter-inch Aluminium plate, sanded, brushed, etched and then anodized. Four black hex-head bolts hold each plate on at its corners, and are easy to remove thanks to the embedded metal threads in the wood.

A single USB port is the only output on the rear plate, and the device has no lights, other sensors, or batteries. It is as simple as possible, while being as useful as three knobs can be.


Knobs was heavily inspired by Hi-Fi equipment. I also channelled the aesthetic of Monome, a new interface group legendary in the music community. I wanted the purposeful feeling of an oscilloscope, where each important function is broken-out to a top-level control, in the form of a physical sensor like a switch or knob.

I like the idea of important functions being on the top level of interaction: the user doesn’t have to dig for them. The knobs don’t have any modifier keys to change their functions, like a shift or alt key does for a keyboard. They don’t do different things based on the context of work on the computer; instead, they have a “global” scope.

The knobs take up space. They are always present on the desk, which could be good or bad, depending on how you look at it. On the one hand, they are never hidden, so they are always easy to find and use right away. When I want to switch workspaces, I turn the workspace knob. On the other hand, they take up valuable space to do something I can do with my keyboard. They are heavy and don’t travel well. Maybe that, too, is part of why I like them.

Aluminium and wood are two of my favorite materials in the world, and I love combining them. A computer interface device is an unexpected candidate for these architectural materials, and I think they bring a sense of humanism and physicality to virtual spaces. They wear well and last a lifetime, and they feel good to hold and manipulate. The knobs feel cool to the touch after they sit unused for a few minutes, then they warm up as they are used more often. The walnut is smooth and warm to the touch, and its natural grain pattern complements the precision of the Aluminium.


The Knobs aren’t all that useful to me right now, but I like them and I am glad I made them. I learned how to interface with rotary encoders–it’s actually quite simple.

Reflecting more on the action of switching between running tasks with the keyboard (for example using alt + tab), I realized that the main point of the shortcut was to keep both hands on the keyboard. Reaching for a knob is just as time-consuming as reaching to a mouse or touchpad, but the cognitive load of turning a purpose-built knobs is lower than that of locating, moving to, and clicking on a task-tray representation of an application.

The knobs don’t really save any motion, so maybe foot pedals would be better for the ultimate in efficiency. Knobs are very intuitive, though, and they can easily map to media controls, or perhaps the zoom level of a browser window. In theory, they could map to any function of the computer, including those affecting the web. I just need to think some more about what those functions might be.

The build, roughly in order

Ed Note: The gallery was lost during a site migration.