Re: [hatari-devel] Sound lowpass filtering?

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


> Note that if the sample rate down-converting method is not good, the
> 'asymmetric' filter may be better left at 250 KHz (new coefficients required).

I tested a version of this previously, but I remember feeling there was no important difference. Our downsampling seems reasonably good. I don't have the files anymore, but maybe I could reproduce this for demonstration.

This does bring up the issue that the filters are hand-picked integer ratios, which don't allow the cutoff frequency to be specified precisely. I think this is fine, but it does mean that the filter cutoff changes with the audio samplerate.

In practice, the cutoff is in a good range for the common case of 44100 or 48000. With lower samplerates like 22050, the difference is quickly outweighed by other things lost at that rate, so I will just say the lowered cutoffs sound perfectly OK at 22050 or 11025. If we supported higher frequencies like 96000, I think we should add support for a variable cutoff.

> The two lowpass filters are not low quality and are not distorted, nor do
> they look or sound distorted. They produce separate exponential decay curves
> for rising and falling edges of the square wave they filter. Not everything
> is frequency domain, some is time domain.

I apologize if my choice of words sounded personally directed at your work, or the code, but when I say "poor quality" I specifically mean my aesthetic impression of the sound. I find the sound of these filters unpleasant to listen to, and it's that reason that I want to describe it as having poor quality.

When I said "distorted" I was referring the drastic change in timbre that has resulted here. The cause is complex, and I have only barely described some salient properites of it, but the result has a specific timbre which is similar to other audio processes that I'm used to referring to as "distortion".

There is perhaps a technical dissection that could be done here, but what is really important to me is just how it sounds. This is best demonstrated by the audio samples I provided. We must demonstrate that the sound is correct before it's worth debating the details of the model.

Samples here: https://github.com/hatari/hatari/pull/25#issuecomment-1675757723

These have two issues for me:
1. The sound of LowPassFilter does not adequately match recordings of my STF, or any other verified recordings I have been able to source and create a comparison for.
2. The sound is unpleasant.

The first issue is important for the quality of emulation. We definitely should pursue a good theoretical model of how the ST amplifier works, but the one we have put into practice simply does not appear to match reality. I can only make recordings of my own hardware as evidence for this, but in finding the truth it's crucial that others do this as well.

There is certainly variation from machine to machine, so we need more data points. I've been involved with other sound emulation for a long time, and we've definitely seen many outlier machines that shouldn't be used as reference, but we eventually learn the truth through collaborative survey. The best way to clarify this is for others to make their own recordings and share them. The more recordings we can share and match our models to, the better this can get. We could especially use recordings of the STE or Falcon too.

The second issue is softer, and very subjective, but I still think it's important. If an emulator sounds bad, I don't want to use it. We should provide an accurate emulation of the sound by default, but it's still important to allow the user to customize their experience if they want something nicer.

However, the second issue at this point is moot, because I don't feel we've demonstrated that LowPassFilter is accurate. The IIRLowPassFilter I proposed as a new default is simply one half of the LowPassFilter implementation used as the entire filter. It is not based on a theoretical model, as I described in my commentary on the recordings, it's just a simplification of LowPassFilter under the assumption that maybe it's only partially correct.. In the result it sounds very much closer to my STF recording, both to my ears, but also by measurement, and that's what matters most to me.

It's been a little bit frustrating that nobody has commented on the sound recordings at all. Has anyone listened to them? Has anyone analyzed them? Do you have subjective feelings about their quality as I do? Do you think my evidence is wrong? Do you have recordings of your own? Do you have an ST that sounds more like LowPassFilter? Has anyone built my proposed changes and listened to them?

-- Brad Smith



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/