Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,192 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Michelson's Harmonic Analyzer

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.

The surviving Michelson analyzer, stood on end in a glass case at the University of Illinois The CAD reconstruction rendered in the same pose
The machine. The surviving 20-element analyzer, in a corridor case at the University of Illinois.
Photographed 2025-08-28.
The model. 102 parts, generated from Python, gated on every build.
Same pose, rendered from the glTF this repository exports.

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.

Where it ends up

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.

Where it is now

Frame Drive train Channels (×20) Summing
Frame sub-assembly Drive train: crank, cone gears, cylinder gears Channel: rocker arms, amplitude bars, springs Summing: knife-edge lever, counter-spring
Magnifier Pen Paper drive
Magnifier: magnifying lever and wheel Pen carriage Platen, transgear, roller chain

There are production drawings too. The release bundle ships a sheet per part:

Rocker-arm support Platen guide
Engineering drawing, rocker-arm support Engineering drawing, 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.

The five things being built

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.

The hard parts, which are already identified

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.

Build the model yourself

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 gate

Without 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.

References

  • 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.

License

Code, CAD and documentation are MIT. Reuse of the source book's content or the video transcripts has to respect their original copyright.

About

Building Albert Michelson's 1898 harmonic analyzer — a 20-element mechanical Fourier computer — from scratch, and writing the machining book nobody ever wrote. Parametric SolidWorks CAD (102 parts + 95 drawings, scripted + verified), a learning-to-machine log, and an interactive simulator.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages