Jump to content
IGNORED

Time resolution of digital sampling


Don Hills

Recommended Posts

If someone cares to show me where in the Shannon or Nyquist proof of the theorem a "steady state" is required....

 

Again I'll say the question of the briefest audible transient may be different, and Kunchur et al. are different yet again, being occupied with minimum time difference before we no longer perceive simultaneity.

One never knows, do one? - Fats Waller

The fairest thing we can experience is the mysterious. It is the fundamental emotion which stands at the cradle of true art and true science. - Einstein

Computer, Audirvana -> optical Ethernet to Fitlet3 -> Fibbr Alpha Optical USB -> iFi NEO iDSD DAC -> Apollon Audio 1ET400A Mini (Purifi based) -> Vandersteen 3A Signature.

Link to comment

A visual representation of what I'm meaning. I did say that ringing will get worse, but I never said it'll ring for more time. The very act of a low pass in the first place would imply ringing till infinite time. You cannot ring for "more time" than infinite, however the ringing pattern will get "worse" every cycle of low passing.

 

Note: this is not showing any scenario of convolving sinc with my input, just a visualization to show how each additional convolution of a band limited sinc filter would smear the output response compared to one stage of sinc. Only for an infinite band sinc, can you keep convolving over and over and still be free of artefacts that don't grow with iteration. But that's because you're literally convolving with an effective infinite band signal.

 

I need to cross validate the frequency domain sinc formula for these particular signals, but visual representation holds true

 

Edit: I think I've done an extremely vague thing here. Give me some time, I'll try to derive and get it visualized properly.

IMG_20201001_103605__01__01.jpg

Link to comment
52 minutes ago, Jud said:

If someone cares to show me where in the Shannon or Nyquist proof of the theorem a "steady state" is required....

 

Again I'll say the question of the briefest audible transient may be different, and Kunchur et al. are different yet again, being occupied with minimum time difference before we no longer perceive simultaneity.

Transients, as such, are entities of their own. They don't fall within the band limit criteria. When you try to low pass them, they'll keep spurring out out of band signals. Hard to trace back the modulations once sampled.

 

52 minutes ago, Jud said:

 

 

Link to comment

In simpler words only a truly perodic function has an absolute frequency. And that would automatically imply only periodic signals in steady state condition. Any transient change from earlier cyclic flow would mean it's no longer truly periodic, and the point of disruption would be the most deviated. For anything else, your visualization of frequency vs time domain interpretations will clash into each other in terms of compromises.

 

Something I want to stress, don't get confused by looking at the leading edge of an infinite time periodic square wave thiking it conveys transients. You should look at the start of the pulse from inertial condition to truly analyse transients, meaning you should have it begin at 0 time or +ve time and analyse it's behavior at this time after applying a low pass. It doesn't even need to be a square, you can even have a 5khz sinusoid begining after say 5s, apply a sinc low pass, at say, 20khz and see the behavior around this 5s instance. Transient is a change of state, a change of flow : https://en.m.wikipedia.org/wiki/Transient_(oscillation) . Those squares (band limited or not) that repeat themselves for infinite time have a consistent flow.

 

Few more corrections, regarding what I posted two comments up. The time scale is in Units of window period (the points are -0.5*window period and +0.5*window period). I am extremely sorry for being vague over there, I was thinking of something, ended up not conveying it properly. I guess I need to relax and take some rest.

 

Just some few discussions at stack exchange to look at for the time being: https://dsp.stackexchange.com/questions/29901/special-case-band-limited-in-time-domain-and-band-limited-in-frequency-domain

Link to comment
1 hour ago, manueljenkin said:

A visual representation of what I'm meaning. I did say that ringing will get worse, but I never said it'll ring for more time. The very act of a low pass in the first place would imply ringing till infinite time. You cannot ring for "more time" than infinite, however the ringing pattern will get "worse" every cycle of low passing.

 

Note: this is not showing any scenario of convolving sinc with my input, just a visualization to show how each additional convolution of a band limited sinc filter would smear the output response compared to one stage of sinc. Only for an infinite band sinc, can you keep convolving over and over and still be free of artefacts that don't grow with iteration. But that's because you're literally convolving with an effective infinite band signal.

 

I need to cross validate the frequency domain sinc formula for these particular signals, but visual representation holds true

 

Edit: I think I've done an extremely vague thing here. Give me some time, I'll try to derive and get it visualized properly.

IMG_20201001_103605__01__01.jpg

Ok. I finally got around to putting it into words.

 

What do I do when I sample my signal? I convolve my input signal (t) with sinc filter. And then chop my resultant signal into samples. (Sample is at center of the window, with left and right having half window lengths).

 

What do I do when I reconstruct it as per Nyquist assumption? I convolve my samples (t) signal with sinc filter.

 

I have effectively convolved my overall original signal (time) twice with sinc filter. It's the equivalent of convolving sinc filter twice and then convolving with my input.

 

Quite simple. Now an ideal infinite band sinc filter, would have its fft corresponding to a an ideal rectangular pulse. Convolving in time domain is the same as multiplying in frequency domain. Multiplying the two ideal rectangular pulses would again return a rectangular pulse, and if I do ifft, I would get back my original sinc filter. Great!! No issues.

 

But in reality, we will need to use a band limited sinc filter. Now again, it's easier to visualize by multiplying than convolving the filter. So I take the frequency domain representation of this band limited sinc filter, and I multiply it with itself. The multiplied product is different from the original band limited frequency domain response. This means convolution of two band limited sincs don't return the original one. Every single iteration we are adding deviations!.

 

This works so great for truly periodic signals because the math would be cancelled out of all of these transient deviations. The leakage of window is repetitive across pulses so they cancel out. Not so when you have transients. Each stage smears the transients, the resultant being unpredictable, and throwing aliasing components. And if you have any sampling/chopping happening assuming ideal scenarios somewhere in this link, you're compounding the modulations to into unpredictable ways due to this aliasing.

 

Now I really need to get a break.

Link to comment
2 hours ago, manueljenkin said:

It doesn't even need to be a square, you can even have a 5khz sinusoid begining after say 5s, apply a sinc low pass, at say, 20khz and see the behavior around this 5s instance. Transient is a change of state, a change of flow

 

A bit of something else (with same underlying subject):

 

image.png.c5e549ba8b8074facb96cb1f3f9807cc.png

 

The normal filter only fully develops after in this case 63 samples (filter length). Thus where the original frequency has an immediate start (apart from the electrical pre-ringing), the filtered sound is sluggish.

And this has nothing to do now with the transients we talked about so far ...

Or has it ? Music is full with starts and stops of everything. Even flutes (sinus instrument) have a start.

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
10 minutes ago, PeterSt said:

 

A bit of something else (with same underlying subject):

 

image.png.c5e549ba8b8074facb96cb1f3f9807cc.png

 

The normal filter only fully develops after in this case 63 samples (filter length). Thus where the original frequency has an immediate start (apart from the electrical pre-ringing), the filtered sound is sluggish.

And this has nothing to do now with the transients we talked about so far ...

Or has it ? Music is full with starts and stops of everything. Even flutes (sinus instrument) have a start.

Yes this is related to the transients I'm talking about. Most of this would be coming from the reconstruction, though some would have also likely been a component of "smearing" due to low pass filtering during adc process. Adc process may exhibit smearing, or complex modulation or both (like those false sinusoids). I'm not sure if such scenarios can be perfectly recovered when sampled at low sample rates, lots of modulations baked in!!

 

If it were sampled at a higher rate with higher amount of bandwidth (cut off for low pass higher), and reproduced with the sinc filter for this higher frequency cut off, the smearing will reduce, from 63 pulses to something lesser. But it is still unlikely to be able to be void of other complex modulations. Hopefully the leakage from these aliasing components will "mostly" be concentrated at the edges of the fc, which would now be beyond audible range. There's still always that chance of aliasing seeping in in the audible band, when the leaking signals occupy those aliasing bands that correspond to audible band when folded.

Link to comment
2 hours ago, manueljenkin said:

Multiplying the two ideal rectangular pulses would again return a rectangular pulse, and if I do ifft, I would get back my original sinc filter. Great!! No issues.

 

The key is in the IFFT. I won't say more because you may come up with it in a better way than I can at this moment. One important hint though: I have a real time FFT running in an FPGA (a crazy job).

So much for your rest ... 😗

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

A transient of one sample at 1200Hz, 4 times upsampled, sinc filtered:

 

image.thumb.png.060ae3f4d23e80da22c034096d525876.png

 

Above you can already see how even at this slow rate (1200 times per second hence 0.8ms silence in between them) they start to run into each other which means the filter will soon choke. But what I wanted to show is this:

 

image.thumb.png.e53b4f24a6736403f6d1b610818f36c4.png

 

Look at the box at the mouse pointer and see where this actually is (in the middle between the two pulses).

Now people wanted "bit perfect" ? Hmm ... This is something like 10mVp-p !! (the not-bit-perfectness from XP was 1 bit dither).

So why on earth did I my best to make the DAC's inherent noise level at 30uVP-P ??

 

... And this is exactly why such a project really is that, and a system for it (or around it) also really is that - a consistent system.

The space between those two pulses should be dead silent. But it isn't and the filter is present "for ever". Apparently at least over the length of 0.8ms / 2 = 0.4ms.

Good bye to my R2R DAC which resolves 23.5bits. It is completely useless because the 10mV (on 2V) implies something like 12bits. 

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
18 minutes ago, PeterSt said:

 

The key is in the IFFT. I won't say more because you may come up with it in a better way than I can at this moment. One important hint though: I have a real time FFT running in an FPGA (a crazy job).

So much for your rest ... 😗

Try doing stft 😁 https://en.m.wikipedia.org/wiki/Short-time_Fourier_transform and play around with window lengths, overlaps etc!!

 

I'm mostly out of this discussion for now. I've got enough leads on how I should proceed further. Gonna read the other sampling methods, the non uniform ones and hybrids, their perks and pitfalls, slowly in my leisure time. For now I am back to working on digital noises. 😁 (Usb cables, transport and stuff, they are catching my interest more and more).

Link to comment
3 minutes ago, PeterSt said:

A transient of one sample at 1200Hz, 4 times upsampled, sinc filtered:

 

image.thumb.png.060ae3f4d23e80da22c034096d525876.png

 

Above you can already see how even at this slow rate (1200 times per second hence 0.8ms silence in between them) they start to run into each other which means the filter will soon choke. But what I wanted to show is this:

 

image.thumb.png.e53b4f24a6736403f6d1b610818f36c4.png

 

Look at the box at the mouse pointer and see where this actually is (in the middle between the two pulses).

Now people wanted "bit perfect" ? Hmm ... This is something like 10mVp-p !! (the not-bit-perfectness from XP was 1 bit dither).

So why on earth did I my best to make the DAC's inherent noise level at 30uVP-P ??

 

... And this is exactly why such a project really is that, and a system for it (or around it) also really is that - a consistent system.

The space between those two pulses should be dead silent. But it isn't and the filter is present "for ever". Apparently at least over the length of 0.8ms / 2 = 0.4ms.

Good bye to my R2R DAC which resolves 23.5bits. It is completely useless because the 10mV (on 2V) implies something like 12bits. 

This scenario is mostly fine imo. Not a super big issue. Atleast the distance between the pulse peaks are preserved. We don't know of that non silent sound in that space would be audible.

Link to comment
1 minute ago, manueljenkin said:

For now I am back to working on digital noises. 😁 (Usb cables, transport and stuff, they are catching my interest more and more).

 

Then we may meet again. I'm afraid my spent time on this equals that of Mr Kunchur. The difference could be that I/we have products for attacking most (if not all) of those areas, including USB cables (LOL) which he doesn't address, as it seems (he forgot to examine digital protocols and noise implications elsewhere, I think).

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

I'm starting my project just now after a year of collectively examining what is happening in the links. Hope it goes well.😁.

 

Off topic: 

In case you haven't read yet. @PeterSt

This is my write up. I'm sorry I didn't include xxhighend in it because I don't think my device would do justice to it. The same way I refrained from exploring hqplayer further since I can't try the oversamplers with my system. Also I was mostly concentrating only on free players. I have friends who own xxhe licence and they love it, and my conversation with you indicates me I'll love it too. I'll get back to you once my project is mostly done, could take your help on the oversamplers.

 

I have three usb cables - apogee groove stock cable, supra usb cable, and uptone uspcb and all of them sound wildly different in my setup. I would try the lush when I can afford it. But I refrain from comparing the cables further.

Link to comment
28 minutes ago, manueljenkin said:

This is my write up.

 

Ah, I never realized this was you. Back I read the first few posts and recall your thorough listening. Well done.

I also recall that I did not want to point out XXHighEnd because it would take you an century to explore it well. Btw, it is free if you can bear the Quits between 6 and 30 minutes. Its largest features will be blocked in Demo mode, though.

 

If you coincidentally have an XP machine, or something else which can still implement the first USB drivers which allowed 96KHz (I didn't try it myself since Vista), I'd have a 18/96 NOS DAC for you (costed 1800 euros back at the time - can go for 150 + shipping). It would allow for 4 times oversampling (requires two additional bits). I obtained it when I started to work on XXHighEnd so I could explicitly work on filters on to a NOS DAC. Your today's story ...

(and when that was done, I started with the NOS1 (R2R) DAC so all could be upsampled 8x and a few months later 16x)

 

You can send me a mail at sales phasure com if you want to proceed with that.

 

image.png.7e5550a8224529350392adda0d57d367.png

 

(apologies for the commercial, but I think it is for a good cause)

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
18 minutes ago, PeterSt said:

 

Ah, I never realized this was you. Back I read the first few posts and recall your thorough listening. Well done.

I also recall that I did not want to point out XXHighEnd because it would take you an century to explore it well. Btw, it is free if you can bear the Quits between 6 and 30 minutes. Its largest features will be blocked in Demo mode, though.

 

If you coincidentally have an XP machine, or something else which can still implement the first USB drivers which allowed 96KHz (I didn't try it myself since Vista), I'd have a 18/96 NOS DAC for you (costed 1800 euros back at the time - can go for 150 + shipping). It would allow for 4 times oversampling (requires two additional bits). I obtained it when I started to work on XXHighEnd so I could explicitly work on filters on to a NOS DAC. Your today's story ...

(and when that was done, I started with the NOS1 (R2R) DAC so all could be upsampled 8x and a few months later 16x)

 

You can send me a mail at sales phasure com if you want to proceed with that.

 

image.png.7e5550a8224529350392adda0d57d367.png

 

(apologies for the commercial, but I think it is for a good cause)

Thank you for the offer. I would be interested to explore, but only after I finish my current project in hand. Till then I want to be focused, no distractions. I'll let you know when I'm done, might take 1-2 months at the least. Also I'm a bit tight on budget, so it is unlikely I'll make any purchase soon. Hope you understand.

 

I'll try xxhe demo when I have free time but don't expect a review from me anytime soon because of reasons I've mentioned. My intention would be to show everything I try at its best settings/performance, which is why I also added remarks on my roon/jriver opinions that it is likely to work much better on a network setup.

Link to comment
6 minutes ago, manueljenkin said:

don't expect a review from me anytime soon

 

Manuel, I really don't need any review, so no worries.

This is not for this thread either, so I like to stop this "XX" subject (you can proceed in the other thread - haha).

Thanks !

 

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
11 hours ago, Jud said:

Again I'll say the question of the briefest audible transient may be different, and Kunchur et al. are different yet again, being occupied with minimum time difference before we no longer perceive simultaneity.

I forgot this part. Yes! the duration of the briefest audible transient, the time difference between 2 separate signals, the temporal resolution of RBCD, and the duration of 1 sample are all times, but 4 different ones. The 10µs (or 5µs) difference between 2 signals is what the auditory system can distinguish at its best, and can be represented by 16/44.1 just fine.

Link to comment

The best way to think of transients would be to use any periodic signal (steady state) and convolve it over a heaviside (or unit step) function. For better visualization, delay the heaviside function by maybe some x seconds.

 

First lets take some periodic function, say a sine of 5khz. Find it's ft (Fourier transform). Now let's take ft of the sinc low pass. It is a rectangular function between -w0 and +w0. Multiply the two functions take ift and see, and you'll get back the original fft of 5khz since since it is completely band limited. Taking ift will return back the 5khz function. If there was a phase shift it'll be present in ft of 5khz and that shall also be retrieved effectively.

 

Now let's keep that periodic signal aside, and analyse the heaviside function and the low pass, because that's where the transients lie. Take ft of heaviside function (I don't know how you'd do this though), multiply with ft of sinc function. Now things break loose. If I multiply this with ft of sine, only at time = + infinity would my output be sine of the same amplitude again. If doing in frequency domain is hard, just try convolving with sinc. Convolution of sinc over heaviside function will ring to -infinity time.

Link to comment
56 minutes ago, manueljenkin said:

The best way to think of transients would be to use any periodic signal (steady state) and convolve it over a heaviside (or unit step) function. For better visualization, delay the heaviside function by maybe some x seconds.

 

First lets take some periodic function, say a sine of 5khz. Find it's ft (Fourier transform). Now let's take ft of the sinc low pass. It is a rectangular function between -w0 and +w0. Multiply the two functions take ift and see, and you'll get back the original fft of 5khz since since it is completely band limited. Taking ift will return back the 5khz function. If there was a phase shift it'll be present in ft of 5khz and that shall also be retrieved effectively.

 

Now let's keep that periodic signal aside, and analyse the heaviside function and the low pass, because that's where the transients lie. Take ft of heaviside function (I don't know how you'd do this though), multiply with ft of sinc function. Now things break loose. If I multiply this with ft of sine, only at time = + infinity would my output be sine of the same amplitude again. If doing in frequency domain is hard, just try convolving with sinc. Convolution of sinc over heaviside function will ring to -infinity time.

Try looking at how the time instance where heaviside function steps up behaves after convolving with sinc. Check if it is still within band limits around these areas. 😁. You'll get your answer to why Nyquist-Shannon sampling isn't optimal for transient instances. And definitely not that super optimistic timing precision formula which works only when I have a repeating cycle of steady state signals (paragraph 2). The time precision for such steady state signals is actually infinite, only the bit depth is limiting it there. But sadly only for steady state truly periodic signals, not for real sounds. It is much worser and you just get modulations instead generally (paragraph 3). Granted heaviside function is the best showcase of transients, and real world transients might be somewhat slower (but definitely not within 20khz limits).

 

Also note, for the heaviside function, why it doesn't have a unique "frequency". If I window it just before and after the transition, it's frequency would be shown as infinite because within 0 time there is a transistion. If I increase my window size the frequency visualized would keep reducing. There is only one instance, not a periodically repeating signal, so it doesn't have a unique "frequency" for it. It's a transient, that's how it be treated. It's not quite the same as impulse either. Impulse is a limit time tending to 0 condition of a rectangular pulse (amplitude tends to move up, to get the product finite, so it's not even directly relatable to a rectangular pulse 😅). These functions return back to 0. Heaviside function doesn't, it stays up.

Link to comment
59 minutes ago, SoundAndMotion said:

I forgot this part. Yes! the duration of the briefest audible transient, the time difference between 2 separate signals, the temporal resolution of RBCD, and the duration of 1 sample are all times, but 4 different ones. The 10µs (or 5µs) difference between 2 signals is what the auditory system can distinguish at its best, and can be represented by 16/44.1 just fine.

Only for steady state signals. Transients are much worse, and you can enter aliasing/modulation territory.

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...