Sunday, January 13, 2019

FPGASID vs. SID8580 vs. SID6581

So, here it is. The FPGASID has arrived and you should know what's coming up now:

Yes, exactly. A comparison, a test, audio examples, a lot of audio to listen to and some of text to read.

First of all, I have to mention that I listened some examples already available on the FPGASID page. And I was sad because while the audio sounds good the examples are well-known game tunes from the 80s. As if there was no life after 1990. As if there are no hundreds of thousands of great C64 music out there.
I understand that many people grew up with playing those good old games, listening to the awesome soundtracks. And only a small percentage of them are aware of the fact that demoscene does exist and also the chiptune scene keeps the C64 music alive.
Yes, old game tunes are gold, their composers were the pioneers back then.
But there are many more pioneers who experienced with the SID, created music, exploited many features and discovered undiscovered things in the last 25+ years too...
These people should be noted or at least mentioned as well, so as usual, my test is not about old game music but "new" demoscene tracks and composers.

During testing, I was thinking what to post about the FPGASID. It's actually hard to make a proper blogpost about it, it's not easy to collect and record music and arrange them to a nice post.

Especially hard to do it, because this replacement of the original SID is so good that it's very hard to find tunes that break the emulation.

Waveform and filter reproduction in 8580 mode is so good that majority of the test music were simply identical on both FPGASID and SID8580. Ringmod, sync and many other tricks and effects are almost perfect at all times.

The "filter bias" setting in 6581 mode is a great feature to simulate various 6581 revisions and it's very easy to find a satisfying setting for filter strength. To me "bias 0" sounded the best, I used this value for recording all 6581 music in this post.

Let's bring up my favorite test tracks and see how they sound.
  • Left channel: FPGASID
  • Right channel: SID8580
  • no volume changes, no additional effects were used
  • recorded directly from C64 output, without using additional cables of the FPGASID, so it acts like a single SID

01. Jeff - Analogue
This is a music written on 6581 SID. However, I recorded it in 8580 mode and on 8580 SID for this test. The reason is filter bias. Everyone can finetune it on the FPGASID to match their original SID6581 sound. To me, it wasn't that important here, the shape of the waveforms and the sound is more important.

Obvious observation 1: the music is almost completely mono. Which means, the sound is almost identical on both chips.

Obvious observation 2: there's minor difference in the filter and obviously, in the noise waveform due to it's random nature.

02. Jammer - Kraut Pleaser
Jammer was kind to share his experience with me about a recently discovered (possible) ADSR bug in the SID. He mentioned that the following music is broken on the real SID but plays fine on emulation.

Listen closely, the tune is mostly mono due to the identical waveforms. However, a few notes are different on the real SID because of the ADSR bug.
I believe, because this bug is not documented, any emulator would miss it and play the music as FPGASID. No idea if this is something that's easy to fix but this might be the reason for the upcoming tracks to break too.

03. Jammer - Quickie Veto
Same applies to this music as well, ADSR bug and almost 100% mono playback.

04. Necropolo - Cadmium
The good old 8bit car engine sound. Lot of trickery with ringmod and waveform sync. Metal to the ped... SID metal at its best.

Minor differences here and there. Overall, it's a great playback, those minor differences wouldn't be noted if this is not a direct comparison.

05. LMan - My Life
This is a recent music from X2018 demoparty, based on samples but also using SID sounds.

Obviously, the sampled sounds are identical. However, there's a SID instrument that plays the melody, its release seems to be different.

06. Vincenzo - Freefall
I'm not saying I'm special but this music of mine is a special case.

I couldn't sync up the two recordings. There are significant waveform and tempo differences, so this audio clip doesn't sound mono at all. I'm not sure what's so different in this music compared to Jammer's trickery. Maybe the extensive use of ringmod or... no idea. This issue needs more time to find out what's going on.

On a sidenote, I might have also discovered a bug in SID-Wizard's exporter. This music sounds different when played back from SID-Wizard and played back as a C64 executable music.

There are obvious differences, not only in the sound but in the visual representation of the wave files too. This is actually a one-case scenario, so far I couldn't find another music that breaks the FPGASID this much. And to be honest this is not even a big issue because the FPGASID playback sounds good on its own as well.

The FPGASID is one hell of a SID replacement. With some very minor adjustments it can be the current best option for SID enthusiasts. Emulation of 6581 filter is extensive, and easy to change its bias. Configuration tool is easy to use and straight forward.

Congratulations to Andi6510 and his team for achieving this great result.

I didn't test Stereo SID and Pseudo Stereo settings. I simply had no patience to setup the additional wires. It's actually one thing I should mention, the clamps are bigger than the holes between CPU pins and it's hard to connect.

There's a bit of noise in 8580 mode that doesn't exist in 6581. Hopefully this can be fixed with firmware update.

Also, it's an expensive replacement. Yes, it's great. It sounds great, it's feature rich. But... still. I'm happy to have one but I would think A LOT to get another for this same price.

FPGASID webpage:
FPGASID at Kryoflux:

Instead of showing more individual music examples, have a listen to a mix I compiled. All were recorded with FPGASID, set to either 6581 (filter bias 0) or 8580 mode depending on SID model required by each tune.
Have fun.

Track list:
00:00 Swallow - Fantasmolityc Tune 2 (8580)
03:19 Danko - Wonderland X Intro (6581)
04:35 Jammer - Kraut Pleaser (8580)
05:34 Vincenzo - Freefall (8580)
08:57 Jeff - Analogue (6581)
10:52 Vincent Merken - Kkan (8580)
13:34 GRG - Ambient (6581)
14:41 Wiklund - Euro Trash (8580)
16:48 Metal - Phat Phunk (6581)
17:36 Drax - Neurosis (6581)
19:42 Chubrock - Man On Fire (8580)
21:24 DOS - Chubby Tune (8580)
23:58 LMan - Could Be Cool (8580)
27:16 Linus - Cauldron II (8580)