The Growth of Software History

In 1986, a Macintosh could have a moose on its screen. He spoke aloud, moved his mouth in time with the words, and told jokes.

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. Only a handful of pixels were needed to give it a personality.

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

Why pick a moose?

It came down to the antlers.

The original Talking Moose appears in pictures as a two-dimensional Macintosh character. Since there was little room for detail, much of the work fell to its outline. Antlers, Halls recalls, were easy to make out at a small size. He also liked moose, which settled the choice.

The original code 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. It watched information about the sound being played, then adjusted the Moose's mouth shape accordingly.

This left the speech engine's memory untouched. The Moose was observing that memory. Early Macintosh software could access memory across applications in ways that modern operating systems generally restrict.

With that access, the character could comment on window and document names in applications users knew well. A Moose that seemed to know something about your work was responding to information on your own computer. Behind the face was programmed behavior, not a language model.

The Years in Color

The Moose had taken on color by about 1989. 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.

It is a small piece of computing history you can inspect, the character as it looked then, preserved on paper as well as in software.

Another kind of record came from old users. A letter published in 2016 has Mike Ellis recalling the Moose at a Boston Mac Developers Group conference in the late 1980s:

"Some of the cleverest developers I've ever known admired him widely, and he became my constant companion on my Mac Plus."

Among the recollections sent to Halls sits that letter. People still remembered the character well enough to write to its maker, decades after using the software.

Making a 3D Head Seem Alive

The later Windows Moose had a three-dimensional head. Its ears moved; its eyes looked around. More expression came from its eyebrows and mouth than the original pixels could manage.

Those movements would have become predictable if the same animation clips played over and over. Instead, the Windows character used procedural animation, with algorithms generating its motions.

Halls's explanation of the animation describes controlled randomness. Each movement could end near a target, not at precisely the same spot every time. Both its speed and the pause before the next movement varied. The result avoided looking mechanical, thanks to smooth acceleration and deceleration.

The lip-sync mechanism changed from one platform to the next. On Windows, timing information from Microsoft's Speech API told the character which mouth shapes to use. The old Macintalk memory-observation technique did not need to be recreated.

Something Worth Saying

Jokes stayed part of the Moose, though plugins gave it other things to talk about. Reminders and notifications were joined by news and weather.

A working Pushover connection appeared in a June 2016 update, with events for the Moose to announce supplied by IFTTT. One example warned of approaching rain. A phone entering a home geofence triggered a spoken "Welcome home" on the user's PC in another example.

You didn't have to keep checking a screen for those messages. Hearing them was enough.

A voice with a face

Between the original Moose's 1986 appearance and the current enthusiasm for AI assistants lie forty years. 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.

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

Looking at the early screenshots is still worthwhile. It's plainly a face made of pixels, yet a former user remembered a companion. For a joke-telling moose, that is quite a result.