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.
01 - 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)
etcinto 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:
Play Video: Mapping the SID's
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.