The Early Days of Attractions

In 1986, you could put a moose on a Macintosh screen. He talked aloud and told jokes, with his mouth moving along with the words.

Canadian physician and programmer Steven B. Halls built the Talking Moose in an era when any recognizable face had to be assembled from black-and-white pixels. It didn't take many pixels to give this one a personality.

Talking computers today often raise questions about 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?

It came down to the antlers.

The original Talking Moose appears in pictures as a two-dimensional Macintosh character. There was little room for detail, so its outline had to do much of the work. Halls recalls that antlers were easy to recognize at a small size. Liking moose himself settled the matter.

The original code was written by Halls in assembly language. Getting the lips to follow the speech took some ingenuity. The program located Macintalk in memory, as Halls recalls, that being the Macintosh speech engine. It observed information about the sound being played, then adjusted the Moose's mouth shape to suit.

This didn't change the speech engine's memory. The Moose was watching it. Accessing memory across applications was possible in early Macintosh software, though modern operating systems generally restrict it.

With that access, the character could comment on window and document names in applications users knew well. When the Moose seemed to know something about your work, it was responding to information on your own computer. Its behavior was programmed, with no language model behind the face.

The Years in Color

Around 1989, the Moose gained color. Halls kept a picture of that version on his wall, printed with an early Macintosh color printer. The scans in his color Moose account still reveal the printing dots.

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.

Old users supplied another 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 became my constant companion on my Mac Plus."

That letter sits among other recollections that were sent to Halls. Decades after using the software, people still remembered the character well enough to write to its maker.

Making a 3D Head Seem Alive

The later Windows Moose came with a three-dimensional head. Its ears moved, and its eyes glanced about. Eyebrows and mouth gave it more scope for expression 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 turned to 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. Its speed varied too, as did the pause before the next movement. Smooth acceleration and deceleration stopped the result from looking mechanical.

The lip-sync mechanism changed from one platform to the next. 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

Plugins gave the Moose other things to talk about, while jokes remained part of it. To reminders and notifications were added news and weather.

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

There was no need to keep checking a screen for those messages. They could be heard.

A Face for a Voice

The original Moose appeared in 1986, some forty years before the current enthusiasm for AI assistants. What Halls actually built would be missed by calling it an early version of today's conversational AI. Speech synthesis and carefully written animation code were enough to make a joke appear to come from an antlered companion.

That companion, for Mike Ellis, belonged on his Mac Plus. It could announce rain or greet someone arriving home in the later Windows project.

The early screenshots still repay a look. It is plainly a face made of pixels, yet a former user remembered a companion. That is quite a result for a joke-telling moose.