Lexikon-Sonate 3.0 is a program that generates music algorithmically. Karlheinz Essl, the Austrian composer and performer, began developing this software in 1992 and released it as Shareware. Essl continued developing the software until 2020 and released the latest versions for Windows and MacOS as freeware with a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License.
In the included Word doc named “About Lexikon-Sonate,” Essel writes that the software is “An Interactive Realtime Composition for Computer-Controlled Piano.” He expands on this in the abstract for the software, “Lexikon-Sonate is a work in progress which was started in 1992. Instead of being a composition in which the structure is fixed by notation, it manifests itself as a computer program that composes the piece – or, more precisely: an excerpt of a virtually endless piano piece – in real time. Lexikon-Sonate lacks two characteristics of a traditional piano piece: 1) there is no pre-composed text to be interpreted, and 2) there is no need for an interpreter. Instead, the instructions for playing the piano – the indication “which key should be pressed how quickly and held down for how long” – are directly generated by a computer program and transmitted immediately to a player piano which executes them. In this paper I will describe from where I started and how I arrived at the concept of an infinite interactive realtime composition.” The rest of the Word doc file is a detailed guide that explains its origins, how it works, and how to use it.
For this post, I tried out Lexikon-Sonate 3.0 on Macintosh System 7.5.5 with Quicktime 4.1.2 installed so that it had access to Quicktime Instruments instead of MIDI output playback.
The Lexikon-Sonate_3.0 application Get Info window reports that it is version 3.0 dated 4 April 2002. It is 2.4MB in size, and its minimum memory requirement is 8,932K and its preferred size is 16,932K. The Comments box includes a brief description of “algorithmic music generator” and a link to Essl’s website for Lexikon-Sonate.
When you first open Lexikon-Sonate, the Status window on the right serves as a console reporting information like settings, loading modules, and the amount of free memory. It falls into the background when the primary interactive windows load below.
The main Lexikon-Sonate_3.0 window is on the left and the Control window is on the right. The main window shows the available algorithm music generating modules at the top, which can be selected in a sequence of up to 3 by clicking the grey circle to the left of each module. The selected modules will appear in the “Combination of Structure Generator” box at the bottom of the Control window on the right.
As the program begins to play music created by these algorithms, the keys illuminate to show what keys and chords are being played along with the dynamic slider. The sustain and soft pedals can be activated by the user by pressing the Space Bar or # respectively. Pressing the Escape key halts the current music generation.
If the user clicks on “auto” in the Control window or presses the Return key, the software will cycle through modules on its own giving the software total control of the music generation process.
If this version of the software were registered, you have access to the Record > Start or Stop feature.
The Apple menu > About Lexikon-Sonate has a detailed window summarizing how the software works.
The descriptive About window in Lexikon-Sonate 3.0.
The Edit menu with an option for “Overdrive” pre-selected.
The Windows menu listing its three windows: Status (the console in the background), Lexikon-Sonate_3.0 (main window on the left), and Control (the main control window for starting and stopping play on the right).
From the Settings menu, Setup opens a new window with settings for playback and MIDI (see below). The Control option opens the Control window. Hotkeys does not seem to do anything on my installation.
Since I don’t have a MIDI device (and they can be difficult to configure with Sheepshaver anyways), I opted to play through Quicktime (automatically selected by default). There are other settings for MIDI and logging on this window, too.
Lexikon-Sonate seems like a remarkable piece of software that I wish that I had known about many years ago. It would have been something I would have enjoyed experimenting with.
Also, Essl has created remarkable recordings and made interesting performances using his software, some of which are shared in videos on his website here.
Continuing my work exploring pre-AI generative technologies, I found a copy of Andrew Stone’s Haiku Master, a HyperCard stack for Macintosh that generates haikus, on the archived version of TextWorx Toolshed page, which links to other text generating and manipulating programs for Macintosh and MS-DOS. Haiku Master requires the user to have a copy of Apple’s HyperCard Player installed on the system. I have HyperCard Player 2.4.1 installed on the emulated System 7.5.5 installation on SheepShaver used for these screenshots.
Haiku Master is a lean HyperCard stack at only 32K on disk and 16,704 bytes actually used. It was created on 16 July 1998.
After double clicking on Haiku Master, the stack automatically launches HyperCard Player and the user is presented with this main window. In the center, a haiku is already generated.
vibrant dream cell breathes quantum fire hungry sensuous syllables.
Instead of a 5-7-5 syllable line arrangement, it seems to generate haiku that are a total of 17 syllables.
Unlike some of the other text generators that I’ve looked at here, Haiku Master has a singular focus to just create haikus of a certain variety. Other text generators from this era seem to do several different types of text generation, perhaps because once one kind of assembly algorithm is made, it might not be too challenging to alter it for a different kind of text generation, or it might be over time those other programs acquired new features with subsequent new versions.
By clicking on the Haiku button in the bottom center, another haiku is generated.
Clicking on Library prompts the user to open a file, perhaps a corpus of words? The documentation built into the stack doesn’t explain what a library is or how it is used, and there is no additional documentation or files included in the downloaded archive.
Clicking on Edit Words opens this screen titled Haiku Master Vocabulary with lists of word lists broken down into 10 sections: 1) intro. words, 2) adjectives, 3) nouns, 4) verbs, 5) adjectives, 6) nouns, 7) 1 syllable end, 8) 2 syllables end, 9) 3 syllables end, and 10) 4 syllables end.
Clicking on the Help/? question mark icon in the lower left opens this screen of text titled “How the HAIKU MASTER Works.” It explains how it pieces together a haiku of 17 syllables using the words from the 10 categories of word lists as needed. The following two images continue the explanation.
Clicking on “See Saved” on the screen above or from the main haiku composition window leads you to a running list of previously generated and saved haikus shown below.
From this screen, you can click on “Save to Text File” to save the haikus in an editable text file, or you can click on “Haiku” on the bottom of this screen to take you back to the main composition window shown below.
Clicking on “Haiku Master” above the haiku composition area leads you to the about screen shown below.
The about screen provides Andrew Stone’s contact information, including his GEnie username. It noes that this copy was “modified & distributed with ‘If Monks had Macs…’ with Andrew’s permission.” The modifications were made by Brian Thomas in 1989. It notes this is Haiku Master version 2.2.
Brian Thomas is the developer who put together If Monks Had Macs . . .. It was distributed by The Voyager Company, a company that innovated early ebooks for Macintosh called Expanded Books and multimedia CD-ROM titles, which I’ve written about previously here, here, here, here, and here.
This reminds me that during my first year in Brooklyn, Bob Stein, co-founder of Voyager Company, co-founder of The Criterion Collection, and co-director of The Institute for the Future of the Book, reached out to me (I think on Twitter–I hadn’t left the platform yet at that time–as I had shared some things about William Gibson’s Sprawl Trilogy Expanded Book published by Voyager) and graciously spoke with me at his home in Williamsburg one snowy afternoon about Voyager Company, Expanded Books, and personal computer pioneers he was friends with.
Continuing my exploration of pre-AI text and image generating software, I would like to share some screenshots and information about Robo Riter 3.1, a text-generating program for Macintosh that specializes in haiku, French lai, ballade, and limericks, created by Douglas L. Lieberman, a writer and producer in television, film, and computer multimedia projects.
Robo Riter has the tag line, “Composes poetry at the click of a button!” And, on his archived website’s contact page, he offers it for download if “you can’t afford to hire a writer.”
Lieberman wrote the follow abstract when he submitted his program to the pre-1999 info-mac archive (there was a massive purge of software on info-mac that removed Robo Riter and other software from later versions of the info-mac archive after 1999):
From: (Douglas L. Lieberman) rocketriter@earthlink.net Subject: Robo Riter
Robo Riter -- the automatic poetry machine! Composes poems at the click of a button, no two ever alike. Robo Riter can create profound and deeply moving Haiku, French Lai, Ballades and even Limericks. Amaze your friends! Mystify your neighbors! Be the first on your block to own Robo Riter, for Poetry On Demand!
Created with SuperCard 3.0
System requirements: * System 7.6 and above * Power Macintosh or 680X0 with at least 16 MB of RAM * 2 MB of hard drive space
-- Douglas L. Lieberman Rocket Riter, Inc. Screenwriting for Interactive Media, Stage & Screen Visit my website at: http://home.earthlink.net/~rocketriter/
I am indebted to adespoton on MacintoshGarden.org for finding a copy of Robo Riter stored in a 1998 archive of info-mac that was once hosted by Apple Computer. You can browse the directory of programs that includes Robo Riter here.
Before launching Robo Riter, the Get Info window shows that it was created on 3 Mar. 1997. It is a “fat” application, meaning that it can be run on 68k and PPC Macs. It’s suggested memory size is 5,107 K, and its minimum and preferred memory sizes are populated with that value. As I’m running this in SheepShaver, I can’t turn on virtual memory to realize that 1,011 K memory savings mentioned in the Note at the bottom of the window.
When Robo Riter is first launched, the window above serves as the main interface for the program. It has tabs across the top of the window for Haiku, French Lai, Ballade, Limerick, and HELP. Below the tabs is the monogram, “From the Desk of Robo Riter” followed by a blank space. At the bottom of the window are two buttons: Compose Poem and Save Poem as Text File. Unlike some of the other text generating programs, there are no options and there are no editable corpus or word lists external to the program itself.
Before looking at Robo Riter’s compositions, let’s check out the two menus. The Apple menu yields “About Robo Riter.”
The About Robo Riter window indicates that it was built using SuperCard, an application development environment that is like HyperCard on steroids. At the time, Allegiant Technologies had acquired SuperCard.
Robo Riter’s File menu only has the option to Quit the program.
Returning to the main window and the Haiku tab, clicking on the Compose Poem button results in a haiku written by the program after the program shows a series of three messages or thoughts with corresponding musical notes. For example, it displayed “Letting my mind go whoosh!,” “Counting syllables on my chins,” and “Meditating with profound fervor” before showing the resulting “ONE LONELY HERO” haiku, which appears a word-at-a-time like watching an LLM reply in a chat.
After clicking on the French Lai tab, I clicked on Compose Poem. It’s pre-generation text was: “Researching a rather violent subject,” “Illuminating its dynamic aspects,” and “Developing theosophical influences.” Then, the “SHINING SUN” French Lai played across the screen.
Next, I clicked on the Ballade tab and selected Compose Poem. It’s pre-generation text was: “Developing a down to earth topic,” “Overlaying sea-faring themes,” and “Selecting perfectly matched rhymes, and rhythms.” Then, “THIS SWIFT FRAIL NUN” appeared in the composition area in the window.
The Limerick tab proved a little irreverent compared to the other composition tabs, which is fitting, I suppose, given the genre. After pressing Compose Poem,” “Selecting a theme and a punch line” appeared with a corresponding musical tone. Then, “Assembling ill-considered rhymes” appeared with a fart sound, and finally, “Convulsing at my own jokes” with a recorded “whoops” sound before showing “THE MODEL FROM PLINKETT” limerick.
The HELP tab has sub sections accessible via selecting the radio button next to Haiku, French Lai, Ballade, or Limerick.
Each of these help sections provide an explanation of that genre of poem’s construction, context, and purpose.
Robo Riter is more a black box than some of the other text generating applications that I’ve written about before. But, it’s compositions through several iterations seem quite good and interesting. Lieberman seems to have done good work behind the scenes to make his program produce what I read on the few trials that I did.
Since I’ve been writing about different kinds of software that generate text and images without using modern artificial intelligence (AI), I wanted to thread them together on their own page under the Research heading in the site menu above and available here.
Currently, the page collects together my posts about image generating software KPT Bryce and Evolvotron, and text-generating software Electric Poet, Kant Generator Pro, Mac Prose, and McPoet 5.1. I will update that page with additional links as I publish posts about other pre-AI generative software.
For such a compact application, MacProse does some interesting things with creating sentences–one at a time or as many as it can until the user presses the mouse button. Then, the user can save all of the output or copy individual sentences. When clicking a sentence, a diagram of how the sentence is put together is shown in the separate Sentence Tree window. Also, the user can design sentences using a built-in workflow.
In the accompanying “MacProse Doc,” Hartman writes, “MacProse is a Macintosh version of the old Prose program for DOS computers, described in The Virtual Muse. It generates syntactically correct English sentences, whose structure and vocabulary are both randomized” (par. 1).
He notes that “MacProse should run on any Macintosh with system software version 7.1 or later. It requires very little RAM and doesn’t much care about CPU speed.”
Considering some of the other text generating programs for Macintosh that I’ve written about before, MacProse is lightweight like Electric Poet 1.6, has an extensible architecture like Kant Generator Pro 1.3.1 and McPoet 5.1 (which is where I learned about MacProse!).
While the program certainly has a lot of potential as a generative text tool, Hartman writes in Virtual Muse, “I hope the book makes it clear that–for me and I hope for interested readers–the point isn’t the programs themselves (which are fairly simple and not particularly original) but the uses that can made of them” (ix).
Below, I’ll annotate screenshots of the application running on an installation of Macintosh System Software 7.5.5 on the PPC emulator SheepShaver hosted by Debian 12 Bookworm with the Xfce Haiku Alpha window theme active.
The MacProse Folder contains the MacProse application, MacProse Doc (i.e., Read Me with info and help), PROSE.DIC (the word dictionary file used by the application), PROSE.GRA (the grammar file used by the application), and the Source folder (this source code has to be used with the EasyApp framework included with Jim Trudeau’s Programming Starter Kit for Macintosh, Hayden Books, 1995, which is copyrighted and not included).
Like Electric Poet, MacProse is a very lean program. It is only 60,634 bytes and it uses very little RAM: 384 K. The MacProse folder, including the source code, is only 314,098 bytes.
When MacProse is first launched, the user is presented with these two windows: MacProse Output (where generated text appears–each sentence being selectable and having its own structure) and Sentence Tree (where each sentence’s structure is diagrammed).
It is certainly has a spartan appearance, especially compared to McPoet 5.1. Hartman explains: “As Macintosh programs go, MacProse is brain-damaged and downright user-unfriendly. Since it has no input, and since its output is pretty rigidly organized as sentences, all kinds of interaction a Mac user expects are simply missing. The File menu contains only Save and Print and Quit (there’s nothing to Open). The Edit menu has the usual Cut, Copy, Clear, and Paste, but they work peculiarly–only on a whole sentence at a time. Selecting text in the output window is strange for the same reasons, as described below. And though the Output window looks like a text-editing window, you can’t type in it. All of these oddities follow from the basic peculiarity of MacProse’s function in life, which is that of Virtual Muse” (“MacProse Doc,” par. 4).
The Apple menu has an option for “About MacProse.”
The About MacProse window gives copyright information for 1996 Charles O. Hartman, and explanation about its purpose: “MacProse, a random sentence generator, is described in detail in Virtual Muse: Experiments in Computer Poetry (Wesleyan University Press, 1996). Visit the Web site at:” Perhaps because of the version of Mac OS that I’m running (System 7.5.5), the about window text and font aren’t what were expected and cut off the URL for the book’s website.
MacProse’s File menu has basic options for closing windows, saving the generated text, printing, and quitting the application.
The Edit menu has basic functions available, but as Hartman notes in the “MacProse Doc,” cut and copy work on a sentence basis–not on selectable words or phrases.
The Generate menu is what makes the magic happen with options to generate one sentence or to generate sentences until the mouse is clicked. Hartman explains:
“Generate has two commands: One Sentence (keyboard equivalent command-G) generates a single sentence, which is displayed in the Output window. The generation “tree” that produced the sentence is displayed in the Tree window. The other command, Until mouse-click (keyboard equivalent command-U) keeps generating sentences until you click the mouse button–or until the output buffer’s 32k limit is reached (about 600 sentences).
“When you have generated more than one sentence, a click with the mouse in any of them places that sentence’s tree in the Tree window. If you double-click a word (or mark of punctuation) in the output, the tree “leaf” that generated the word is highlighted in the Tree window. If you drag to select more than a word, one whole sentence is selected. You can then use Cut and Paste to move the sentence to a new place in the output; its tree information will follow it. If you click an item in the tree window, the corresponding word, or the entire rule’s clause or phrase if you click a predicate, is highlighted in the output window.
“MacProse never places a newly generated sentence, or a Pasted one, in the middle of an existing one; it moves the insertion point to the next sentence-start point” (“MacProse Doc,” par. 6-8).
The way that MacProse keeps each sentence as a unit with its own explainable design that remains linked to it within the application makes it unique among text generating applications of this era and its explainability reveals how it does what it does while also providing a pedagogical tool when using this program in the classroom as I intend to do.
After generating a bunch of sentences using the generate until a mouse click option, I clicked on the first sentence, “The television of temperature: so specific a point,” which shows its diagram in the Sentence Tree window to the right.
Then, I clicked on the second sentence, “A war–the period–appears to rush,” and its diagram, which is different than the first sentence’s, appears in the Sentence Tree window to the right.
I clicked on File > Save to save the MacProse Output window’s sentences as a text file. I couldn’t click the mouse quickly enough to stop it generating all of the following output:
“The television of temperature: so specific a point. A war — the period — appears to rush. When have we hoped? The lieutenant is address. Whom cannot the breakfast with so right an Africa record? He who entirely recalled them supplied the slope of illusion. Effort might argue, but they curled. What had you valued? The comment of vigor (my star) once wanted us. Whom may the wave’s core report to? These tension vocabularies have suffered. Your arm may accompany someone. You will sound. While the performance is a structure’s thought, each of them is the sheriff, and you away occur. Vibraphones tested the beat of June. Didn’t that spot continue? Had so dim an architect happened? When I shortly whispered, chapels continued, and the muffin (the uncle) had hoodwinked him. The heritage of Bebop was no darkness, and you stumbled. To exercise is shouting. Where are they ruling? The contrast was your detective. When we are twisting, the epic has read, and he is the partner of dance. When she stops, whom have those horses between a motel and the packrat included? We were charging the streams. When had the officers grinned? Had they stripped certain seats? So sufficient a man checkmates alternatives. He who is my child is town. You had obtained some sound tire; he who stumbled will demonstrate camera. The pincushion except the choice of guilt between a jungle and certain piles: cloth. He who wouldn’t talk promised her. They are palms. The column — shall the throat of error find the democracy between those apartments and these companions? The session of sin between the shirt and the shape wishes to achieve so guilty a charge. To escape might fit. Sky can interrupt them. When are these sisters staring? He who exchanged you thoroughly hung it. How have so higher a vibraphone worried? The frame of money has attacked a hall spirit. You have searched. We had visualized her; and so average a film was hastening, and the maple of death resumed it. To vanish was the heritage of ease. Had the conspiracy of dirt stopped? Communities open a Babbage. A parade motive (an illustration) didn’t extend; if night is offering, the weather is a wonderful pocket. The citizen of respect (my gentleman) waited, and to whisper was court. The version is their door between the head and these victories. Couldn’t that bedroom between the police and the horizon between those characters and the county cry? If the path between certain vigilantes and the age was science, the suspicion of town wouldn’t approach someone, and the food between another Turing and the incident had slid. Language (promise) can’t speak. Had you repaired this lover’s belt? Had you foiled truths between the avenue and the Babbage? I may droop. My succession: the reporter of atmosphere. They are those civic kingdoms. To burst cooked so local a sleuth between the side and a sidewalk. He who was computation along a sea paid to scheme. These structure communities hold him; and your theory above song: so middle a sidewalk. You were these foots. Why has April landed? He who was supporting its year like its audience was the brush of mass between the willow and the secretary. Plaster — iodine — bets so vacant an index; dawn repeats you. Anodes: the margins of sea. Since to sink can’t vacillate, that fist is the center. Every question claims to connect, but the end (entrance) will unclasp her chain throughout the prospect. To read was darkness; and steel was this vote. School governs them. To emerge was stumbling. When to rush emerges, to drive costs this. How can’t sacrifice swell? He who was the stress’s doctrine was the dancer. You exchanged these crystal windows. Prices briefly did, and impulses were the valleys. Have moments dreamed sacrifices? Whom has museum about its sheriff fed? Had certain pennies replaced certain exceptional tubes? Whom will so oral an epic visualize?”
As a whole, it is nonsense, but there are some short sentences, phrases, and word combinations that are interesting, thought provoking, and poetic. As I’ve said about these types of text generating programs (and image generating ones like KPT Bryce and Evolvotron) before, there is a lot of utility in these applications for inspiring or giving some raw material that we humans can use or build upon. They aren’t necessarily the end point of creation. They become a tool in the toolbox, a component within a larger workflow.
The other significant menu item is Design. Clicking on it and choosing “Design a sentence” brings up a window that guides you through your own design using the options available. Hartman explains how it work:
“The Design menu has only one item, Design Sentence (keyboard equivalent command-D). Instead of building the sentence’s grammatical template at random, this option lets you choose which rules to employ. The rules are contained in the grammar. Each line of the grammar defines a “predicate” with a series of components, each of which may be a “leaf” (an item that goes directly into the template) or another predicate, which must have a rule. The grammar contains several rules for each predicate; all predicates must be defined by at least one rule.
“Building a sentence, whether you do it or the computer does it at random, is a recursive process: first you choose a rule for the Sentence you want; then you choose a rule for each of the predicates that rule contains, and each of the predicates each of those rules contains, and so on, until you have completely defined the sentence’s structure.
“To help you do this, MacProse puts up a dialog box showing the predicate you’re defining, and a popup menu of all the available rules that define that predicate. The result of what you’ve done so far is displayed in the Tree window. When you’ve defined all the predicates by choosing a rule for each one, MacProse generates a sentence (by randomly consulting the Dictionary) that follows the structure you’ve built” (“MacProse Doc,” par. 9-11).
After choosing “Design Sentence,” the user is presented with this window.
The Design Sentence window has these options. Selecting from this list leads to further options.
I think MacProse is a really fascinating application that drills down into doing one thing well–writing sentences–and providing users an explanation about how it strung words together for each sentence. Now, I plan to read Hartman’s book to learn more before I think about how to incorporate it and the other text generating programs that I’ve written about in my future writing classes. There’s a lot of value in these older programs not just in terms of digital history preservation, but also in terms of their continuing usefulness whether it be as a creative writing tool or as a pedagogical tool for exploring ideas about how language works, looking how these programs are the progenitors for today’s generative artificial intelligence technologies, or learning how to use this software on modern computing hardware. To paraphrase Hartman, it’s not about the software. Instead, it’s about what you can do with the software.