PeterSt Posted October 12, 2020 Share Posted October 12, 2020 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 Hi Peter, 34 minutes ago, PeterSt said: 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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 1-sample shift 12-sample shift (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
PeterSt Posted October 12, 2020 Share Posted October 12, 2020 Haha, great ! I was actually interested in the -dB figure. And how that plot would look. Thus this one: (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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 Using the original music file (which is what I think you wanted?): 0-sample shift 1-sample shift 12-sample shift 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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 1-sample shift 12-sample shift 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
PeterSt Posted October 12, 2020 Share Posted October 12, 2020 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 ?: 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: 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 ?: 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 And indeed, the 10-sample shift nulls exactly where we'd expect 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 2 hours ago, PeterSt said: And how does what we now see relate to this one ?: 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 @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: 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
Popular Post danadam Posted October 12, 2020 Popular Post Share Posted October 12, 2020 10 hours ago, manisandher said: Is this why I'm getting a null of 'only' -190dB with the linear phase filters? 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. manisandher and mitchco 1 1 Link to comment
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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: 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
PeterSt Posted October 12, 2020 Share Posted October 12, 2020 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
danadam Posted October 12, 2020 Share Posted October 12, 2020 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
manisandher Posted October 12, 2020 Author Share Posted October 12, 2020 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
Miska Posted October 12, 2020 Share Posted October 12, 2020 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
manisandher Posted October 13, 2020 Author Share Posted October 13, 2020 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
Popular Post yamamoto2002 Posted October 13, 2020 Popular Post Share Posted October 13, 2020 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. pkane2001 and manisandher 1 1 Sunday programmer since 1985 Developer of PlayPcmWin Link to comment
Popular Post John Dyson Posted October 13, 2020 Popular Post Share Posted October 13, 2020 13 hours ago, manisandher said: 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: I personally can't see how this could actually be achieved, but would love to learn more. Mani. I wanna clarify something here -- an 'FIR' filter is an implementation method for all kinds of filter functions, just like IIR filters can do certain kinds of other filter functions very efficiently. When saying that a 0 to 19kHz FIR filter can be transparent, that means a 0 to 19kHz Linear Phase FIR filter. There are even variants of Linear phase FIR filters, where the frequency response curve has different in band and skirt reponses -- lets leave this subject for later on. When you have a filter that is not linear phase, that means that there will be different time delays vs frequency -- which means that there will be a change in the time of arrival to your hearing, based upon whether it is a 'tinkle' or a 'boom' (different frequencies). The difference in delay between a 'tinkle' and 'boom' isn't all that important, but where you get variations in sound character is -- for example, a percussive hit, and then the subsequent crash of a cymbals or the tone character of a piano. For best transparency, you don't want differences in the delays, but sometimes people prefer the distortions in the arrival of the sound elements. Sometimes, people perceive certain controlled distortions as sounding better. On the other hand, I prefer to use constant delay filters because it is much easier to match up the various filter outputs vs. time. Lining up the outputs of multiple traditional analog emulating filters can be mindboggling, but sometimes it has to be done(there are often better ways of doing the filtering than just summing the outputs though.) I like Linear phase filters -- they make my work as a developer VERY EASY. OTOH -- there are cases where a specific time delay is needed, and there are filters and combinations of filters that can produce the time delays (e.g. speaker EQ.) For simple, utilitarian Nyquist filtering, or when you just want a 'sharp rolloff', a linear phase FIR filter isn't the cheapest (they can require more CPU/resources than an IIR or not-linear-phase), but they do a good job. Think of a filter being 'linear phase' as a constraint beyond just frequency response alone for a filter characteristic. If you don't have the 'linear phase' constraint, then various other tradeoffs can be made, where maybe the filter can be perhaps shorter, or maybe another constraint of a very specific time delay (varying phase) might be needed. More precision constraints often means 'more taps' or 'more resources'. John yamamoto2002, pkane2001 and manisandher 2 1 Link to comment
pkane2001 Posted October 13, 2020 Share Posted October 13, 2020 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: manisandher 1 -Paul DeltaWave, DISTORT, Earful, PKHarmonic, new: Multitone Analyzer Link to comment
manisandher Posted October 13, 2020 Author Share Posted October 13, 2020 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
manisandher Posted October 13, 2020 Author Share Posted October 13, 2020 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now