SID Music

Stacks Image 52
The SID sound chip was one of the things that made the Commodore 64 a "must have" computer. People used to buy games just to hear the soundtracks (as in some cases the music was far superior to the games!).

Check out the
HIGH VOLTAGE SID COLLECTION were the guys have collated pretty much every tune that was every cranked out on a Commodore 64 in a format that is playable by the superb SIDPLAYER.

Another one of my small claims to fame is music and sound fx drivers for Ocean. I can't take too much credit here as the real "magic" was performed by the musicians - Jonathan Dunn, Matthew Cannon and Peter Clarke. I merely wrote a bunch of code to essentially fiddle around with the SID registers whilst parsing the music data!

The Stars

There were many classic composers back in the eighties and early nineties, but none better in my humble opinion than Rob Hubbard, Martin Galway, Tim Follin, Jonathan Dunn, Jeroen Tel, Matt Cannon and Peter Clarke. Check out their work in the High Voltage Sid Collection - its pretty amazing what they could do in a few kilobytes of code and data!

player



Above is a screenshot of the front end that Jon et al would see as they were composing their music on the Commodore 64. It was basically used as a debugging tool for their music showing what was happening with the modulators, how much raster time the driver was taking and most importantly how much memory they had left!

If you hop on over to my
DOWNLOADS page you'll find a pre-assembled version of the music driver with front end and embedded music data (this particular one has the the soundtrack from "Daley Thompson's Olympic Challenge" circa 1988. I've tested it on most of the popular C64 emulators and it works like a charm. Mount the file with the emulator, type SYS 16384 on the C64 Basic prompt, and you should see something not too dissimilar to the above picture.

Pressing the keys A, B, C, D, E and F will fire up the various tunes. Pressing SPACE stops the current tune. F1 fast forwards through the music a pre-set amount of bars (you can set the "bars to skip" increment by pressing "+" or "-" on the keyboard)

*NEW* Just added the pre-assembled version on the music driver with the Ocean Loader v5 Music data embedded. Find it in the DOWNLOADS section of the site.

The Ocean Loading Music

My other mini claim to fame at Ocean was the now infamous Ocean Loader (see the FREELOAD page), and the much more famous Ocean Loading Music! There's all sorts of theories as to how many themes there were and who did them, so finally, I trawled through all my old source disks and I present the definitive, chronological list.

  1. The first few pre "Ocean Loader" games with (very simple) music were done with Novaload playing the default audio tracks that came with the Novaload software.
  2. The first "official" Ocean Loader was used on Daley Thompson's Decathlon with loading music by Martin Galway (a cover of Rydeen by YMO) using David Dunn's music driver.
  3. The first "famous" Ocean Loader was used on Hyper Sports composed by Martin Galway (known as Ocean Loader 1 in HVSC)
  4. Rambo First Blood Part 2 Loading Music (complete with Morse code parser, to "tap out" the development team's names) composed by Martin Galway (my personal favourite).
  5. Hyper Sports remix composed by Martin Galway (known as Ocean Loader 2 in HVSC)
  6. Mutants Loader played the Mutants main theme by Fred Grey (used when Martin had left Ocean)
  7. "Ocean Dries Up" was the remix of the Hyper Sports loader by Peter Clarke, originally composed on Electrosound, and then ported by Pete to Martin's driver (known as Ocean Loader 3 in HVSC)
  8. Ocean Loader 4 composed by Jonathan Dunn (using my new driver)
  9. Daley Thompson's Olympic Challenge Loader Music composed by Jonathan Dunn
  10. Ocean Loader 5, a remix of Jon's previous Ocean Loader 4 composed by Jonathan Dunn
  11. Ocean's Hit Squad Loader music composed by Matthew Cannon (known as "loader" in HVSC).

Tunes #10 AND #11 were used up until the end of the C64's life cycle at Ocean.

Creating the Music...

The audio guys back in those days had the patience of a saint, as putting together music that sounded funky AND took a miniscule amount of memory was no easy thing; here's how they had to enter the data (this excerpt from Ocean Loader #5 by Jonathan Dunn).

code2

Essentially the trick to great sounds on the SID chip was down to post modulation (and a great musician that understood the chip!) Basically once you had the basic ADSR, required waveform, and note frequency that you wanted to play, the code could then, under control of the musician, modify the frequency, the pulse widths and envelope shapings over a period of time in a variety of different ways:-

You could pitch bend - where you added or subtracted a fixed amount to the base frequency over a pre-set period of time, or you could set up an arpeggio table that added on a different controlled note value to the base frequency every frame causing "wibbly" notes that sounded like more than one channel. You could set up vibratos were the base frequency would be pitch bent up and down at a pre-set phase over time, or in the case of drums the driver would mess around with not only the frequencies but the waveforms and envelope shape every 50th of a second.

These are just a few of tricks that were added over time to the driver. Jon, like Martin Galway before him, was an adept 6502 programmer when he came on board at Ocean so over time he added more and more functionality to the player himself to the point were it became his baby and the sound quality just went through the roof.

A Fourth Channel...

Later on it was discovered that by fiddling with sound volume register on the SID chip caused an audible "click", so by toggling the volume register tens of thousands of times a second you could create a fourth sound channel that could be fed with sample data - this lead to the digitised speech in Robocop and the digital drums heard on titles such as Green Beret 2. I believe Martin Galway was the first person to come up with the "clicking" drums (first used on Arkanoid) - my addition to this was to run the sample player with Non-Maskable Interrupts and to use real drum sample data.

As with all new tricks there was a disadvantage - you would generally only ever hear four channel music on title screens or places in the game were nothing was really happening as the sample playback pretty much ate all of the available processor time!

Do It Yourself

If you're into the retro scene and like tinkering around with the 64 I've also included the complete source code to the music player and front end, along with the music data for Ocean Loader #4 and Daley Thompson's Olympic Challenge. I converted the source code over to the freeware DASM so you can assemble it and tinker around with it. To assemble the code under dasm type;

    dasm DT88MusicSrc_dasm.asm -v1 -omusic.prg

This will build a binary file called "music.prg" that you can then fire up with any C64 emulator.


*NEW* Just replaced the Ocean Loader Music source with a DASM compatible version which also includes the driver front end so you can quickly tinker with it on the emulators.

Grab all the code and pre-built binaries from my
DOWNLOAD page.

*NEW* If you'd rather just listen to the C64 music, I've added MP3 versions of some of the Ocean Loading Music for your delectation on my DOWNLOAD page.

TO BE CONTINUED...