The History of Virtual Companions

In 1986, a Macintosh could have a moose on its 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, back when a recognizable face had to be assembled from black-and-white pixels. Few pixels were enough to give this character a personality.

Today's talking computers tend to prompt questions about artificial intelligence. The Moose's beginnings belong to another kind of story: a single programmer working out how to make a computer-generated voice seem to come from a character.

Why a moose, though?

Antlers played a part.

Pictures of the original Talking Moose show 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 liked moose as well, and that settled the choice.

Halls wrote the original code in assembly language. The lips had to follow the speech, which took some ingenuity. The program located Macintalk in memory, as Halls recalls, that being the Macintosh speech engine. It observed the sound being played and then changed the Moose's mouth shape to suit.

The speech engine's memory was not changed by this. The Moose was observing that memory. Early Macintosh software could reach across applications into memory, in ways modern operating systems generally restrict.

With that access, the character could comment on window and document names in applications users knew well. Information on your own computer was what a seemingly knowledgeable Moose was responding to. Its behavior was programmed, with no language model behind the face.

The color years

Around 1989, the Moose gained color. On his wall, Halls kept a picture of that version, printed with an early Macintosh color printer. His color Moose account includes scans with the printing dots still visible.

You can inspect this small piece of computing history, the character as it looked then, preserved in software and on paper.

Early users provided another kind of record. Mike Ellis, in a letter published in 2016, 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."

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

Giving a 3D Head Life

A three-dimensional head belonged to the later Windows Moose. Its ears moved and its eyes looked around. Eyebrows and mouth gave it more expressive scope than the original pixels could manage.

Playing the same animation clips over and over would have made those movements predictable. The Windows character used procedural animation instead, its motions generated by algorithms.

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.

With the platform, the lip-sync mechanism changed. On Windows, Microsoft's Speech API supplied timing information that told the character which mouth shapes to use. Recreating the old Macintalk memory-observation technique was unnecessary.

Something Useful to Announce

Jokes remained part of the Moose, but plugins gave it other things to talk about. 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. Another saw a phone entering a home geofence trigger a spoken "Welcome home" on the user's PC.

You didn't have to keep checking a screen for those messages. They could be heard.

A voice with a face

Forty years separate the original Moose's 1986 appearance from the current enthusiasm for AI assistants. To call it an early version of today's conversational AI would miss what Halls actually built. A joke could appear to come from an antlered companion, thanks to speech synthesis and carefully written animation code.

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

Those 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 is quite a result for a joke-telling moose.

Buy T-Shirts and Buttons and Magnets. Oh my!