The Development of Red Carpet
By 1986, a moose could appear on a Macintosh 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, back 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's talking computers tend to prompt questions about artificial intelligence. A different sort of story covers the Moose's beginnings: one programmer figuring out how a computer-generated voice could seem to come from a character.
Why a moose, though?
Antlers helped.
Pictures of the original Talking Moose show a two-dimensional Macintosh character. With little room for detail, its outline had to do much of the work. Antlers, Halls recalls, were easy to make out at a small size. He also happened to like moose, so the choice was settled.
Halls wrote the original code in assembly language. Making the lips follow the speech took real 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 observing that memory. In those days, Macintosh software could access memory across applications, something modern operating systems generally restrict.
The character could also comment on window and document names in familiar applications, thanks to that access. A Moose that appeared to know something about your work was reacting 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. On his wall, Halls kept a picture of that version, printed with an early Macintosh color printer. His account of the color Moose includes scans where the printing dots are 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.
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:
"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. Even decades after using the software, people remembered the character well enough to write to its maker.
Making a 3D head feel alive
The Windows Moose that followed had a three-dimensional head. Its ears moved; its eyes looked around. Eyebrows and mouth gave it more expressive scope 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. Rather than ending at exactly the same spot, a movement could finish near a target. Its speed varied as well, and so did the pause before the next movement. Smooth acceleration and deceleration stopped the result from looking mechanical.
A different platform meant a different lip-sync mechanism. On Windows, Microsoft's Speech API supplied timing information that told the character which mouth shapes to use. There was no need to recreate the old Macintalk memory-observation technique.
Something useful to say
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 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.
There was no need to keep checking a screen for those messages. You could simply hear them.
A voice with a face
Forty years stand between the original Moose's 1986 appearance and today's enthusiasm for AI assistants. To call 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. For the later Windows project, it could be the voice announcing rain or greeting someone arriving home.
Looking at the early screenshots is still worthwhile. Plainly a face made of pixels, it was nonetheless remembered by a former user as a companion. Quite a result, for a moose that told jokes.