The Shape of Macintosh Software

By 1986, a moose could appear on a Macintosh screen. He spoke out loud and told jokes, his mouth moving to match the words.

Canadian physician and programmer Steven B. Halls created the Talking Moose at a time when a recognizable face had to be assembled from black-and-white pixels. Few pixels were enough to give this character a personality.

Today, talking computers usually bring up questions of artificial intelligence. The Moose's beginnings tell a different kind of story, that of one programmer working out how to make a computer-generated voice seem to issue from a character.

Why a moose?

The antlers helped.

Photographs of the original Talking Moose present a two-dimensional Macintosh character. With so little room for detail, its outline had to carry most of the work. Halls recalls that antlers were easy to recognize at a small size. He also happened to like moose, so the choice was settled.

The first version was written by Halls in assembly language. Getting the lips to track the speech required some cleverness. As he recalls it, the program located Macintalk, the Macintosh speech engine, in memory. Watching data about the sound being played, it then adjusted the Moose's mouth shape to match.

None of this altered the speech engine's memory. The Moose was simply watching it. In those days, Macintosh software could access memory across applications, something modern operating systems generally restrict.

That same access let the character remark on window and document names in familiar applications. Information on your own computer was what a seemingly knowledgeable Moose was responding to. No language model stood behind the face; its behavior was programmed.

The Years in Color

By around 1989, the Moose had acquired color. Halls kept a picture of that version on his wall, printed with an early Macintosh color printer. His color Moose account includes scans with the printing dots still visible.

Here is a small piece of computing history to inspect: the character as it looked then, kept on paper as well as in software.

Former users supplied a further kind of record. In a letter published in 2016, Mike Ellis recalled seeing the Moose at a Boston Mac Developers Group conference in the late 1980s:

"He was widely admired by some of the cleverest developers I've ever known, and he became my constant companion on my Mac Plus."

Other recollections sent to Halls sit alongside that letter. Decades after using the software, people still remembered the character well enough to write to its maker.

Making a 3D Head Seem Alive

A three-dimensional head belonged to the later Windows Moose. Its ears moved, and its eyes glanced about. More expression came from its eyebrows and mouth than the original pixels could manage.

Repeating the same animation clips would have made those movements predictable. Instead, the Windows character used procedural animation, with algorithms generating its motions.

Controlled randomness is what Halls's explanation of the animation describes. A movement could end near a target rather than at exactly the same spot each time. The pause before the next movement varied, and its speed varied too. The result avoided looking mechanical, thanks to smooth acceleration and deceleration.

A different platform meant a different lip-sync mechanism. On Windows, the character took timing information from Microsoft's Speech API to choose its mouth shapes. The old Macintalk memory-observation technique did not need to be recreated.

Something Useful to Announce

The Moose kept its jokes, but plugins added other things for it to talk about. News and weather came alongside reminders and notifications.

A June 2016 update set out a working Pushover connection, in which IFTTT supplied events for the Moose to announce. One example warned of approaching rain. Another saw a phone entering a home geofence trigger a spoken "Welcome home" on the user's PC.

Checking a screen for those messages was unnecessary. Hearing them was enough.

A Voice That Had a Face

Forty years stand between the original Moose's 1986 appearance and today's enthusiasm for AI assistants. Calling it an early version of today's conversational AI would miss what Halls actually built. Enough to make a joke seem to come from an antlered companion were speech synthesis and carefully written animation code.

For Mike Ellis, that companion belonged on his Mac Plus. For the later Windows project, it could be the voice announcing rain or greeting someone arriving home.

The early screenshots are still worth a look. Plainly a face made of pixels, it was nonetheless remembered by a former user as a companion. That's quite a result for a joke-telling moose.