Miska Posted October 12, 2020 Share Posted October 12, 2020 5 hours ago, manisandher said: 1. The ‘minimum-phase’, ‘minimum-ringing’ and ‘non-ringing’ filters are clearly not transparent in the audio band. So, what's the point of using them? 2. The humble FIR is essentially totally transparent from 0 to 19 kHz. So, what’s the point of using anything else? You are oversimplifying it, to begin with assuming that your source data is "transparent" to the original analog signal without needing fixing... Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 12, 2020 Share Posted October 12, 2020 3 hours ago, manisandher said: But a -190dB null suggests that the difference between the resampled file and the original is 0.000001dB (I think) in the audio band. And bear in mind that the resampled file has been through both an anti-alias and a reconstruction filter. sinc-S, sinc-M and poly-sinc-ext2, and poly-sinc-xtr have about -240 dB stop-band attenuation. But since this exceeds resolution of 32-bit PCM you cannot get more out of HQPlayer as PCM. 3 hours ago, manisandher said: OK, not quite perfect. But orders of magnitude more accurate to the original file than any of the 'minimum-phase', 'minimum-ringing' and 'non-ringing' filters. First define "accurate"... ;) 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. The minimum phase variants have exactly same attenuation and response as the linear phase ones. P.S. Your method seems to have trouble keeping up with sub-sample delays with linear phase filters. asdf1000 1 Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers 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
Popular Post Miska Posted October 13, 2020 Popular Post Share Posted October 13, 2020 3 hours ago, manisandher said: Earlier, I posed this question (mainly to @Miska): 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? Lot of music, especially new stuff is recorded with a "half-band" anti-alias / decimation filter, leaving aliasing band at the top of the spectrum. This creates high frequency hash that has sonic impact. In addition, these filters will leave their fingerprint to the data in other ways as well. Something I've posted earlier (two years ago) about the topic... Example of DSOTM original CD release: And then latest remaster CD version: And zoom-in of the remaster: You can see that the original is relatively clean in this respect, while the latest remaster release is not. So those "remasters" are not always necessarily better. Although the remaster can be fixed. This is not a problem for such hires material where filter transitions beyond highest content frequencies. Which is not at all always the case for hires, but sometimes it is. In any case it is of lesser problem for hires because the problems are higher up in frequency domain and thus also shorter in time domain. For DSD content this is generally not a problem at all if it was recorded in DSD/DXD, but it is especially a problem for 1x PCM rates. My apodizing filters are designed to deal with these problems, cleaning up the aliasing hash and replacing/removing the decimation filter's fingerprint. These are naturally some of the many aspects of upsampling filters. yamamoto2002 and manisandher 1 1 Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 13, 2020 Share Posted October 13, 2020 7 minutes ago, manisandher said: When I go from 176.4 to 44.1 to 176.4, I can get a nice null below 20 kHz or so. But using exactly the same filters, when I go from 44.1 to 176.4 to 44.1, I don't. Is is because in the former case that decimation filter has already cleaned things up ready for the interpolation filter? How are you doing the nulls in first place? Taking possible sub-sample delays into account? Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 13, 2020 Share Posted October 13, 2020 1 hour ago, manisandher said: Capturing the output from HQP (resampled twice) and then simply aligning it with the original in Audacity. That won't work for many cases... Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 14, 2020 Share Posted October 14, 2020 5 hours ago, Steve B said: I think pkane2001's DeltaWave null comparator should take care of sub sample delay. Have you tried that? It's a wonderful program. Yes, that should likely do it. I have not used it myself, but I would assume it does the right thing, or at least gets closer. Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 3 hours ago, manisandher said: I've had a chance to play around with Deltawave now, and it's fantastic! Especially seeing as it's corroborated my initial findings 🙂. Apart from being out by a single sample on a couple, my original plots were bang on (Deltawave plots in inset). Some of the results are still looking somewhat wrong. What are you using for downsampling in the cases where the same filter cannot be used for that? So what is the conversion to the other direction and what is the entire process? Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 Overall the differences are: minringFIR-lp is very short and has some amount of pass-band ripple in pass-band frequency response. This is also actually what you get with DAC chip filters too. polynomial-2 behaves somewhat better than a NOS DAC, but still has some frequency response roll-off towards high frequencies. This makes the pass-band difference. IIR and other minimum-phase filters have modified phase response, so the null reflects the difference between minimum phase and linear phase responses. You could actually revert the process in second processing round and get the same result as with a linear phase version. manisandher 1 Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 3 hours ago, manisandher said: 1. 24/176.4 (original) to 24/44.1_sinc-M to 24/176.4_FUT* -> null against original I used sinc-M for the downsample stage in all cases here, as I wanted as much HF content preserved in the downsampled file as possible. This process produces the nulls shown above. 2. 24/44.1 (original) to 24/176.2_FUT* to 24/44.1_sinc-M -> null against original That explains part of it, since sinc-M is still apodizing filter, giving somewhat wrong result with for example minringFIR or any other half-band filter. In fact you cannot have a correct result with this type of test with half-band filters. poly-sinc-xtr-lp could get you a little closer. 3 hours ago, manisandher said: With this process, I can't get anywhere near a null with any of the HQP filters. As I mentioned in an earlier post, the 24/44.1 original files I used (both pink noise and music) have a lot of content right up to 22.05 kHz. (The Audacity filter happily nulls to <-200dB in the pass band with these files.) That just gives incorrect results with something like minringFIR-lp or polynomial near Nyquist of the lower rate. Because pass-band comes from the other filter. Anyway, for linear phase filters (minringFIR-lp and polynomial, although polyomial is not even a filter but instead interpolator) the non-perfect nulls are due to frequency response difference (amplitude vs frequency). These are more like side-effects of those filters due to other (time domain) design goals. For minimum phase filters the non-perfect null being due to minimum-phase response which is totally intended side effect. So two different reasons. manisandher 1 Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 3 hours ago, John Dyson said: 2) Actual music. someone took the care to provide wide bandwidth to the consumer. 3) Distortion products as created by signal processing (of any type.) (2) would be combined with (3), aliasing in this case always. Because you cannot have a decimation filter that passes content exactly up to Nyquist frequency while not aliasing at all. Modern ADC decimation filters go flat or almost up Nyquist and stop-band begins only after 0.5 frequency. Meaning you can see the amount of this high frequency hash they have from the 0.5 to beginning of stop-band response. So if the stop-band starts at 0.55, then 10% of the bandwidth will have this distortion. In addition they have typically fairly small stop-band attenuation of 120 dB, so they will also reach at max about 20-bit resolution. Same goes for DAC chip filters too. On DAC side you can find even lower figures though. Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 20 minutes ago, John Dyson said: I agree 100% that on digital material, the various artifacts can become noticeable - but it is the noise modulation that I see most often. I'm not seeing noise modulation because the sources are newly recorded straight with ADC and of course no Dolby or similar involved. From spectrum analysis you can see it is the signal plus it's aliasing products, since typically the content will hit the Nyquist of RedBook pretty hard. 22 minutes ago, John Dyson said: but the NR/dynamics processing noise modulation is strongly prominent on material recorded/sourced with analog tape I don't think there is so much new material recorded within last ten years on analog tape... Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 4 minutes ago, John Dyson said: If the aliasing products on new stuff are as bad as the hiss modulation, then there is some really ham handed design going on. It is pretty bad, but of course not as bad as almost all content driven heavily into digital clipping thanks to loudness wars. Of course another source of hiss modulation you now get is MQA... In any case, if the source is proper, no harm is done with apodizing filters. If the source content is not proper, apodizing filters can help fixing various issues... Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 2 hours ago, manisandher said: So should I expect to get a null with the following: 24/44.1 (original) to 24/176.4_non-apodizing-lp to 24/44.1_non-apodizing-lp ? No, you are going to wrong direction. I'm not sure what you are looking for. You will just get different kind of errors. But for down conversion step with half-band filters you may get better results with poly-sinc-xtr-lp. minringFIR is a half-band filter and there's no way you can get correct result with such if you do upsample with such, followed by downsample. I can understand this can be sort of fun exercise if you know how to interpret the results and also want to assume the source data you begin with is correct in respect to analog signal that entered ADC to begin with, assuming your ADC analog and digital filters, and production chain is perfect. For me the more interesting are the many cases where that is not the case. In such case fixing the problems obviously requires also changing the signal. In addition, what your test doesn't look at all is what comes (or doesn't) come out of the upsampling filter beyond Nyquist of the source, because on down-conversion you are removing all that again. Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 2 hours ago, John Dyson said: What FA means, if used with an un-normalized MQA recording, is that the noise from MQA might be at least partially removable. Remember that MQA adds it's noise shaped scrambled mess at the final encoding stage, so it will just mess all the other stuff that is there. So it is just a process that adds random looking shaped noise. I've just designed an upsampling filter to clean that up. It also works very well on hires recordings that have either hiss or just noise-shaping noise left overs from the ADC. Since >= 176.4k PCM output of most ADCs look just like DSD128 converted to PCM. Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 8 hours ago, manisandher said: Everything remains pure D-to-D in both processes. By the way, your captures are 24-bit, not 32-bit? Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 For example here's digital filter response for AK5572 ADC chip at 48k sampling rate: This a typical on-chip half-band filter. You can see the filter transitions between 24 and 28 kHz. Meaning it will have 4 kHz wide aliasing band, thus between 20 kHz and 24 kHz. Signals above 28 kHz are attenuated 85 dB, so it is fully accurate in pass-band to about 14.5 bit resolution. Good example of modern ADC that needs some fixing at playback stage. This filter would look somewhat similar to minringFIR-lp in the null test, but since the pass-band and stop-band ripple is flat throughout the frequency band it would have higher and horizontal pass-band difference at about -100 dB, unlike minringFIR-lp where it is mostly close to Nyquist: Slope here follows the increasing pass-band ripple. The step at the end is from the sinc-M filter: Quote While if we look at frequency response: And pass-band ripple: Of sinc-M filter it is all totally different. I actually got bored zooming in the pass-band ripple plot at that point, it being less than 0.00000000001 dB. Now the question is if the latter is "perfect"? Or if the truth is somewhere in the middle? I personally don't use either one of the two. If you use minringFIR-mp (non-apodizing) or poly-sinc-mqa-mp (apodizing) filter, you get something that is closer to what MQA says. And if you use sinc-M (apodizing) or sinc-L (non-apodizing) you get something that is closer (or actually beyond) what Chord says (since sinc-M has way more attenuation than the Chord filter). My personal take is that they are both partially right, but just rule out the other argument. But also different people are particularly sensitive to different aspects, so there's not even one right answer to this. That is why I prefer to offer various different approaches. It is also educating because you can switch while keeping everything else the same. What you cannot do much about is the source content. So for that, we need to come up with various ways of dealing with it's inherent baked-in properties. P.S. You can also compare yourself whom you think is more correct. For me, sinc-S is sort of "sinc-sane" version, and poly-sinc-ext2 and poly-sinc-short-mp do the rest. Depending on source content. yamamoto2002 1 Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers Link to comment
Miska Posted October 15, 2020 Share Posted October 15, 2020 53 minutes ago, manisandher said: Captures are 24-bit and the nulls are 32-bit. I tried 32-bit captures, but they didn't seem to improve my nulls, so I just assumed HQPlayer must be outputting 24 bits. Also, using dither worsened the nulls ever-so-slightly. If HQPlayer detects that target device is 24-bit, or looks like S/PDIF or AES/EBU or similar max 24-bit device, it enforces limit at 24-bit. You cannot get past the detected maximum resolution with the settings. 45 minutes ago, manisandher said: It was interesting hearing the effects various filters had on the sound. I then wondered if I could null the upsampled redbook against the hires to determine which filter was actually the most accurate, and whether this correlated with what I was hearing. Yes, it is all valid. The nulling just gives one kind of answer. You need to note here that the algorithm used for the RedBook conversion matters (that's one reason HQPlayer Pro exists). Same way as the ADC filter matters too. And then later also the upsampling algorithm matters. Signalyst - Developer of HQPlayer Pulse & Fidelity - Software Defined Amplifiers 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