A quick feature list:
- Only files with single .MUS extension (without the matching .str file) will be added to recording queue.
- No .STR (Stereo SID) and .WDS files will be recorded / used (see above).
- Modified player software "basic player.64" done.
- Recordings will be done for NTSC Machine only: 6581R2, R3, R4 and 8580R5 chips.
- MP3 and FLAC files will contain all text found in the original MUS files as Comments (naturally ID3V1 dont support long comments, but our MP3 files also contain the ID3V2 flag which allows all this text to be present in the MP3 recordings).
- As a bonus a C64 screenshot (JPG) of the MUS text graphics as shown during playback on C64 will be included in the MP3 / FLAC file. See below for example.
and, as a releaseable tool/bonus as part of this project:
Modified player/timing software of "basic player.64" in progress (this will allow me/us to generate a songlengths.txt just as HVSC. This has been missing in CGSC collection). Software will be written in PureBasic, and will be available for Windows OS, command line tool working together with CGSC collection and VICE - the Versatile Commodore Emulator in a batch mode operation.
It should be noted that during original SOASC= recording project in Aug2006 to Apr2009, the CGSC was discussed and thought of, but lack of time and understanding of how to perform it automatically caused it to get low priority, and in the end; never performed. It is time to set things straight!
.MUS files that seems to loop forever
All of these songs were detected by my own tool as playing over 30 minutes, and were therefore categorized as never ending looped songs. For clarity, these will be recorded at 20 minutes MAX, then cut off. Since the amount of songs are so low, I will manually cut them where the song seems to loop and then change the Songlengths_CGSC.txt entry accordingly.
Bobbye/Judy_Blue_Eyes.mus
Daspf/Stand_by_me.mus
*Harry_Bratt/HB/Ad_Nauseum.mus
*Harry_Bratt/HB/Drum_B1.mus
*Harry_Bratt/HB/Keep_Moving.mus
*Harry_Bratt/HB/Mooichido.mus
*Harry_Bratt/HB/Yisrael_Chai.mus
*Jerry_Roth_-Dr_J-/Stereo_Help.mus
*Lord_Myrkul/Times_of_Lore.mus
*Lord_Myrkul/Ultima_IV_Merchant_Theme.mus
*Misc/Anon/Dancing_Days.mus
*Misc/Anon_Blank/Awesome.mus
*Misc/B/Infinity.mus
*Misc/C/Little_Demo.mus
*Misc/C/Start_of_Comic_Bakery.mus
*Misc/E/Sasafrass.mus
Misc/F/Heat_is_On.mus
*Misc/G/Demented_2.mus
*Misc/G/Demented_3.mus
*Misc/K/What_you_Need.mus
Misc/SoundEffects/Alarm.mus
*Neil_Baldwin/Lost_in_Space_tune01.mus
*Neil_Baldwin/Lost_in_Space_tune04.mus
*Sileo/Perpetual_Tango.mus
*Update 29th of March 2017: The following songs were manually inspected as looping songs and where trimmed down to 4 minutes. The ones NOT marked with * was adjusted automatically by using SOX to trim on silence. The reason for them being detected as over 20 minutes in recording was most likely due to that the MUS player didn't exit properly when it was running. The others were simply 1 pattern loops or very small songs (like 2-3 patterns) in a loop.
Basic source code for playback timer used for my CGSC_Timer.exe
The original basic code was found in the CGSC collection at: CGSC\00_Commodore64\MusicSys.d64
REM C64 BASIC LISTER V1.1F
REM (C) 2004-05 LUIGI DI FRAIA
REM LISTING OF FILE: BASIC PLAYER.64.PRG
REM START ADDRESS: $0801
REM END ADDRESS+1: $0C06
REM SIZE (BYTES): 1029
100 PRINT CHR$(147):PRINT " SIDPLAYER BASIC PLAYER"
105 PRINT " BY CRAIG CHAMBERLAIN":PRINT
120 DN=8:SA=780:SX=781:SY=782:SP=783
130 PRINT " TUNING INSTRUMENTS":PRINT:GOSUB 57000:REM LOAD SIDPLAYER ML
200 F$="COMMODORE":LA=PEEK(49)+256*PEEK(50)+1000:GOSUB 57500:REM LOAD SONG
210 SYS HK:REM HOOK (INSTALL)
220 POKE SX,LO:POKE SY,HI:SYS PL:REM SET FOR PLAYING
230 K=PEEK(SX)+256*PEEK(SY):REM GET ADDRESS OF TEXT LINES
240 IF PEEK(K) THEN PRINT CHR$(PEEK(K));:K=K+1:GOTO 240:REM PRINT UNTIL CHR$(0)
250 POKE SS,7:REM START PLAYING MUSIC
260 IF PEEK(SS)AND7 GOTO 260:REM STILL PLAYING
270 SYS HU:REM HUSH
280 SYS DP:REM DROP (REMOVE)
290 END
57000 POKE SA,1:POKE SX,DN:POKE SY,1:SYS 65466:F$="SID.OBJ.64":GOSUB 59000
57010 POKE SA,0:SYS 65493:IF PEEK(SP)AND1 GOTO 59100
57020 SS=49152:FL=49153:HK=49615:PL=49664:HU=49897:DP=49935:RETURN
57500 POKE SA,1:POKE SX,DN:POKE SY,0:SYS 65466:F$=F$+".MUS":GOSUB 59000
57510 HI=INT(LA/256):LO=LA-256*HI
57520 POKE SA,0:POKE SX,LO:POKE SY,HI:SYS 65493:IF PEEK(SP)AND1 GOTO 59100
57530 LA=PEEK(SX)+256*PEEK(SY):RETURN
59000 FOR K=1 TO LEN(F$):POKE 584+K,ASC(MID$(F$,K)):NEXT
59010 POKE SA,LEN(F$):POKE SX,73:POKE SY,2:SYS 65469:RETURN
59100 P=PEEK(SA):PRINT " ERROR: ";:IF P=4 THEN PRINT "FILE NOT FOUND":END
59110 IF P=5 THEN PRINT "DEVICE NOT PRESENT":END
59120 PRINT ST:END
REM (C) 2004-05 LUIGI DI FRAIA
REM LISTING OF FILE: BASIC PLAYER.64.PRG
REM START ADDRESS: $0801
REM END ADDRESS+1: $0C06
REM SIZE (BYTES): 1029
100 PRINT CHR$(147):PRINT " SIDPLAYER BASIC PLAYER"
105 PRINT " BY CRAIG CHAMBERLAIN":PRINT
120 DN=8:SA=780:SX=781:SY=782:SP=783
130 PRINT " TUNING INSTRUMENTS":PRINT:GOSUB 57000:REM LOAD SIDPLAYER ML
200 F$="COMMODORE":LA=PEEK(49)+256*PEEK(50)+1000:GOSUB 57500:REM LOAD SONG
210 SYS HK:REM HOOK (INSTALL)
220 POKE SX,LO:POKE SY,HI:SYS PL:REM SET FOR PLAYING
230 K=PEEK(SX)+256*PEEK(SY):REM GET ADDRESS OF TEXT LINES
240 IF PEEK(K) THEN PRINT CHR$(PEEK(K));:K=K+1:GOTO 240:REM PRINT UNTIL CHR$(0)
250 POKE SS,7:REM START PLAYING MUSIC
260 IF PEEK(SS)AND7 GOTO 260:REM STILL PLAYING
270 SYS HU:REM HUSH
280 SYS DP:REM DROP (REMOVE)
290 END
57000 POKE SA,1:POKE SX,DN:POKE SY,1:SYS 65466:F$="SID.OBJ.64":GOSUB 59000
57010 POKE SA,0:SYS 65493:IF PEEK(SP)AND1 GOTO 59100
57020 SS=49152:FL=49153:HK=49615:PL=49664:HU=49897:DP=49935:RETURN
57500 POKE SA,1:POKE SX,DN:POKE SY,0:SYS 65466:F$=F$+".MUS":GOSUB 59000
57510 HI=INT(LA/256):LO=LA-256*HI
57520 POKE SA,0:POKE SX,LO:POKE SY,HI:SYS 65493:IF PEEK(SP)AND1 GOTO 59100
57530 LA=PEEK(SX)+256*PEEK(SY):RETURN
59000 FOR K=1 TO LEN(F$):POKE 584+K,ASC(MID$(F$,K)):NEXT
59010 POKE SA,LEN(F$):POKE SX,73:POKE SY,2:SYS 65469:RETURN
59100 P=PEEK(SA):PRINT " ERROR: ";:IF P=4 THEN PRINT "FILE NOT FOUND":END
59110 IF P=5 THEN PRINT "DEVICE NOT PRESENT":END
59120 PRINT ST:END
My modified version of BASIC PLAYER.64 (only added lines) for CGSC_Timer.exe
The additions made are quite simple, but very effective :-)
200: F$="000010001"
- (This was originally COMMODORE, but changed it into something unique).
251: TIME$="000000"
- (Reset internal clock of Commodore 64 to hhmmss, just before it starts playing).
281: PRINT "DONE PLAYING!"
- (Just added to certify playback was ended).
282: PRINT TIME$
- (Just added to certify playback timer counter).
283: OPEN2,8,4,"TIMER,SEQ,W"
- (Open up to write a SEQ file called "TIMER" to local PC directory for Vice).
284: PRINT#2,TIME$
- (Simply write out the hhmmss timer value).
285: CLOSE 2
- (and close the file).
200 F$="000010001":LA=PEEK(49)+256*PEEK(50)+1000:GOSUB 57500:REM LOAD SONG
251 TIME$="000000"
281 PRINT "DONE PLAYING!"
282 PRINT TIME$
283 OPEN2,8,4,"TIMER,SEQ,W"
284 PRINT#2,TIME$
285 CLOSE 2
251 TIME$="000000"
281 PRINT "DONE PLAYING!"
282 PRINT TIME$
283 OPEN2,8,4,"TIMER,SEQ,W"
284 PRINT#2,TIME$
285 CLOSE 2
My modified version of BASIC PLAYER.64 for playback & recording
Based on the exact original source as shown above for "BASIC PLAYER.64", I simply added a line to set screen to black, text to black, screen off and clear previous keyboard buffer (as it was used in my MMC64 loader).
In addition I did a COLD RESET (SYS) as I figured out that after regular reset, the SD2IEC card loader took a long time to load again for some reason. This is called straight after the SID PLAYER had played until the end.
101 POKE 53280,0:POKE 53281,0:POKE 53265,11:POKE 198,0
281 SYS 64738
281 SYS 64738
This will ensure that the VIC chip is turned off and thus hopefully reduce the noise a bit more during playback and recording :-). The same exact thing was done with HVSC collection during the conversion of SID to PRG with PSID64 and its "--blank-screen" option.
Then I created my own unique modifed version of each player to load the same corrosponding .MUS file (filename as xxxxxxxxx.mus and xxxxxxxx.prg) and copied everything over to a SDCARD to my SD2IEC device and started recording with my own SIDREC tool as done with HVSC collection.
On 23th of July 2016, the statistics are:
As a result of everything done above, we can estimate the following playtime AND recording time needed to playback or record the current CGSC collection:
MUS Files: 11104
Total Minutes: 29551
Total Hours: 492
Total Days: 20.
Since we do have 4 chips to perform, the total days of recording time will be 80 days (at least), which is approx 2.5 months.
Total Minutes: 29551
Total Hours: 492
Total Days: 20.
Since we do have 4 chips to perform, the total days of recording time will be 80 days (at least), which is approx 2.5 months.
Some screenshots of various techniques used for planning the recordings