Notes on Kinetic Computing

© Tim Fort 2008






Back in the Eighties, when I was a dashing young nerd taking up space in college and getting my degree in rocket science, I took a course in electrical engineering. During one lecture on logic circuits, the idea of using dominoes for computation popped into my head. Over the years, I pondered the idea of using dominoes or one of my other chain-reaction techniques to build a working digital computer. I even tested out a few basic logic gates, having better luck with the 'herringbone' technique (collapsing chains of sticks) than with dominoes. Other people have had the same inspiration as well, including one man who constructed a successful Tinkertoy computer that played tic-tac-toe. There have been attempts over the years to build working domino computers, but I don't know of any successes.

After attempting to design circuits to do simple tasks like adding a couple of binary numbers together, I came to the conclusion that even the most basic computations would be very difficult and the computers could easily fill up a small auditorium with dominoes or wooden sticks. Since I am more of an artist than a computer scientist, I'll leave the actual construction of kinetic computers to those more cybernetically gifted. There is a scarcity of information on the subject of mechanical computing on the Internet, so I decided to offer my two cents' worth on this arcane topic in hopes that it may help some cyber-geek in their quest to build a working kinetic computer.

There seems to be a standard convention with domino (or other chain-reaction) computers: a fallen chain is a '1' signal, while an unfallen chain is a '0' signal. I'll work with that convention for now, but there's a refinement that I'll explain later. Since a computer can be constructed out of just AND, OR, and NOT gates, those are the logic gates I've concentrated on. I leave the design of more complex gates like XOR to those more mathematically gifted.

Designing an OR gate for dominoes is absurdly simple as in the picture below. The OR gate is nothing more than having two chains run into one. It's basically a standard domino split-off, but with the dominoes falling in the opposite direction. If either the A or B chain falls (a '1' signal), then the output is also a '1'.



Domino AND gates seem to be much trickier to construct. One tentative idea I came up with is to have a small gate arm blocking the B chain to prevent it from falling. When the A chain falls, the end domino tumbles onto a tiny lever which raises the gate arm and allows the B chain to fall. This works because the output signal will be a '1' only if the A chain and B chain both fall. The main drawback to this design is that it will only work properly if the A chain always falls before the B chain.

I have had better luck in designing logic gates with the herringbone technique. A herringbone chain works by having one end of each stick resting on a support and the other end resting on the previous stick. When the first stick in a herringbone chain is pulled out, the other sticks collapse in a chain.

Herringbone OR gates are very easy to construct. In the picture below, the purple and orange sticks are herringbone chains that carry the A and B signals. The red stick has both ends resting on other sticks so that if either the A or B chain collapses, the red stick collapses and the output signal (the green sticks) is a '1'.



Construction of herringbone AND gates are only slightly trickier. In the picture below, the red stick is held up on one end by both an orange and a purple stick. Thus, the purple A chain and the orange B chain both have to collapse in order for the output signal to be a '1'.



For both domino and herringbone computers, the construction of a practical NOT gate seems to be very challenging. The theoretical limitation is this: if the input chain is unfallen (a '0' signal), then there's no way for it to trigger the falling of the output signal. At least this is a problem if you're limited to just one input chain and one output chain for the NOT gate. To work around this problem, I (and others) have come up with the idea of introducing another chain. I call this chain the 'control chain' or 'C' because it has other uses besides making a NOT gate practical. For various reasons, the C chain is always falling and is thus always a '1' signal.

I have tested several tentative designs for herringbone NOT gates with varying degrees of success. The basic idea is to have the input chain A act upon the control chain C to produce the output chain NOT A. If the A signal is '0', then the NOT gate allows the C chain to fall unimpeded to produce an output signal of '1'. If the A signal is '1', then it triggers a simple mechanism that arrests the fall of the C chain so that the output is '0'.

One idea I tested for a NOT gate had a stick that was hinged and attached to an immobile support. The hinged stick was part of the C chain and normally had enough freedom of movement to allow the C chain to collapse unimpeded. However, if the A chain collapses, it causes a weight of some sort to fall upon one end of the hinged stick to prevent the free end from falling. I got this design to work in tests, but it still needs to be simplified and made more reliable before it can be used in a computer.

I had mentioned previously that a control chain has more uses than making a NOT gate practical. It also helps to solve an ambiguity with the standard convention of an unfallen chain representing a '0' signal. The ambiguity is that an unfallen chain could also be a '1' signal that hasn't fallen yet. For example, suppose that the output of a simple herringbone computer consisted of a single output chain. As long as that output chain hasn't fallen yet, it is indeterminate ('0' or '1') as it could still fall. However, if the control chain C causes a tilt-up sign to display "Computation Finished" and the output chain still hasn't fallen, then you can know for certain that the output is a '0' signal. Similarly, a computation can be initiated by starting the control chain, perhaps with a "Computation Started" sign as well.

In ways I can barely fathom, a control chain is also very useful in controlling the timing of a multi-step computation. In this sense, it works in a similar way to the clock pulse in an electronic computer. An important consideration is that the control chain is longer than any of the signal chains for the computer to work properly. It might be necessary to add a time delay in the control chain (e.g. back and forth rows of dominoes or herringbone sticks) to ensure that it falls after all the signal chains have fallen. A final use of a control chain would be to add memory to a computer circuit. To read the value of a signal chain (register), the control chain would perform an AND operation with that signal chain.

Before I realized just how difficult it would be to make a working kinetic computer, I had a very detailed mental image of what a public demonstation of such a computer would look like. A good demonstation of a simple computer would be to add a couple of five-digit binary numbers together. The audience would pick out two numbers between 1 and 31 and the numbers entered in the computer by pulling levers that would collapse herringbone chains or knock down rows of dominoes corresponding to the binary digits. After the numbers were entered, a lever would be pulled that would start the control chain and display the "Computation Started" sign. The output display would initially be a row of six small signs with a '0' on each of them. When an output chain collapses, the corresponding sign would fall to reveal another sign with a '1' on it. If everything works right and the proper output chains fall, then another tilt-up sign with "Computation Finished" would be revealed.

But, alas, the BRAINIAC 2800 Xylocomputer will probably never be constructed, at least not by me, due to its enormous complexity. I'm sure there's some fresh-faced kid just out of MIT or CalTech with just enough moxie and youthful foolhardiness to try such an insane thing. If you're inspired by this essay to attempt to build a kinetic computer, may you have the best of luck!





Return to the main Kinetic Art page.

Return to the main Kinetic Art page.