Text, characters, speech, symbol mapping.
Story Teller
Basic Story Teller installation

Obsolete forgery, historical fiction, a concrete realization of a lie. Story Teller tells tales stored on tape, via speech, text on paper, a semi-translucent spectacle of mediation and machinery.

It is a system of cooperative but independent devices, mechanisms, and mechanical contrivances, of ambiguous age and origin.

Externally, is speaks, prints, draws and writes. Internally, it is a little model of anarchism, though it requires instrumentation and intellect to discern; the inter-connected apparatii (is this a word?) communicate with text, religously-pure-ASCII, stored on the one truly myria-year archival machine-storage medium: perforated paper tape.

The story teller system of components

Here are some of the components that make up the Story Teller system. Each performs some particular function. Different stories use different components, depending on what is stored on the tape (speech, text, etc).

The Model 3 Tape Reader Model 3 Tape Reader is what actually reads the data from the perforated tape, encoded as rows of up to eight holes punched across the width of the tape, and turns them into electrical symbols, that are distributed to the other components by the interconnecting wires. Basically silent in operation, it makes a lovely sput-sput-sput- sound as the tape is pulled through the reading head, which shines light through the holes to detect the data.

As important as the Model 3 reader, but not shown in the temporary photographs, are the supply and take-up mechanisms for the reels of perforated tape, subtle-enough devices in themselves. Another art lost, which had to be reinvented for the Story Teller.

Most installations use the Model 31 Vocalizer; Model 31 Vocalizer which converts English phonemes (more on that later) stored on the tape into aural utterances. It uses speech technology right up with the leading edge of the late 1970's. Alas, phoneme-based speech was a technological dead-end (as is obvious to anyone who has ever worked with it).

The Model 31 has two interesting features: (it has three features, but one of them, the volume control, is not "interesting"); glass-jeweled lamps that decode the component utterances (fricative, stop, silence, vowel, etc), and most amusing, a big bakelite knob that lets you slow the speech w-a-y d-o-w-n, such that you can hear the excruciating detail with which many spoken words are constructed ("ex crew shee ay ting").

A Teletype Corporation (R.I.P.) Model 28 Teleprinter, suitably modified with a WPS Model 2 Teletype Controller, Teletype Corp. Model 28 Teleprinter converts alphanumeric symbols into human-readable text, albeit slowly. This fantastically reliable locomotive of the printed word POUNDS out words a letter at a time, and given a decent supply of roll paper, ribbons, and 30-weight motor oil (no joke) will print continuously for another 40 years. A relic from the first "internet", telegraphy, this particular model first saw service in 1964.

Perforated tape

Story Teller's medium is one inch punched tape, paper or mylar, which contains the story, encoded in brief ASCII-based data records, compact and redundant. It is rather efficient data-wise, and runs about 5 to 15 characters per second off the tape reader. For example, an 18 minute story, in speech and printed text, fits on about 50 feet of tape, which winds into a nice circle that fits in the palm of your hand.

Writing good stories is of course difficult.

Technically, here's the story. Paper tape is eight bits wide, but only seven are used because this is pure (fanatically pure) ASCII. Control codes are used as... control codes, as per original specification. All data in the printable range, with paper-oriented format characters where appropriate (line feed, carriage, return, etc). Not all data maps to roman alphabet characters, for example, speech phonemes.

The tape is (literally) a character stream. Data is encoded in the stream as a series of short data records, with codes to indicate what kind of data (speech phonemes, printable text, etc) is in each record. (There are five protocol-overhead characters per record, currently.) Example perforated tape

A subset of RS-232 is used to deliver the serial data to the device(s). A passive "distributor" box busses the RS-232 devices together, and wire-NORs the CTS/RTS signal such that any one device can pause the data stream; hence all the peripheral devices are "in parallel" on the serial buss.

Here are some additional photographs of no particular import:

Model 31, bereft of decoration, under test; Model 3 under test; Models 3 and 31 begin endurance testing; Models 3 and 31 undergo more testing; Model 31 without it's pretty face; view inside the '31.

Another Story Teller peripheral that still needs some development is the still-incomplete and un-named XYZ analog thing that became the short-lived Model 423 Writing Machine (a belt made of unobtanium broke rendering it writeless) and the Model 87 Robot Victor Calculator (bad design plus old age caused it to catch on fire during a performance, rendering it digitless). It accepts compressed X, Y and Z motion data from a serial stream, like paper tape, and moves a pen on paper or a beam of elecrons on phosphors. It's 90% working; it drives an old Tektronix oscilloscope just fine today, but it's ugly and needs repackaging; and I haven't done the pen driver (Z) for the analog pen plotter, which is really what I want to do with it.

The data stream also is bulky, even with run-length compression and all that. The motion commands are generated by a PostScript program, using Illustrator files as input, so I can draw just about anything (but too many non-rectangular shapes makes the data bloat). And I still can't find an old-fashioned "Hershey" font for Illustrator.


Well that's a lovely bottom-up description; but where do the tapes themselves come from?

It's not pretty.

You won't hear me say this in public, but Story Teller is "multimedia". On some of the stories, such as COLOSSUS MK. 3 (amusingly, the British gov't has recently (Oct 2000) declassified the actual COLOSSUS II which this story alludes to {it's obvious enough that such an effort would have been made}), the teleprinter/vocalizer output is synchronized in excruciating detail, literally to the character. On others, there's just big blocks of teleprinter text, with an occasional vocal outburst.

As an example here's a tiny fragment from the COLOSSUS story.

The teleprinter prints:


And the vocalizer utters:

"the only sounds were power supply hum and buzz (pause) and a muffled sparse clatter of relays (pause) a vague pattern barely discernable"

Except that in the performance, the order is exactly this:

PRINTED: THE ONLY SOUNDS WERE                    50HZ                               ...
UTTERED:                     the only sounds were     power supply hum and buzz and ...

UTTERED:                              and a muffled <...> discernable

(Just attempting to describe in print the multi-media aspect begins to show the problem of representation.)

The content and the timing and presentation of the multiple streams are represented by lines of text in a plain text file. (I use a windows version of the horrid unix 'vi' editor; word processors are too fluffy for this.) The source files, described below, are then compiled using a special program I wrote for the purpose.

First, the Story Teller system is slow, 5 to 40 characters per second (that's not a typo). And because paper tape can tear, or get jostled, data on the tape is stored in a long series of short records. For simplicity and easy manual control, each line in the text file is output as one record.

Here is the source file fragment for the above COLOSSUS example:

AThe only sounds were \
PThe only sounds were
A50Hz \
Ppower supply hum and buzz, and 
Apower supply hum and buzz, and 
Pand a muffled sparse clatter of relays, a vague pattern barely discernable. 
Aa muffled sparse clatter of relays, a vague pattern barely discernable. 

(Note that the printer types "50HZ" that the vocalizer does not utter. Note also that there are intentionally two "and"'s in the utterance above; (the end of the first, and the first of the second) because the rest of the sentence is delayed a second or two by the teleprinter, it sounds unnatural without both "and"'s; the first one tells you that something more will follow, and the second "sounds right", re-connecting the first.)

Lines beginning with "A" generate "A" records, ASCII text. The rest of the line is data, with some special 'meta' characters such as \ mentioned below. Lines beginning with "P" generate "P" records, and the text that follows, except for some special meta-characters, is converted to phonemes (see the T2A software description). There are also record types "X", "T", etc, that do other things like generate the human-readable leaders and trailers for the tape, XYZ plot data records, etc.

The meta-characters control how the data in the record is handled or formatted, and depends on the record type. "A", ASCII data records, are illustrative. By default, each record ends with a CR LF sequence for the teleprinter; if \ is the last character on the line this is suppressed. Sequences like \b (BELL) \r (CR only) \n (LF only) allow primitive control of the output format. (The teleprinter, a Model 28 Teletype, uses the ITA2 character set, which is upper case only; a WPS Model 2 Teletype controller buried in it's guts handle the conversion and accepts the WPS data stream.)

Making tapes

So producing stories (ignoring the actual hard work of writing the stories themselves) consists of typing into a text file, expanding notes into paragraphs, marking where I want something said, or plotted, or a pause, or to ring the bell. For long stretches of text, I'll type text free-form then use VI commands to reformat and insert the A at the start of the line, etc.

When an edit is done, for example COLOSSUS.T2A, I run the compiler, T2A.EXE, which produces another file, COLOSSUS.IMG, a byte-for-byte exact image of what a paper tape contains. If I'm testing, I run the data out my computer's serial port, with a special program to do hardware-handshake that Windows screws up royally, to simulate the tape reader.

The edit-compile-simulate:Reader process is repeated a few hundred times, until my eyes glaze over, or as an old compiler once reported, "none of the errors was found". Then it's time to punch a tape.

It's no big deal, it just costs money. The tape punch plugs onto the Windows serial port, and with a FOSSIL driver and my serial program, the tape-image file is copied out to the tape punch. A 1000 foot roll of paper tape costs about $7.00, not bad. But mylar is about $55.00 per roll, so you don't screw up with that shit. I haven't yet bought a roll; I'm a really really good surplus hound, I've got dozens of rolls from all over the U.S. The worst thing is mounting a used roll of (say) 500 feet when you need 600. The compiler tells me the required tape length, but it's hard to judge the length of a partially-used roll of tape.


WPS serial data stream

Pleasant side effects of this design:

Here are my two paper tape punches, incredibly lucky finds, both. The one on the left is a GNT-4601 with an ASCII code EPROM; I paid C$25.00 for it NEW/OLD! UNUSED! (then US$200 for the ASCII EPROM!). The one on the right is a DSI NC2400, for which I paid US$50; it came with a big box of short rolls of mylar tape. Both are mylar-capable. Western Numerical Controls sells each of these, reconditioned with guarantee, for over US$2000 each! I guess if you really need one, they got 'em... I put mylar only in the heavier-duty DSI punch, hence I have both punches out. My DSI was reconditioned by WestNC, though I got it for surplus in Los Angeles. Just gotta scrounge... WestNC, by the way, sells paper tape and teletype supplies, and is reasonably priced for expendables.

Also pop back up and check out the text-to-speech system that produces the program tapes; the software is available if you want it.