Jump to content
IGNORED

Help me to understand filters


Recommended Posts

Something quite else ...

Of course we could attest, like @mitchco funned around a little, that this is a marketing gag at showing different results of filters at work (mind you please, *if* that would have been done in well-fashion, which I highly doubt 🤪).

But it is about the other way around, namely how it "suddenly" got into you that a FIR filter is the one all be all. You know it is not ...

 

So what you must set yourself to (IMHO) is finding what's wrong in the workflow at showing that the FIR is 100%. It won't be, which next give the others a chance again.

They are all different and with fine attention they will all sound different.

(and on top of that you may find that the FIR sounds the worst of the all, but this is up to you)

 

And if you are on to something, it is also OK (better actually - haha).

 

Lush^3-e      Lush^2      Blaxius^2.5      Ethernet^3     HDMI^2     XLR^2

XXHighEnd (developer)

Phasure NOS1 24/768 Async USB DAC (manufacturer)

Phasure Mach III Audio PC with Linear PSU (manufacturer)

Orelino & Orelo MKII Speakers (designer/supplier)

Link to comment

Hi Peter,

 

34 minutes ago, PeterSt said:

image.png.a1a2c147cb4f60d71899e86ddf6be8c4.png

 

I only see this one (at the bottom of the picture) but this is not from a missing sample. It is a continuous tone.

 

Haha... Time flows vertically down on these spectrograms! The extra blue line is indeed a missing sample 🙂.

 

34 minutes ago, PeterSt said:

But I am not sure why you showed those both captures.

 

Yes, not really necessary to bring in new material, as I can show what I mean by manipulating the same files I've already used in this thread.

 

34 minutes ago, PeterSt said:

For fun you could shift two of the exact same files (the file you originally used) by a few dozen or so samples (make a copy of the file and cut out a few dozen samples from the beginning out of one of them). Now look at the nulling result. I am not sure what to expect, but I guess we will learn something from it ...

 

Shifting by a single sample destroys the null. But I'll shift by a dozen and show you the result...

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
33 minutes ago, PeterSt said:

So what you must set yourself to (IMHO) is finding what's wrong in the workflow at showing that the FIR is 100%.

 

I'm pretty confident that the workflow is 'correct' - there's just no way to get -190dB nulls consistently otherwise. However, I certainly bear in mind Jussi's earlier comment:

 

7 hours ago, Miska said:

P.S. Your method seems to have trouble keeping up with sub-sample delays with linear phase filters.

 

33 minutes ago, PeterSt said:

And if you are on to something, it is also OK (better actually - haha).

 

We'll see 🙂...

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
2 hours ago, PeterSt said:

For fun you could shift two of the exact same files (the file you originally used) by a few dozen or so samples (make a copy of the file and cut out a few dozen samples from the beginning out of one of them). Now look at the nulling result. I am not sure what to expect, but I guess we will learn something from it ...

 

0-sample shift

976153122_0sampleshift.thumb.JPG.7d86ae3a6a7a49237e665a09b73f0ea5.JPG

 

1-sample shift

410465033_1sampleshift.thumb.JPG.aa706e104fe0db6ce57022a269d580a1.JPG

 

12-sample shift

926477666_12sampleshift.thumb.JPG.77ea527ebdb05f8642ea6c01c2df95f4.JPG

 

(19-second segment with transients. Time flows vertically down 🙂.)

 

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

Haha, great !

I was actually interested in the -dB figure. And how that plot would look. Thus this one:

 

511552341_2.FIRvs.Original.thumb.jpg.9dfc996c4b5c0c2d62eae025125de994.jpg

 

(you got me totally confused with your vertical time axis - LOL)

Lush^3-e      Lush^2      Blaxius^2.5      Ethernet^3     HDMI^2     XLR^2

XXHighEnd (developer)

Phasure NOS1 24/768 Async USB DAC (manufacturer)

Phasure Mach III Audio PC with Linear PSU (manufacturer)

Orelino & Orelo MKII Speakers (designer/supplier)

Link to comment

Using the original music file (which is what I think you wanted?):

 

0-sample shift

1748296727_0sampleshift-RR24_176.4SourceFile.thumb.JPG.2aa610bcfd197857c900c1f4eebbc6a1.JPG

 

1-sample shift

119181676_1sampleshift-RR24_176.4SourceFile.thumb.JPG.8b7d7967c0290b193c8e8b82c5fb4349.JPG

 

12-sample shift

199056406_12sampleshift-RR24_176.4SourceFile.thumb.JPG.bc2f26edb2dd432e870fbd4268d495a8.JPG

 

Mani.

 

 

 

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
18 minutes ago, PeterSt said:

I was actually interested in the -dB figure. And how that plot would look.

 

You don't like my spectrographs?

 

Anyway, here you are (using the music file with transients):

 

0-sample shift

28614732_0sampleshift-NULL-Transients-24_44.1_sinc-Mto24_176.4_FIR-FFT.thumb.jpg.2dd032701eeed847bb7d6c7d584f9a95.jpg

 

1-sample shift

1264210416_1sampleshift-NULL-Transients-24_44.1_sinc-Mto24_176.4_FIR-FFT.thumb.jpg.5f761a574dd8d1905642c9cb55aaaac2.jpg

 

12-sample shift

224869321_12sampleshift-NULL-Transients-24_44.1_sinc-Mto24_176.4_FIR-FFT.thumb.jpg.70b7487524bfaab056a5a4b64d7166e6.jpg

 

Any insights?

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

Hey Mani - That does more to the difference than I expected. I am not sure yet that I will admit that. Haha.

 

More insights ? maybe not from me. But it looks like we're missing some data points. A question I'd have would be:

 

And why is the 1 sample as well as the 12 sample shift so nicely matching the line beyond 22.05 ? Wouldn't you expect the 1 sample shift to at least exhibit something of this ?:

 

image.png.29284d61c6f85043dd6dc0df3640dda4.png

 

Well, it does not. And this is still in the realm of that original which already emerged from ??? (I know, you created it yourself if you'd repeat this for pink noise, which I am not asking for !).

 

Maybe someone else is able to explain this one:

 

image.png.fcce5839c1f74c736a9c93e78cca2835.png

 

because I wouldn't know where this comes from, unless it would be music data related in some special way. All you did is shift by 12 samples, so why is everything nulling "half way" at that point ?

And how does what we now see relate to this one ?:

 

image.png.857dd7c2c680e61b7cd5bdae069448da.png

 

Contestant #1 does not have the answers.

But it will be in the area of the 16 bit file not being able to discern the often close to 24 bit resolution of the 12 sample shift. Or you applied the shift in the down-sampled file ? (that would not have been the idea).

Resolution in 24 bit is 256 times that of 16 bit.

 

 

PS: Sorry to have deviated so much from your original question, but many of such questions and means to support "theses" end up like this, right ?

 

Lush^3-e      Lush^2      Blaxius^2.5      Ethernet^3     HDMI^2     XLR^2

XXHighEnd (developer)

Phasure NOS1 24/768 Async USB DAC (manufacturer)

Phasure Mach III Audio PC with Linear PSU (manufacturer)

Orelino & Orelo MKII Speakers (designer/supplier)

Link to comment
1 hour ago, PeterSt said:

And why is the 1 sample as well as the 12 sample shift so nicely matching the line beyond 22.05 ?

 

They should!

 

Remember, this is the nulled file - the original 24/176.4 vs the down- and then up-sampled 24/176.4. During down-sampling, everything was lost above 22.05, so there is nothing above 22.05 in the up-sampled file either. It wouldn't matter by how many samples I shifted the resampled file, the null against the original wouldn't change above 22.05. That's how I see it anyway.

 

Answers to your other questions soon...

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
1 hour ago, PeterSt said:

Contestant #1 does not have the answers.

But it will be in the area of the 16 bit file not being able to discern the often close to 24 bit resolution of the 12 sample shift. Or you applied the shift in the down-sampled file ? (that would not have been the idea).

Resolution in 24 bit is 256 times that of 16 bit

 

Nah. The original and down-sampled files are 24-bit. The null file is 32-bit.

 

This is what I think...

 

The signal can be transformed into a whole bunch of sine waves. We've shifted by 12 samples, which creates a null in the sine wave with a 12-sample wavelength. 176400/12 = 14700. The 'null' should sit at 14.7 kHz... which it does!

 

So we should expect any shift from 8 samples upwards to produce a 'null' somewhere (it has to be below 22.05 kHz). I'll check it...

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

And indeed, the 10-sample shift nulls exactly where we'd expect it:

 

137748621_NULL_10sampleshift-Transients-24_44.1_sinc-Mto24_176.4_FIR.thumb.jpg.d381a01d8ac3adfb9549e928109da841.jpg

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
2 hours ago, PeterSt said:

And how does what we now see relate to this one ?:

 

image.png.857dd7c2c680e61b7cd5bdae069448da.png

 

No relationship at all. One was created using the FIR filter and shifting samples in the resampled file in the null. This one was created using the poly-sinc-mp filter. Why the null sits where is does, I have no idea. Perhaps part of the 'minimum-phase' element of this filter? @Miska will obviously know, but whether he'd like to divulge it is another thing.

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

@PeterSt, you were questioning the validity of my workflow, and especially the nulling process.

 

I'm not sure how valid this is, but I decreased a single sample of the up-sampled file by 0.001dB (as low as I could go). Here's the spectrogram of how the up-sampled file now nulls against the original:

 

1433179884_1sampledecreaseby0.001dB-NULL-Transients-24_44.1_sinc-Mto24_176.4_FIR.thumb.jpg.61cbeb8b2e14cdf8042da2d4562ae90c.jpg

 

The spectrogram is measuring the new 'peak' as sitting at -160dB, though I wouldn't trust this entirely. But hopefully it gives an idea of the effectiveness of my nulling approach.

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
22 minutes ago, danadam said:

I think you get "only" -190dB because that is basically your limit. You use 24-bit files, which have noise floor at around -144dB and FFT processing lowers that by 10*log(M/2), where M is the number of points in the FFT. Are your spectrum using 65'536 points by any chance? That would give about 45dB and -144 - 45 = -189.

 

Yes, 65,536 points (0.73 Hz/bin). OK, that makes sense.

 

But I can get a perfect null:

 

509039252_0sampleshift-RR24_176.4SourceFile.thumb.JPG.ecb281b6d6df52bc82b3919e29aa0acf.JPG

 

So maybe it's a case of either a perfect null, as above, or a minimum of -189dB otherwise, as you've calculated?

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
3 hours ago, manisandher said:

The signal can be transformed into a whole bunch of sine waves. We've shifted by 12 samples, which creates a null in the sine wave with a 12-sample wavelength. 176400/12 = 14700. The 'null' should sit at 14.7 kHz... which it does!

 

Hats off ...

Lush^3-e      Lush^2      Blaxius^2.5      Ethernet^3     HDMI^2     XLR^2

XXHighEnd (developer)

Phasure NOS1 24/768 Async USB DAC (manufacturer)

Phasure Mach III Audio PC with Linear PSU (manufacturer)

Orelino & Orelo MKII Speakers (designer/supplier)

Link to comment
35 minutes ago, manisandher said:

So maybe it's a case of either a perfect null, as above, or a minimum of -189dB otherwise, as you've calculated?

Yes, when you null a file with itself then you essentially get -inf (negative infinity) difference.

 

You can try to convert your original file to 32 bit wav and do your procedure with that. You should get a difference at around -237dB, I believe (assuming 65'536 points FFT).

Link to comment
17 hours ago, Miska said:

You are constantly assuming that your source data is accurate representation of the source analog signal. Which is not the case with most modern ADCs.

 

15 hours ago, PeterSt said:

... This almost looks like "our filtering" can improve on the original as how you received it... snip...

 

It could be done though.

 

OK, this is the main purpose of this thread. One of the first questions I asked was:

 

"The humble FIR is essentially totally transparent from 0 to 19 kHz. So, what’s the point of using anything else?"

 

From another thread:

 

On 3/28/2020 at 4:45 PM, Miska said:

Apodizing filters[...] are designed to remove problems caused by decimation filters in ADC when the music has been recorded. So not altering the music signal in a negative way, but removing adverse alterations to it caused by earlier production stages, thus in a positive way.

 

I personally can't see how this could actually be achieved, but would love to learn more.

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
5 hours ago, manisandher said:

But I can get a perfect null:

 

When you do processing in HQPlayer, the processing will have more precision than for example 32-bit integer PCM. So you need to use for example TPDF dither to avoid truncation distortion. Your "null" (difference) will end up showing at least the dither...

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

Thanks.

 

Could you give us an idea of what sort of problems decimation filters during ADC can cause, and how they can be improved by certain interpolation filters during DAC?

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment
3 hours ago, yamamoto2002 said:

Concept of Apodization is introduced to audio by someone I can't remember now with astronomy background, where it is needed to separate dim star near the very bright star. There was an interview article somewhere on the internet or old audio magazine.

 

I swear it wasn't me! 😃 The benefit of apodizing filters in astronomy is to modify the effect of refraction around bright objects, such as stars. It helps redistribute the light energy from multiple diffraction rings around a star bringing them closer in, making the star profile sharper, less spread out. It's a great tool for separating close double-stars, but it does redistribute the light around bright objects (alters the amplitude profile), and so acts in a way similar to a contrast-increasing or a sharpening filter:

 

image.png.4c4964d960bf661e2f206c0ab2b227b3.png

Link to comment

Well it's been fun and games for the last few hours...

 

The original process was:

 

1. take a 24/176.4 file

2. down-sample to 24/44.1, using various HQPlayer filters

3. up-sample to 24/176.4, using various HQPlayer filters

4. null up-sampled file against original 24/176.4

 

With this process, the up-sampled files created almost perfect* nulls with the originals (within the filter ranges of around 0 to 19 kHz), which surprised me.

 

(* Not quite perfect, because my setup only resolves to -189dB, no matter what I try.)

 

Today, I've been going the other way, i.e.:

 

1. take a 24/44.1 file (or 24/88.2)

2. up-sample to 24/176.4 (or 24/352.8), using various HQPlayer filters

3. down-sample back to 24/44.1 (or 24/88.2), using various HQPlayer filters

4. null down-sampled file against original

 

With this process, the down-sampled files do not null with the original - in the case of pink noise, around -70dB. I've checked and re-checked a number of times. I've gone back to the original process, and it still works.

 

So finally, I tried this:

 

1. take a 24/44.1 file (or 24/88.2)

2. up-sample to 24/176.4 (or 24/352.8), using HQPlayer's FIR

3. down-sample back to 24/44.1 (or 24/88.2), using HQPlayer's FIR

4. up-sample again to 24/176.4 (or 24/352.8), using HQPlayer's FIR

4. null first up-sampled file against second up-sampled file

 

The files now null to -189dB again (within the expected range), just as they did in the original process.

 

So what's going on here? I suspect this has something to do with the originals (the music files I used, and the pink noise files I generated) having too much energy right up to Nyquist. This seems to upset the filters during up-sampling. (They don't seem to be bothered during down-sampling.) And I noticed that most of the HQP filters do attenuate well before Nyquist.

 

Can anyone throw some light as to what might be happening here?

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

Earlier, I posed this question (mainly to @Miska):

 

8 hours ago, manisandher said:

Could you give us an idea of what sort of problems decimation filters during ADC can cause, and how they can be improved by certain interpolation filters during DAC?

 

With my recent travails, might the issue be that a lot of music has too much content way too close to Nyquist, which makes things difficult for the reconstruction filter?

 

Mani.

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...