Stone Oakvalley's Authentic SID Collection (SOASC=)
The automated Commodore 64 SID Music recorded to MP3/FLAC. Project based on High Voltage SID Collection & Compute's Gazette SID (CGSC)


T H E   R E A L   D E A L   I N    - A U T H E N T I C -    C O M M O D O R E   6 4   M U S I C  !

In-depth SID-INIT clip
in All about SOASC= | Saturday, May 28, 2016 | 23:49

In order to more or less automate the recording of SID's, there were several things that had to be figured out of, especially when did a tune actually start to play music?

While the songlength are already known from HVSC database (songlengths.txt), there is no way to tell after you have loaded a tune, when its actually starting to play any sound or notes.

In my automation loop, all SID songs were first converted to PSID64 PRG for auto-run purposes and sometimes even compressed with exomizer. We must also remember, that the tune itself may pre-calculate or pre-init its own stuff, all different from each and every tune, creating a very random point-in-time when the tune actually starting making sounds or play music.

There were no easy "apply-one-to-all" solution, so something else had to be thought of. I ended up chopping out about 15 pcs of variations of what I have called "SID-INIT-CLICK-POP", which are a loud pop (as result of SID chips beeing initalized, or volume parameters just before the tune starts). These were saved as my profiles (from 2kb to 12kb range) and used to "match" this in every WAV recording to determine with more or less precise result where the music actually started, and also to leave out this annoying pop out of every tune before it was MP3'd and FLAC'd.

The profile that had the highest match above a certain percentage was used to determine where the start point was and then using HVSC songslength for the length, simply crop the converted WAV file to these factors.

This was all good for the 6581 range of chips as they all had this loud pop when the SID chip was initialized, but in May 2016, I discovered that this did not happen to the 8580 chip. There were simply no loud pop to detect and a different approach had to be coded and used for these recordings.

Below are some screenshots of these investigations to better illustrate what the hell I'm jabbing about!

6581: A raw screenshot of a unprocessed recording straight from my system. For the 6581, there is a larger peak in the beginning which slowly goes down to 0, then goes sloping down with a small dip again, sloping quickly up to where the first note hits.

The detection range of the peaks in my code useally lasts from 0.1 sec to 0.5.

6581: My routine would detect the highest peak detected and use that as start of "profile", and detect when that peak goes down just below 0, and mark that as "the SID-INIT-CLICK-POP" position.

6581: Finally, a simple crop was done to chop off where the previous pop was detected at its end, then by HVSC length keep the rest of the song intact.

The result was a perfectly trimmed WAV file which starts smooth (no loud pops).

All screenshots does not show the song in complete view, this was just to illustrate better how the trimming of songs were performed. Also, the screenshots are from Audition, which is not part of my automation, again just for illustration.

My routine (purebasic code) simply works with bits and bytes to perform all of this automatically of course.

8580: Things get a bit worse for the 8580 SID chip. There is simply no common easy detectable loud pop to determine where the song starts.

Some may get smart and say "well, just analyze the song and when the db value goes from 0.2 to 1 during 0.5 seconds or so, you ahve your starting point", but how would you pass that logic on to a SID song that would slowly fade from 0.2 to 1db over 5 seconds?

Simple answer: The detection of trim-start could be random, even in the middle of tune. So, yeah thought about that, but as anybody can see, that logic does not compute and is highly risky.

8580: Now, by viewing this in SPECTRAL VIEW in Audition, its better to see the audio signal and what is going on. Let me explain:

1: The start of the recording is simply the static noise as it appears on any standard Commodore 64 and is caused by the VIC chip at this point showing a standard blue screen with some white text on it.
Don't worry about the "static noise", its very very low.

2: However, as I have written before on website, all SID songs were converted to PSID64 PRG format, but with the -b (blank vic chip option), to allow the screen to become pure black. This happens just milliseconds after the tune was loaded and the PSID64 program started.

3: After a short while, we can see a small dip going up, then in this example, the music starts to play.

8580: With this in mind, I simply coded a routine to scan for various bytes values for point 1, when point 1 suddenly drops very low and lasts a certain amount of bytes, we could say that this is where the song starts.

Illustrated are the area defined now as "song starts here", and simply cut where the white area ends.

8580: Finally, an automated cut is performed and the WAV file trimmed according to my routine above, together with the HVSC songlenght entry and the song is marked as final recording.

The small silence in the illustrated tune is just 0.166 seconds long adn we just have to live with that fact.

Commodore 64 is analog and everything is pure random when the shit hits the fan.

Posted by: Old-schooler, Stone Oakvalley | Publisher: Crazy Multi Talent, Stone Oakvalley
Last revised: December 07, 2022 - 17:33 | Page views: 3762

Website Design by - Copyright © 2024