Filter brewing for the Soekris R2R

If you zoom in on the frequency response with those parameters you'll see the response starts to drop at 16050z (22050-6000hz) , hits -6dB at 22050, and reaches -120dB at 28050z.

So with a bit of tweaking you can tune the filters to meet very specific criteria. Even Team Dogmatix should make brick wall filters with lots of passband ripple.
Is there the way to add anti-sin(x)/x to compensate 'pass-band frequency response dropping' as SAA7220/B+TDA1541A did earlier, and people can then use slightly ease the digital or analog filter? For manual of sox I did't find any relevant wordings.
 
Disabled Account
Joined 2005
I think that the 44,1 filter is the most important task and when a good solution is found, it will be "copied" to the other frequencies.

//

I suspect FIR2 requires more urgent attention than 44.1 etc.

Søren may well have loaded the wrong filter coefficients because performance is not even close to what it should be.

This is the result of upsample x8 with default 44.1 filter then upsample x8 with FIR2:
attachment.php


You need to measure relative to the passband, so FIR2 is providing at most 85dB attenuation of images reflecting around 352800Hz FS.

This is made with a very slow roll-off filter that is -0.00002dB at 30kHz, and -140dB around 352kHz. (384kHz Fs)

attachment.php


The idea is that FIR1 takes care of imaging for initial x8 so there shouldn't be any significant content over 30kHz. This means in the worst case mirrored audio will not extend below 384-30 = 354kHz. If FIR2 reaches maximum attenuation prior to 354kHz there should be little mirrored content.

I've attached Minimum and Linear Phase versions of the filter coefficients. Intermediate phase blows out the tap count so isn't feasible when you only have 95 taps available.

Code:
 sox --plot octave -r 3072k -n output.wav synth 1 noise  sinc  -a150 -L -190k -t340k
 

Attachments

  • Fact3528FIR2.png
    Fact3528FIR2.png
    110.2 KB · Views: 1,167
  • ReworkedFIR2.png
    ReworkedFIR2.png
    84.4 KB · Views: 1,165
  • impF2_MP.txt
    1.9 KB · Views: 128
  • impF2_LP.txt
    2 KB · Views: 101
Last edited:
Disabled Account
Joined 2005
Not able to test this for a day or two...

Default FIR1 filters, FIR2 replaced with minimum phase slow roll-off described above.

88.2/96 and 176.4/192 have much more relaxed requirements in terms of transition band. The consensus was that Søren's filters at these rates sounded pretty good whereas 44.1 was reported by various people as sounding harsh.

Personally, my collection is almost entirely 44.1/16 and I'm not going buy hi-res reissues of bad 70's AOR or tedious MOR vocalists - no matter how well recorded. My only excursion into that realm is So What by Miles Davis, and I'm happy to make an exception for that recording. ;)

So 44.1 is the squeaky wheel...
 

Attachments

  • 1021filt_FIR2_MP.skr.zip
    4 KB · Views: 132
  • fir_impulse.png
    fir_impulse.png
    12.2 KB · Views: 517
  • fir_response.png
    fir_response.png
    17.4 KB · Views: 217
Nice find indeed. But it seems you apply the filters to some noise to produce the graphs???

The frequency response of a filter is its fft.
upsample(8) FIR1 upsample(8) FIR2 is the same as
upsample(64) FIR3, with FIR3 the filter you obtain by convoluting the upsampled FIR1 by FIR2. So we only need the fft of FIR3.
I made a little Octave code to demonstrate that, you see the graph is the same.
(I am not familiar with Octave, you surely can format the plot nicer).

Code:
pkg load signal;
fs=4410; up1=8; fr=fs*up1*8; 
# the missing 0 in fs is intentional for computation time
fir1= dlmread("/path/fir1.txt"); # the file should only contain the filter coefficients
ufir1 = upsample (fir1, up1);
fir2= dlmread("/path/fir2.txt"); # see fir1
gfir = conv(ufir1, fir2, "full");


semilogx(20*log10(abs(fft(gfir,fr))));

# Things to observe
# frequencies up to "fr" and not to Nyqvist fr/2 are displayed
# the frequency on the x axis has to be multiplied by 10 due fs setting
plot.jpg
 
Last edited:
I've attached Minimum and Linear Phase versions of the filter coefficients. Intermediate phase blows out the tap count so isn't feasible when you only have 95 taps available.

You can use a few tabs more:

The dam1021 FIR1 is operating at 352.8K/384K and each filter can have up to:

1016 tabs at 44.1K/48K input sample rate
508 tabs at 88.2K/96K input sample rate
252 tabs at 176.4K/192K input sample rate
124 tabs at 352.8K/384K input sample rate, but normally bypassed

FIR2 is operating at 2.822M/3.072M and can have up to 120 tabs, with input sample rates 352.8K/383K.
 
Not able to test this for a day or two...

Default FIR1 filters, FIR2 replaced with minimum phase slow roll-off described above.

88.2/96 and 176.4/192 have much more relaxed requirements in terms of transition band. The consensus was that Søren's filters at these rates sounded pretty good whereas 44.1 was reported by various people as sounding harsh.

Personally, my collection is almost entirely 44.1/16 and I'm not going buy hi-res reissues of bad 70's AOR or tedious MOR vocalists - no matter how well recorded. My only excursion into that realm is So What by Miles Davis, and I'm happy to make an exception for that recording. ;)

So 44.1 is the squeaky wheel...

I am listening to these filters and I feel that the bass is more well defined and that the stage has gained a bit height. Is it just me?
 
Quick question.
Is it necessary to "powercycle"(turn off/on) the dam after "downloading" a new filter?
I thought that it was not the case but I have to do it sometimes.

Filters get loaded as needed, like a change in sample rate....

Been testing A-B with a couple of filters with very different gain and it's therefore easy to tell which filter is loaded.

Or is it a way to powercycle the dam1021 via umanager?

EDIT: Seems as I have to write "exit" in umanager to make the new filter load after it has been uploaded. If I get no response from the umanager then I have to change to a song with different samplerate to make the new filter work.
 
Last edited:
Quick question.
Is it necessary to "powercycle"(turn off/on) the dam after "downloading" a new filter?
I thought that it was not the case but I have to do it sometimes.



Been testing A-B with a couple of filters with very different gain and it's therefore easy to tell which filter is loaded.

Or is it a way to powercycle the dam1021 via umanager?

EDIT: Seems as I have to write "exit" in umanager to make the new filter load after it has been uploaded

Soren said somewhere that a sample rate change (blinking led) is sufficient to load the new filter.
 
Disabled Account
Joined 2005
I am listening to these filters and I feel that the bass is more well defined and that the stage has gained a bit height. Is it just me?


It's possible. There is a load of low level junk around 44.1kHz when using 44.1kHz sampling rate and one possibility is this is intermodulation distortion related to the images the stock FIR2 filter passes. I want to check before saying this is definitely so.

If it is IMD related removing the images could help remove low level hash from the audio band.

But I need to test this theory ;)
 
Not able to test this for a day or two...

Default FIR1 filters, FIR2 replaced with minimum phase slow roll-off described above.

88.2/96 and 176.4/192 have much more relaxed requirements in terms of transition band. The consensus was that Søren's filters at these rates sounded pretty good whereas 44.1 was reported by various people as sounding harsh.

Personally, my collection is almost entirely 44.1/16 and I'm not going buy hi-res reissues of bad 70's AOR or tedious MOR vocalists - no matter how well recorded. My only excursion into that realm is So What by Miles Davis, and I'm happy to make an exception for that recording. ;)

So 44.1 is the squeaky wheel...

Is totalCRaP_rev2 the same but with FIR2 in linear phase?
 
Is there the way to add anti-sin(x)/x to compensate 'pass-band frequency response dropping' as SAA7220/B+TDA1541A did earlier, and people can then use slightly ease the digital or analog filter? For manual of sox I did't find any relevant wordings.
Sorry for my dead end question. Got some info from FilterShop's app manaul.
p15 & p16:
 

Attachments

  • FilterShopApp_09_p15.png
    FilterShopApp_09_p15.png
    138 KB · Views: 484
  • FilterShopApp_09_p16.png
    FilterShopApp_09_p16.png
    172.9 KB · Views: 469
Disabled Account
Joined 2005
Is totalCRaP_rev2 the same but with FIR2 in linear phase?

No, the last one is just the default 1021filt.skr with FIR2 replaced. No other changes made to any other aspect. The FIR2 were done using SoX rather than Octave which was used for the majority of previous versions. I'd fallen back to using kaiser windowing with Octave, so the Kaiser Windowed Sinc method used by SoX is roughly equivalent. Not sure if I can get the filters close enough to compare SQ differences between the two programs.

Anyway just got back home, so really need to readjust to the DAM after listening to audiobooks on car stereo for the past 8 days.

I'd left the DAM playing a equipment burn in track on loop so it's had around 190 hours of continuous burn-in. Can't say if it's helped but doesn't seem to have hurt.
 
No, the last one is just the default 1021filt.skr with FIR2 replaced. No other changes made to any other aspect. ...

Hello Paul,

Thanks for sharing all the filter work you are doing. I've just started to catch up with all the this new stuff.
I guess the real questions is how are the totalcrap (TC) filters different from the original drivers from Soren.
From the description of the totalcrap filters, they are all linear with sharp roll-off (same as original filters?) but have different FIR2. TCv1 has 3.8 attenuation in Fir2, TCv2 has a Fir2 with slow roll off.
Please correct my understanding.
 
Disabled Account
Joined 2005
Hello Paul,

Thanks for sharing all the filter work you are doing. I've just started to catch up with all the this new stuff.
I guess the real questions is how are the totalcrap (TC) filters different from the original drivers from Soren.
From the description of the totalcrap filters, they are all linear with sharp roll-off (same as original filters?) but have different FIR2. TCv1 has 3.8 attenuation in Fir2, TCv2 has a Fir2 with slow roll off.
Please correct my understanding.

Sorry, you'll have to cut me some slack. I'm just back from 8 day driving holiday in outback NSW, so it's going to take me a bit time to get back up to speed on details of individual filters and comparative differences between default and the TC filters.

TBH I never sat down and looked at the TC filters and thought "Hmmm, now how exactly do these differ from Søren's?". They were done to meet specific criteria I thought were worth exploring at the time I made them. It was often about finding a balance of algorithm, window type and window parameters to get something that worked.
 
Disabled Account
Joined 2005
Attached is a comparison of the impulses of the TotalCrapRev2, LP FIR2 posted a couple of days ago and the SK factory filter.

attachment.php


The TotalCrapRev2 has less rejection than the factory filter, so suffers from the same imaging issues. You can see that the base of the TCr2 impulse is wider than stock so this may contribute to time smearing.

The stock FIR2 has the greatest amount of pre/post ringing.

LP Fir2 has the narrowest impulse and least pre/post ringing of the three. I suspect this contributes to the improved focus that has been reported.

44.1kHz filters...

attachment.php


TotalCrapRev2 44.1 filter is as advertised and features lots of pre/post ringing.
Stock filter has a fair bit of ringing but is short....

attachment.php

The stock filter isn't really as steep as people seem to assume. It is around -17dB down at 22kHz, and doesn't fully attenuate until 24kHz.

attachment.php

Total Crap rev2 44.1 is far steeper and is rolled off to -85dB at 22.05kHz although response continues to drop in the stop band. Although attenuation appears worse than stock, this is only true between 24 and 25kHz.
 

Attachments

  • 441Filters.png
    441Filters.png
    29.8 KB · Views: 639
  • FIR2FilterComp.png
    FIR2FilterComp.png
    45.3 KB · Views: 196
  • Stock441.png
    Stock441.png
    91.7 KB · Views: 662
  • TotalCrapRev2_441.png
    TotalCrapRev2_441.png
    102.8 KB · Views: 633