Learn how to build the beautiful 19th century analog mechanical computer that performs Fourier synthesis and analysis via a system of gears, springs, levers, and cams. Interact with it in detail both physically and virtually.
Kickstarter · The book · Learning log · Simulator · Built with AI
Turn the crank and the machine performs Fourier synthesis. Twenty weighted cosines get summed by twenty springs pulling on a knife-edge lever, and a pen draws the result as a continuous curve. Set it up differently and it runs the operation backwards, doing Fourier analysis, which Michelson himself declined to explain on the grounds that it "involves so much mathematics that I shall not undertake it here."
One of these machines survives in a glass case at the University of Illinois, and it is very well documented. Bill Hammack, Steve Kranz and Bruce Carpenter photographed it, took it apart on camera, and published both a book and a four-part video series explaining exactly how it works. If you want to understand the machine, go read theirs first. It is free.
What none of that gives you is a way to make one. No dimensioned drawings, no tolerances, no stock list, no setups, no process. A beautifully explained machine that nobody has written down how to build.
So: 102 parts modelled in SolidWorks, generated from Python, verified on every build and checked against those same photographs. Plus a book being written to turn all of that into chips on a shop floor.
The finished machine is being donated to Matemateca, the mathematics outreach collection at the Institute of Mathematics and Statistics of the University of São Paulo. They put mathematical objects in front of the public and in front of students, and they will use this one with middle and high schoolers. The professor who runs the collection is on board.
It slots into a gap they already have. The collection includes a harmonograph, Chladni plates, a piece on the harmonic series, one on sampling, and one on gears, plus an adding machine and a slide rule. What it does not have is the thing that ties the harmonics half and the analog-computing half together: a machine that decomposes a curve into its frequencies while you watch.
There is also a line on their donations page that reads, in hindsight, like a description of this project:
As there is immense difficulty in finding a professional who can bring object theory to practice, the value becomes very variable for each idea. The simpler, the lower its cost, which makes it difficult to produce more complex parts.
That destination sets the engineering bar. The machine has to work, not photograph well. A fourteen-year-old gets to turn the crank, and the pen has to draw the right curve when they do.
| Frame | Drive train | Channels (×20) | Summing |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Magnifier | Pen | Paper drive |
|---|---|---|
![]() |
![]() |
![]() |
There are production drawings too. The release bundle ships a sheet per part:
| Rocker-arm support | Platen guide |
|---|---|
![]() |
![]() |
Every part and assembly is generated by Python reproduction scripts in
cad/scripts/ driving SolidWorks over its COM API. The scripts
are the source of truth. The .sldprt/.sldasm files and the renders are build
artefacts, regenerated by doit and snapshotted only at
tagged releases.
Every dimension traces back to a source (a book page, a photograph, or a derivation) and carries a confidence level. Every assembly is gated on degrees of freedom, interference and mass properties before it is allowed to save. And the whole model gets scored against Hammack, Kranz and Carpenter's photographs of the surviving machine, pair by pair, on every export.
| Kickstarter | Funding the build and the book. Pre-launch. |
| The book | A Project for Hobby Machinists: every part, every setup, every cut, on a manual mill and lathe. The main deliverable. |
| Learning log | I am a software engineer who has never cut metal. Twelve modules of lathe and mill work, each one ending by making a real part of the machine. The book gets written from this. |
| Simulator | The machine in your browser, running on the exported CAD model, paced like the engineerguy videos. |
| Built with AI | An honest account of using LLM agents for all of this, failures included. |
A per-part manufacturability pass (cad/docs/machining-dfm.md)
found three parts carrying essentially all of the risk:
- A six-tooth gear about 4 mm across with a 0.49 mm wall at the tooth root over a 0.79 mm bore. The hardest part in the machine, and not by a small margin.
- The knife edge, which is the precision interface of the whole instrument and sits on a hex trunnion cantilevered 21.7 mm off an organic cast lever.
- A Ø0.79 × 34 mm journal in steel, 43:1 slenderness. Whip city.
There is also one settled finding that shapes the entire build: off-the-shelf involute cutters for this gear train's pitch do not exist. You make your own.
You need a SolidWorks seat. Full instructions are in
cad/docs/BUILDING.md.
git submodule update --init --recursive
uv sync
uv run python -m doit # every part + assembly + every gateWithout a seat you can still run the offline gates
(uv run python -m doit check:math), and every release ships the STEP, STL and
glTF exports plus the drawing PDFs.
- Hammack, Kranz & Carpenter, Albert Michelson's Harmonic Analyzer: A Visual Tour of a Nineteenth Century Machine that Performs Fourier Analysis (Articulate Noise Books, 2014). Free to read, and the reason this project exists at all.
- engineerguy, "A Machine That Uses Gears to Add Sines and Cosines"
- Michelson & Stratton, "A New Harmonic Analyzer", American Journal of Science 25 (1898): 1-13.
This project is independent of those authors and the University of Illinois, and is not endorsed by any of them.
Code, CAD and documentation are MIT. Reuse of the source book's content or the video transcripts has to respect their original copyright.










