Stone Oakvalley's Authentic SID Collection (SOASC=)
The automated Commodore 64 SID Music converted to MP3 recordings. Download now!. Project based on High Voltage SID Collection (HVSC) up to release #49.

                     



HOW WAS IT DONE?:

The SOASC= project was an automated recording technique invented by me (Stone Oakvalley) in order to mass record music from the legendary Commodore 64 and its SID chips (6581 and 8580).

Realizing this project needed unique hardware solutions and software to back it all up. I spent approx 180 hours on research and how to figure out a plan that would help me automatically record this massive amount of Commodore 64 music. Here is a more or less complete detailed description of all the problems and solutions I encountered.

Note: All references to software and hardware is listed on the LINKS page.



INTRODUCTION

First download the whole HVSC SID Collection and unpack :-)



02:

PREPARING MADNESS

I then programmed a tool in PureBasic to interpret and extract out the Path+Filename i.e. "/20CC/Conquestador.sid" and then all the subtunes length from the songslength string: "3:28 3:42 4:39 0:01(G) 0:01(G) 0:09(G)"
from the file in the HVSC collection "C64Music/DOCUMENTS/Songlengths.txt"

I then made my own database .txt with and looped output like:

20CC/Conquestador.sid
3:28
3:42
4:39
0:01
0:01
0:09
#(Separator)
etc....into a large file containing all song information from the "Songlengths.txt".



03:

MAPPING THE SID'S

Then I binary read each .SID file and checked the amount of sub tunes within it. I hacked the SUB-TUNE bit in the SID
file to make the SID file start on this tune when played, and then I made a duplicate file of it. (This is because the
PSID64 SID Player could not be used to skip tunes, and my system did not have any support to send any additional keys either to the C64. More on this later).

Then I extracted out the required information I needed for the SIDREC recorder and when constructing the MP3 tags.

I created a own unique .INI file for each SID sub-tune file like this, based on the information from the SID file itself:


Filename: "0000101.INI" etc etc (More about this filename later)

[SID-DATA]
PATH = 20CC/
FILE = Conquestador.sid
TUNE = 01%3:28 (This means Tune 01 is 3:28 long)
;
[MP3-DATA]
MP3-FILE = Conquestador_T01.sid.mp3 (The new filename to indicate Track 01)
MP3-TITL = Conquestador
MP3-AUTH = Edwin van Santen & Falco Paul
MP3-YEAR = 1991
MP3-COPY = German Design Group

With the above procedure the amount of files of course increased to 46668 .SID files and 46668 .INI files



04:

FILENAMES

Then all the files was renamed (both .SID and .INI) into my own charset for usage towards the PAR: Relay C64 keyboard interface. The num of chars used in the filename created in step 3 above needed to be a little bit compressed, due to the fact that there were 50000 unique filenames and I also needed bits in the PAR: ports to send SHIFT and other special C64 keys, including reset and SCROLLLOCK detection for the 64HDD server.

Anyway, a filename like "3207101.INI" was renamed to "32O7LOL.INI"
Where "1" was replaced by "L" and "0" (zero) was replaced by the letter "O"

This renaming caused the recording process to begin not at the top of the alphabet but really in the "VARIOUS/N-R/" directory, which contains approx 23000 tunes. And most of the "VARIOUS" tunes is not really what we all remembered from the good 'ol C64 gaming days! Gimme Rob Hubbard!



05:

BILL GATES AND HIS "oughta's"

After the renaming of approx 95000 files was done, I had to convert each .SID file into Commodore 64's .PRG format by using the excellent PSID64.exe dos software which makes an C64 executable out of a .SID file which can be executed on the real C64 containing player code + textual information from the HVSC tags.

A couple of files was detected as not playing, or had problems being converted during this conversion process. These files will be recorded after the main project is finished using alternative recording methods.

Anyway, the amount of files in this project went to a whopping 142134! (.SID, .INI and now .PRG files)

Yeah, working with these amount of files was beginning to slow down Windows XP even. They were later sorted out into 9 different directories just because DOS and WINME on the ServerPC and RecordingPC could not handle this amount of files in one dir. Stupid Bill Gates and his "...oughta be enough for everybody" shit!!!

Now, I had to start on the hardware part which was a really painstaking job....



06:

CABLES AND COMMUNICATION

Now all the .PRG files was copied over to the ServerPC HD, and by running the 64HDD software which emulates a 1541 Disk Drive for C64 in DOS, the C64 could now access the files and load+run+play them. A own cable was made (XE1541 see pictures) to support the 64HDD and was connected to the Serial Port of the C64 and the PAR: port on the PC.
Getting 64HHD up and running was not the most easiest part (also due to PAR: bios setups), and the diodes used in the XE1541 cable was hard to come by. I had to make 2 of everything, and that added some delays to the project.
After 1 week of constant testing and configurating it finally worked like a charm!

Also, a Audio/Video 5-pin cable had to be made and was connected to the AUDIO/VIDEO connector at the C64.



















07:

KEYBOARD INTERFACE - MAGIC FINGERS TYPIN' ON THE C64'S!


To be able to load automatically on the C64 by real typing chars, an easy and crude solution had to be constructed.
The result was the homebuilt Parallel Relay Card (see picture) connected to the C64 keyboard connector using a IDE 44pin cable (which fits 100% by the way)

The interface consists of 8 relays which are each connected to the PAR: port. By programming again in PureBasic I could switch these relays on and off by command, and thus simulating keys to be pressed on the real C64, letting me load all the different filenames including the keys to LOAD & RUN the .PRG file as well on the C64.

Since I had limited with PAR: bits to play with, it was a little bit tricky to optimize what chars I needed to get everything run and record automatically in an long lasting loop for about 13 weeks!

The PAR: Relay C64 Keyboard Interface was designed as follows, entry after "=" is the actual C64 key:

PAR 01-BIT01 = 2
PAR 01-BIT02 = 3
PAR 01-BIT03 = 4
PAR 01-BIT04 = 5
PAR 01-BIT05 = 6
PAR 01-BIT06 = 7
PAR 01-BIT07 = 8
PAR 01-BIT08 = 9

PAR 02-BIT01 = L - for loading
PAR 02-BIT02 = O - for loading
PAR 02-BIT03 = , - for specify the C64 DEVICE num
PAR 02-BIT04 = : - : because ":" + SHIFT + RUNSTOP = LOAD & RUN in one go at the C64
PAR 02-BIT05 = SHIFT
PAR 02-BIT06 = RUN STOP
PAR 02-BIT07 = HARD RESET C64 - Userport pin 1 & 3...cold reset
PAR 02-BIT08 = SCROLL LOCK - Off when not loading tune, ON when loading on 64HHD Server

So, by resetting C64, loading, waiting and run a SID tune .PRG file, record, process MP3 and loop it.



08:

THE FIRST SETUP

During the first 180 hours of research of the project, here is pictures of the first setup with just 1 pcs 8580 Commodore 64. This setup was used for several weeks while designing the software and constructing the hardware. It was really placed in a bad position and was really annoying to have around... well..that's life.












09:
This was the first setup used, but since of its massive space needed it was later re-built, more on this further down!

HARDWARE SETUP - MADNESS MANIFESTS ITSELF (obsolete Aug 2007)

1 x Commodore 64 BreadBox with 6581 SID Chip.
1 x Commodore 64 WhiteyBox with 8580 SID Chip.
2 x Server PC's (33MHz and 233MHz) running in DOS mode with 64HDD as fileserver for the Commodore 64 .prg's.
2 x Recording PC's (800Mhz and 933Mhz) running in WinME with own programmed record software (SIDREC).
2 x 1084 Monitors.
4 x 15 Inch Monitors
2 x Own constructed PAR Relay to Commodore 64 keyboard interface.
2 x Homemade XE1541 Cables.
2 x Homemade Audio/Video Commodore 64 Cables.
12 x 220V Power plug connections needed.

As you can see from the pictures, the hardware setup is a real mess. But if it works, who cares :)
The keyboard and top chassis of the Commodore's are removed.

A own tool called SIDREC (for Windows) was programmed in PureBasic which controls everything and keep track of the recording process. The function of the program is to RESET, LOAD, RECORD, CONVERT, MAKE MP3 (with tags from HVSC .INI files) and go in a loop for about 13+ weeks, 24 hour a day!
It also detects when 64HDD has finished loading the .PRG file into the C64, at which point the SIDREC start to record the tune.
A ServerPC and a RecordPC was setup (with no cabinets for easier access) and put on a huge table with 6 CRT's and a shitload of power connectors and my god the wires!

Pictures here will tell their own story, you can see all the software running and the 8580 C64 in action.
A fan system (running at 5v) was also made to cool down the SID chip, 2 HD's, C64 power supply and a old crappy 33MHZ SX Processor!



















HI-RES HQ Pictures of SOASC= Mar 2007


    From Top Left: Rec PC - 6581 C64 - Server PC          From Top Left: Rec PC - 8580 C64 - Server PC  


The SOASC= system moments before it was dismantled.




Version 2 of the SOASC= Recording System August 2007

Finally managed to build my dedicated rack for the SOASC= Recording system. The cabinet features all the hardware as seen on the table above, except the awful CRT monitors.

The system was put to use during 2007,2008 and 2009. In April 2009 I recorded HVSC#49 which was the last ever recording to be done. After this was finalized, the Commodroid was dismantled - never again to be used. This was also due to the fact it was very unstable and had reasonable wear and tear, and the fact that I retired from SOASC= in April 2009, there was no more need for the rack.

Since of its appearance and similarity to droids and robots, it was officially named The Commodroid!














10:

GETTING THE BOXES

Getting hold of Commodore 64's was not so easy as you would have thought. I searched some Norwegian net auctions pages, and ended up with a couple of defect C64 breadboxes. My own two C64's had a busted 8580 SID chip and something wrong with the video or char chip on my own old breadbox as you can see on the picture:). Anyway, during a 2 months time in search for cheap C64's I ended up having 5 pcs 6581 C64's and 4 8580 C64's.. Well, they will make a great addition to my nostalgic showcase cabinet along with the Amiga 500 and Atari 2600 from the 80's together with some old magazines, game box casing and datasettes, disk drives and joysticks..hehe!

And oh.. the C64 on the picture here was fixed by replacing a defect RAM chip.














11:

FINAL WORDS

Looking on the project I must say the work involved kinda payed off. For who else can claim the throne of producing the most complete, real and authentic Commodore 64 SID music as MP3 in the world?

See you around!
Regards Stone Oakvalley, April 2009.



SOASC= by www.stone-oakvalley-studios.com