a line for a real telephone
12 HP
Plug an old rotary phone into the socket in the panel and the module is its line. Its carbon mic comes out of MIC, whatever you patch into EAR is in its ear, and lifting the handset and dialling come out as gates and a CV.
Turn a knob: drag it, roll the wheel over it or use the arrow keys; a double click puts it back. The phone is plugged in: click its handset to lift it, put a finger in the dial and drag it round to the stop, then let go (or type the digits on it); lifted, drag the handset up and down. The patches step on by themselves until you touch anything.
The handset hears your own microphone, from when you press it; what it hears stays in your browser.
example patches
The hook and the dial here are TRUNK CALL's firmware, running in your browser; the line, the carbon mic and the hybrid are a model of its circuit. Her voice, the music on hold and the rest of the rack are made in the page.
An old rotary phone's own cord plugs into the 610 socket on the spine. The module feeds its loop with a steady current from both rails, hears the handset lifted, and counts the dial's pulses as it runs back. Nothing on the line is ever more than the rails, and it doesn't ring.
An old handset's microphone is a cup of carbon granules, and its voice is the line's current changing as they shake. So the current is its whole character.
One board sits 10 mm behind the panel with everything on its front, the USB-C in a notch in its top edge; only the power header, the debug header and the two flashing buttons are on its back. The socket's contacts are a wall socket's own springs, held in a black printed carrier that stands on the board round a hole cut through it, its nose up in the panel's window, so a measured plug changes a print, not the board. An RP2350 counts the dial; the sound never goes near it.
Drag to turn it; click it to take it apart.