SID Music
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!
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
and David Dunn
#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!) 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 G had left Ocean)
#7) "Ocean Dries
Up" was the remix of the Hyper Sports loader by Peter
Clarke using 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).
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...