Recollection 02 ch12 Music Recollection
by Thomas Egeskov Petersen
(Laxity/Maniacs of Noise)
WHEN I WAS KIND OF YOUNG
I have a rather vivid recollection of how it was to be one of those teens hooked on computers back in the mid 80'ies. It wasn't the least bit cool to be a "computer geek". Having computer skills or even a limited understanding of those machines was quite uncommon, and I remember that my school mates though it odd that I spend any time at all on it. I'm not really sure when I got hooked on computers, but I guess it was rather early in my life. I know for certain that I've been interested in electronic gizmos since I was very young. I got a Commodore VIC-20 in 1983 or 84 which was rather soon replaced by the bigger and better Commodore 64. Like most people, I started out by creating small basic programs, but soon realized that the limitations of basic programming were quite evident. Smooth scroll texts and small programs running in an IRQ interrupt were too cool to be ignored. I simply had to learn how to do that.
My interest in music was always there, but we never had a piano at home (and my parents thought it was a bad idea to get one... they are noisy, you see!). Anyway, I tried to do stuff in a few music programs, but it wasn't really much fun as the music drivers were crap. I remember at some point meeting a guy name Bjoern Moos at the local computer store who had made a simple music driver in assembler. This impressed me a lot.
I wasn't convinced that music on the 64 was "way cool" until I heard the adaptation of the Commando music done for the Commodore 64 by Rob Hubbard. Now, that stuff sounded almost real to me, and I just had to do music like that. That's where it all started for me.
HOW IT WAS DONE
Since there we're no tools for making music like we have today, I started out by hacking the Rob Hubbard sound driver because I didn't have the coding skills or sufficient knowledge of how the SID worked to build my own driver. It was a process of deduction really, and before I knew it, I was doing some simple music in Rob's driver, which felt very cool (but sounded horrible though ;)). At the time I wasn't aware of the existence of the scene on the 64, and my reasons for doing music in the first place was merely to amuse myself. It wasn't until I talked to some guys that I contacted to buy some games from, that I became aware that there was more to this underground 64 thing than just cracking. These guys were very interested when I told them that I had done some music on the machine, and before I knew it I was in a group on the 64... That was Wizax, if you ever heard of them. I think it was back in end 86 or very early 87.
Technically composing using a machine code monitor wasn't all the difficult, but took at lot longer than it takes with the editors and trackers that are available today. Since there were no tools for composing music in the Rob Hubbard driver, there was a bit of work to be done with memory pointers, table relocations etc. which all had to be done by hand. Obviously all sequence events we represented by a string of bytes and wasn't as intuitive as we're used to with today's music tools for the 64. A short sequence of notes could look like this:
87 01 0C 83 02 30 81 01 16 01 18 21 0F 01 10 03 0A 81 02 30 81 01 16 03 0A FF
Actually I got so used to this way of composing that I just stuck with it, even though others started using regular trackers or editors later on. I did make my own editor at some point, but it was still 100% hex number based.
I don't remember exactly when Sound Monitor came along, but it was never really an alternative to the Hubbard driver for me, since the memory usage of the sound monitor music driver was huge, and the CPU spikes of the driver larger than life. Besides that the driver sounded like crap more or less.
All this was before everybody was talking about hard restart, multi speed, pulse and filter programs and what not. Sound drivers were rather simple, and often quite rigid. Mostly the sounds were sort of hard coded, to the extent of for instance the Rob Hubbard driver having the arpeggio routine limited to use only two notes or the capability of playing a short noise in the beginning of a sound without having a regular "wave table" as we call it today, making the features rather limited.
At some point people started to implement wave tables. My first driver didn't have wave tables at all, but relied on a system that could switch between two waveforms in a per instrument selected pattern. I did however implement a more generic routine for arpeggios, which was then used in some obscure manner, making it less useful :). Step programmable pulse wasn't common either. Most people had a simple "one shot bump" implementation of the pulse which didn't give room for much creativity on that account. Mine just looped around so legato notes would pop when the pulse width looped. Martin Galway's driver was an exception though, although I've never dug into his driver to see how he implemented his pulse programs, but he really did some cool pulse sweeps - that's for sure.
These things changed during the late 80'ies. Drivers got more advanced, and there was a lot of "looking over shoulders" going on. Obviously this led to a more or less standerized approach in implementing sound drivers, and today there are a lot of drivers available capable of more a less the same thing.
Somewhere in 1988-89 I heard a piece of SID music that had a particular hard attack and started investigating into how this was done. I had some discussions with JCH about this thing, which we called "hard restart" for the lack of a better word. I think this was one of the coolest things ever, as it gave a lot more consistency to the sound, and made the whole instrument design (?) process of composing much more convenient. At least setting up ADSR values that didn't clutter was not a problem anymore.
THE CHALLENGE (a little back in time again)
I think I used Rob's driver for a period of around 10 months in 1987, before I "dared" to write my own. It was a great challenge for me to write my own driver and at the age of 14, it made me proud that I actually got something useable out of it. You need to see this in the right context to understand it, I think. Before I wrote my first driver, all I had ever coded was scrollers and rasterbars and such, never anything re-usable and generic like the music driver was. Before I left the scene (in 92-93) I had coded some 4 different drivers, where only 3 of them were ever used. The first driver had quite annoying raster spikes and crap gate handling and was written in 87. In the second driver I remedied the rasterspikes, but the driver still has bad gate handling but a little better pulse sweep implementation. That driver was written sometime very late 87, early 88. Driver 3 was written around the concept of hard restart, and had regular pulse and filter programs implemented and was decent in raster time usage. It was written in 89 and obviously elaborated on over the period following. Driver 4 never got to see the light of day, and is essentially Driver 3 re-written, but it didn't turn out to be as fast as I liked. Therefore I abandoned the project.
SOME COMPOSERS THAT DID IT
Besides myself I knew a handful of composers at the time, which did their music the way I did - punching in a bunch of hex values. These are the composers I met myself; obviously there are more of them.
Future Freak - Who I at some point teamed up with. He had made a hex based editor for Rob Hubbard's driver, which we implemented around my driver at some point. We did music for a game together, which I think ended up being quite ok. He was really good. He never wrote his own driver though, but was actually a quite accomplished coder too.
Johannes Bjerregaard - One of the most brilliant composers I've ever met. He was and is and extremely good composer and a very capable musician these days, to my knowledge. Johannes coded his own drivers too, and was really good at it.
JCH - When I first heard of JCH and his music he was already working on his own sound driver, but did still make music the "old skool" way. Later, as we all know, he put together his brilliant editor - the "JCH Editor", and made a handful of music drivers too.
Jeroen Tel - I didn't meet Jeroen until somewhere around 93 I think, when we both worked at Funcom in Oslo, but I know he did all his music in assembler back then.
This was all a long time ago and today composing music on the Commodore 64 is easy for everybody. We have nice tools, cross platform compilers, emulators and what not at our convenience. I'm impressed that stuff is still produced for the old machine, and I must say, had I not gone the X'2004 I'd probably never spend any time on the 64 ever again. Since then, however, I find myself looking at the CSDb quite often and I've spend quite some time programming and making a bit of music on the old breadbin again. In fact, I've spend the last 10 months programming my first real editor for the 64, which has been a lot fun and a good recollection of my fondest geek memories.