A Short Story about CD-ROMs

Back in 1989 we (The Voyager Company) released Beethoven’s Ninth Symphony on floppy disk with an audio CD. The software played sections of the symphony on the CD as the user clicked buttons or navigated the stack. It was awesome!

Later, we were working on version 2 which was super fancy in that we were building a hybrid CD-ROM, with the software on the data partition, and the red book audio on a normal audio CD partition. The software functioned the same as the floppy version.

Back in those days, we had to send a Digital Audio Tape to Sony, who sent us back a glass master for us to develop with.

The XCMDs I wrote were used to highlight rectangles on screen, and also to map red book times in the stack to actual times on the disc. With the glass master, Robert Winter went through the stack and tweaked all times to their maximum accuracy, 1/74th of a second.

With the software good and the audio good, we gave the go-ahead to press. Sony sent us a sample plastic disc to validate with before we pressed (we were close to MacWorld expo). We put the disc in the Apple CD-ROM player and… every timing was off!

That was a night spent sleeping under the desk. We calculated that all times were not off by a linear amount, but that the times were further off the closer to the center of the disc the audio was. This was a huge problem.

To get centered we took the software off the plastic disc and used it with our glass master and everything was perfect! I started adding in code to the XCMDs to report live time codes from the disc and suddenly it occurred to me what was going on.

The glass master had more mass than a plastic disc and the Apple CD-ROM was overshooting the times we asked it to play. The amount that the drive overshot was greater as the circumference of the disc became shorter.

We spent a bunch of time picking out offsets that could get us closer to being accurate. I modified our audio XCMDS to take a mapping table from HyperTalk and convert it to binary coded decimal for performance.

The XCMD would then do the math to adjust the time we start playing at and also offset the time we read so the times we displayed in the stack were accurate.

I can’t remember how many entries into the table we made, but Robert worked tirelessly testing thousands of timestamps and entering offset ranges in the map until it was back to our standards.

We sent a new DAT off to Sony overnight, got a new plastic tester, made sure it was all good, ordered the discs and had them shipped just in time for MacWorld Expo.