libsidplayfp / sidplayfp

Console SID/MUS player
GNU General Public License v2.0
34 stars 8 forks source link

Recommended 6581 filter setting #26

Closed drfiemost closed 6 months ago

drfiemost commented 8 months ago

Unfortunately, there is no way to get the 6581 filter "right", as there is too much variation even between chips made in the same factory on the same day.

My idea centers around the logic that most composers from the golden age used their C64 their entire career.

So why not create a small lookup table for each composer (at least for the big ones) that adjusts the filter settings for the 6581?

e.g. for David Dunn I would personally set the filterCurve to 1.0. Simply load the tune "Jump Jet", and you will hear that voices 2 & 3 are almost silent from 0:20 to 0:38 and then again from 0:45 to 0:51. If you set the filter curve to 1.0, suddenly, you can clearly hear the voices playing. If you listen to the other tunes from David Dunn, you will find that all of them sound much better.

For Martin Galway it's a similar story. There, I found a setting of 0.6 - 0.65 to be the most pleasant. You can hear the filter doing something, whereas it sounds a bit thin/bland with the defaults.

Nobody can claim they've ever heard the intended versions unless they composed it, so I propose tuning the filter settings by ear for the biggest 20-30 composers that used 6581. They should be tweaked so that the filter FX are not too subtle to be almost (or entirely) inaudible but also not so strong that the volume between voices becomes unbalanced.

I would be willing to write a small class that returns "recommended" filterCurve settings when feeding in a composer name. It would just be an std::unordered_map that returns 0.5 (or -1.0?) for unrecognized names.

I would also love to provide these tunings, listen to feedback, etc., but I want to ensure that I didn't forget anything and that my idea makes sense.

I think this would be a very welcome "fix" that, for the first time, actually represents the artist's intent. Everyone would hear these old tunes fresh for the first time, the way they were (probably) intended.

Somebody will undoubtedly mention that we could contact the original authors and ask for their input, but I have my doubts about that. Some are no longer reachable (deceased, moved on, and don't care anymore, no contact info available, etc.), and I don't think we can rely on their memory anyway, as these tunes were made 30-35 years ago.

Originally posted by @reFX-Mike in https://github.com/libsidplayfp/libsidplayfp/discussions/93

drfiemost commented 8 months ago

It can be implemented as an AutoFilter option in sidplayfp, which will set the filter parameter based on the tune author, and maybe extend it to tune specific setting in a future revision if needed.

Originally posted by @drfiemost in https://github.com/libsidplayfp/libsidplayfp/discussions/93#discussioncomment-7402145

ruby-R53 commented 8 months ago

well, my idea was to implement a switch for changing the filter curve setting so the user wouldn't have to change the .ini file for each tune, so the filtercurve parameter on the file will be just a default. so for example, instead of changing filtercurve, you run sidplayfp --fcurve=0.7 tune.sid.

drfiemost commented 8 months ago

That's a good idea, then we could use --fcurve=auto for suggested setting.

ruby-R53 commented 8 months ago

true, that'll make it very convenient!

reFX-Mike commented 8 months ago

Or "auto" could be the default.

drfiemost commented 6 months ago

Available in 2.6, will be improved in 2.7