I recently read the “Cubase64 White Paper” by Pex Tufvesson. It is a fantastic piece of retro computing, where he makes a Commodore 64 do real-time audio effects on a sampled piece of music. There is a Youtube movie showing the demo in action. Considering how hard we worked in the early 1980s to make a computer make any kind of useful noise at all, this is an amazing feat. It is also a feat that I think would have been impossible at the time.
Why do I think it would have been impossible?
In the white paper, some techniques are cited which were published in the late 1990s. Thus, they weren’t even around when the Commodore 64 was new. We have come a long way in our understanding of digital signal and sound processing since 1982. Thanks to the incredible increase in available computing power, many techniques have been invented over the past few decades that were not available to the first generation of home computer hackers.
A more interesting reason is the amount of compute power needed to prepare the samples. Due to the tiny memory of the Commodore 64 (in 32kB you cannot store more than a few seconds of audio samples at any kind of reasonable resolution and sampling frequency), as well as the way the samples are played, the audio is heavily compressed and preprocessed before being loaded into the Commodore 64.
This process is reported as having taken 25 minutes on a modern 2 GHz PC. How long would that have taken on a Commodore 64 in 1982? The clock frequency is 2000 x higher. If we assume this is plain floating point math, the PC can get about 1 operation through each cycle on average. The C64 would probably require at least 1000 cycles per floating point operation, emulating it using 8-bit integer math. That gives us a factor of 2,000,000 (give or take an order of magnitude). Thus, the computation would have taken about 95 years (or as little as 10 years, or as much as 1000 years) back in 1982 (I don’t think this kind of operation is easily parallelized). It would also have required an unheard-of incredibly large memory of several megabytes.
OK, so maybe if you were a billionaire and could have rented a few IBM mainframes you could have done it. Just to stand before a bemused crowd showing the little box making music. Would have been much easier to just buy an early CD player which played music at much higher quality.
But don’t get me wrong – I really like this work. It is impressive to see what you can do in terms of media replay on a small and slow device if you are willing to put incredible effort into the compression of the media. The way that the author finds ways to achieve various effects within the confines of the Commodore 64.
When retro computing is at its best, it shows how human ingenuity can overcome limitations and get things done even when it should not be possible. This kind of engineering spirit has been crucial many times in the past, in particular when saving space missions from seemingly impossible odds. If you only work with systems with power in abundance and few hard limits, you just don’t develop that kind of creativity.
Demo or die!