PDP-1 Music

The PDP-1 on the second floor of M. I. T. building 26 was available for general use by undergraduates. William B. Ackerman, I, and others eagerly adopted some hardware and software designed by Pete Samson for playing music on this machine. The total quantity of music encoded for it must have ultimately reached several hours. Bill Ackerman encoded a version of all four movements of Mozart's Eine Kleine Nachtmusik; this may have been the longest single musical work ever played on a PDP-1.

The hardware allowed four-part harmony, but no dynamics or instrumental synthesis. At the time, circa 1964, the Moog synthesizer was about ten years in the future. To be sure, the room-filling RCA music synthesizer was a decade in the past, and elaborate D-to-A wave-synthesis music was being generated on 7090-class machines at Bell Labs (by John Pierce, M. V. Mathews, and others) and at MIT (by Ercolino Ferretti and others). Still, compared to playing tunes on IBM chain printers, this was pretty sophisticated stuff.

The selections below are, alas, in mono (the "live" music was stereo). The music was originally recorded on a consumer-grade tape Lafayette tape recorder at 7-1/2 ips, and playing it back thirty-some years later on an audiophile reel-to-reel tape recorder borrowed from a friend.

Links labelled .mp3 are in .mp3 format, using the iTunes "good quality" setting (128 Kb/sec). These selections sound essentially identical to what is on the tape.

Links labelled .ra are in RealAudio 3.0 format, 28.8 kbps codec. These have significant compression artifacts.

The irregular "buzzy" sound quality is not a result of poor recording or of compression artifacts; it is, in fact, faithful to the original sound of the music, and the reasons for that quality are explained below.

The best selections, in my opinion, are the Bach pieces, “Sheila,” and “Downtown.”

The PDP-1 music hardware consisted of a single register with four flip-flops, each individually connected through simple RC filters to either of two amplifiers and speakers. I believe there were four instruction codes, each of which strobed the high accumulator bit into one of the four flip-flops. The switchbox allowed some adjustment of the output. Because there were four channels rather than one, the output was more sophisticated than the audio output of the Apple ][ or the IBM PC. But since they were treated as individual one-bit channels (not a four-bit D/A) there was no way to synthesize instrumental timbres or control volume.

There were no built-in timer circuits or any other hardware assistance. All sounds were directly produced by turning individual bits on and off. Note that the PDP-1 machine was an 18-bit machine with 5 microsecond core cycle time (very roughly equivalent to a modern microprocessor with a 1.0 MHz clock). It was soon discovered that the best way to generate tones was to perform repeated additions (letting the total repeatedly overflow) and copy the accumulator's high bit to the output bit. Or something like that. The result of all this was that the average frequency of the tone could be adjusted in very small steps; there was very little quantitizing error in the pitch of the notes produced. On the other hand, if the pitch required, say, a pulse width of 20.25 units, the actual pulses might consist of a regular succession of 20, 20, 20, 21, 20, 20, 20, 21 units. Or something like that. Pete Samson once explained to me that because of some mumble involving arithmetic and harmonic means, if the average frequency was precise than the average period couldn't be. (If you really want to understand it all, work it out for yourself or dig out Hakmem or talk to Bill Gosper or something...)

The result of all this is that the basic "notes" produced by the PDP-1 were precisely on pitch, but had a rough, ugly, buzzy background noise, lower in pitch than the note, and more obvious on the higher notes.

I've said the the notes were "precisely on pitch," but another surprising characteristic was that the music playing software actually had a deliberate detuning built in, a couple of cents for each of the four parts, because otherwise the notes tended to merge and sound like a single note with a funny timbre instead of a chord.

The software used to produce this music was called the "Harmony Compiler." Data entry was in pure ASCII--excuse me, not ASCII, MACRO FIO-DEC--but anyway, it was text-based, like a programming language. (Samson had also produced what would now be called point-and-click WYSIWYG light-pen based music software for the TX-0; it displayed staves and you could drag notes around; but it could only play a solo, single musical melody line). The basic data entry format for the harmony compiler was something like (this is two-decade-old memory, folks, don't trust it too much)

7t4 7t4 8t4 9t4 7t4 9t4 8t2

The first number corresponded to a numbering of the staff, with 1 representing the bottom line, 2 the bottom space, 3 the second line, 4 the second space, and so on up to 9 for the top line. The second number represented duration. Thus, the line above would be the opening of "Yankee Doodle."

There were "pseudoinstructions" for declaring the staff (bass, treble, alto or tenor), tempo, and key signature. The "t" could be replaced with other letter to express different articulations. There was quite a bit of apparatus for dealing with note durations and triplets, trills, turns, mordants etc. were easily produced. The language was somewhat optimized for baroque music.

Whenever an error was detected, the electric typewriter would print the message "To err is human--to forgive, divine," followed by the line with the error printed in black with the offending syntax highlighted in red, and continue.

Dan Smith's Home Page

Comments to: dpbsmith_website_2006@dpbsmith.com