Making a Computer Sing


My friend Greg was the first person I knew who owned a computer.  We spent many hours after school working on his TRS-80 Model I from Radio Shack.  We played games, we connected to Bulletin Board Systems via his modem, we wrote programs in BASIC.  In the spring of 1981, he got a music synthesis package called Orchestra-80.  It consisted of a little hardware device that attached to the back of the CPU and a cassette tape of software that allowed us to enter musical notes.

We had used a simpler program called Micro Music.  It allowed you to enter musical notes by name (A, B, C) and note length (quarter notes were 4’s, half notes were 2’s).  So, Mary Had a Little Lamb looked something like this in Micro Music:

E4 D4 C4 D4 E4 E4 E2
Ma- ry had a lit- tle lamb

That had been pretty cool… in 1978.  It sounded like someone plunking out the melody on a piano with a single finger.  Orchestra-80 had four “voices” that could play notes simultaneously.  This allowed us to not only play the tune, but the chords as well.  However, more abilities meant more work for us.  Notes were converted to numbers based on how close they were to Middle C (which was zero), whether they were sharp (+) or flat (-), and how long the note should be played (like Micro Music, quarter notes were 4’s).

It wasn’t enough to just type in long strings of note information.  With four voices going simultaneously, it was easy to get out of sync with a single mistake.  Like real music, Orchestra-80 split a song into discrete “measures” that only contained a small number of notes, rests and voice information.

M01

M02

V1 2n4 1n4 0n4 1n4 V1 2n4 2n4 2n2
V2 R4 0n4 R4 0n4 V2 R4 0n4 R4 0n4
V3 R4 2n4 R4 2n4 V3 R4 2n4 R4 2n4
V4 0n4 4n4 4n4 4m4 V4 0n4 4n4 4n4 4m4
Ma- ry had a lit- tle lamb

The beginning of the song contained information relevant to all the measures: clef, key signature, tempo, what instrument each voice was playing the notes on.  Greg and I spent a lot of time entering a single song – Maxwell’s Silver Hammer by the Beatles – into Orchestra-80.  We had to translate the musical notes on the page to the numbers the application would understand.  We had to come up with a way to write out the chords so they would simulate a beat.  Finally, as we started playing the song back, we had to make corrections to the music from typos and actual goofs in the music book where they had one note, but we heard a different one played on Abbey Road.  We debuted it in our music class at school that fall.

trs80picThe syntax of the Orchestra-80 software was based on the MUSIC programming languages developed in the fifties and sixties.  When we were typing in songs, we were actually writing a program that would be compiled into music.  I haven’t typed a song into Orchestra-80 in twenty years, but the idea of breaking up a large “song” into smaller pieces – measure, voice, note – is something that resonates with me when I write programs today.  Almost all programming languages are “object oriented”; they split a complex program into smaller, manageable chunks.  When any programmer finishes their latest “killer application” and they run through it successfully for the first time… no matter how dominant their logical right brain might be, it’s literally music to their ears.