Re: [music-dsp] Clock drift and compensation
Hi GM, My application is to capture an analog sine tone through PC sound card and check for discontinuity, glitch, audio gap, attenuation etc. Please suggest any other reliable methods for this analysis. -ben From: music-dsp-boun...@music.columbia.edu on behalf of gm Sent: Saturday, March 10, 2018 1:20 AM To: music-dsp@music.columbia.edu Subject: Re: [music-dsp] Clock drift and compensation The problem I see is that your sine wave needs to have a precise amplitude for the arcsine. I don't understand your application so I don't know if this is the case. Am 09.03.2018 um 19:58 schrieb Benny Alexandar: Hi GM, Instead of finding Hilbert transform, I tried with just finding the angle between samples of a fixed frequency sine wave. I tried to create a sine wave of frequency x[n] = sin ( 2 * pi * 1/4 * n), and tried calculating the angle between samples, it should be 90 degree. This also can be used to detect any discontinuity in the signal. Below is the octave code which I tried. One cycle of sine wave consists of 4 samples, two +ve and two -ve. % generate the sine wave of frequency 1/4 for i = 1 : 20 x(i) = sin( 2 * pi * ( 1 / 4) * i); end % find the angle between samples in degrees. for i = 1:20 ang(i) = asin( x(i) ) * (180 / pi); end % find the absolute difference between angles for i = 1:20 diff(i) = abs( ang( i + 1 ) - ang( i )); end % check for discontinuity for i = 1:20 if (diff(i) != 90) disp("discontinuity") endif end Please verify this logic is correct for discontinuity check. -ben From: music-dsp-boun...@music.columbia.edu<mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu> on behalf of gm <mailto:g...@voxangelica.net> Sent: Monday, January 29, 2018 1:29 AM To: music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> Subject: Re: [music-dsp] Clock drift and compensation diff gives you the phase step per sample, basically the frequency. However the phase will jump back to zero periodically when the phase exceeds 360° (when it wraps around) in this case diff will get you a wrong result. So you need to "unwrap" the phase or the phase difference, for example: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi or similar. Am 28.01.2018 um 17:19 schrieb Benny Alexandar: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben From: music-dsp-boun...@music.columbia.edu<mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu> on behalf of gm <mailto:g...@voxangelica.net> Sent: Saturday, January 27, 2018 5:20 PM To: music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> Subject: Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Hi ben You don't need to evaluate the asin() - it's piecewise monotonic and symmetrical, so you can get the same comparison directly in the signal domain. Specifically, notice that x(n) = sin(2*pi*(1/4)*n) = [...0,1,0,-1,...]. So you get the same result just by checking ( abs( x[n] - x[n-1] ) == 1 ) Ethan On Fri, Mar 9, 2018 at 10:58 AM, Benny Alexandar wrote: > Hi GM, > Instead of finding Hilbert transform, I tried with just finding the angle > between samples > of a fixed frequency sine wave. > I tried to create a sine wave of frequency x[n] = sin ( 2 * pi * 1/4 * > n), and tried calculating the angle between samples, > it should be 90 degree. This also can be used to detect any discontinuity > in the signal. > Below is the octave code which I tried. > > One cycle of sine wave consists of 4 samples, two +ve and two -ve. > > % generate the sine wave of frequency 1/4 > for i = 1 : 20 >x(i) = sin( 2 * pi * ( 1 / 4) * i); > end > > % find the angle between samples in degrees. > for i = 1:20 > ang(i) = asin( x(i) ) * (180 / pi); > end > > % find the absolute difference between angles > for i = 1:20 > diff(i) = abs( ang( i + 1 ) - ang( i )); > end > > % check for discontinuity > for i = 1:20 > if (diff(i) != 90) > disp("discontinuity") > endif > end > > > Please verify this logic is correct for discontinuity check. > > -ben > > > > -- > *From:* music-dsp-boun...@music.columbia.edu columbia.edu> on behalf of gm > *Sent:* Monday, January 29, 2018 1:29 AM > > *To:* music-dsp@music.columbia.edu > *Subject:* Re: [music-dsp] Clock drift and compensation > > > diff gives you the phase step per sample, > basically the frequency. > > However the phase will jump back to zero periodically when the phase > exceeds 360° > (when it wraps around) in this case diff will get you a wrong result. > > So you need to "unwrap" the phase or the phase difference, for example: > > > diff = phase_new - phase_old > if phase_old > Pi and phase_new < Pi then diff += 2Pi > > or similar. > > Am 28.01.2018 um 17:19 schrieb Benny Alexandar: > > Hi GM, > > >> HT -> Atan2 -> differenciate -> unwrap > Could you please explain how to find the drift using HT, > > HT -> gives real(I) & imaginary (Q) components of real signal > Atan2 -> the phase of an I Q signal > diff-> gives what ? > unwrap ? > > -ben > > > -- > *From:* music-dsp-boun...@music.columbia.edu columbia.edu> on behalf of gm > > *Sent:* Saturday, January 27, 2018 5:20 PM > *To:* music-dsp@music.columbia.edu > *Subject:* Re: [music-dsp] Clock drift and compensation > > > I don't understand your project at all so not sure if this is helpful, > probably not, > but you can calculate the drift or instantanous frequency of a sine wave > on a per sample basis > using a Hilbert transform > HT -> Atan2 -> differenciate -> unwrap > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > > > > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
The problem I see is that your sine wave needs to have a precise amplitude for the arcsine. I don't understand your application so I don't know if this is the case. Am 09.03.2018 um 19:58 schrieb Benny Alexandar: Hi GM, Instead of finding Hilbert transform, I tried with just finding the angle between samples of a fixed frequency sine wave. I tried to create a sine wave of frequency x[n] = sin ( 2 * pi * 1/4 * n), and tried calculating the angle between samples, it should be 90 degree. This also can be used to detect any discontinuity in the signal. Below is the octave code which I tried. One cycle of sine wave consists of 4 samples, two +ve and two -ve. % generate the sine wave of frequency 1/4 for i = 1 : 20 x(i) = sin( 2 * pi * ( 1 / 4) * i); end % find the angle between samples in degrees. for i = 1:20 ang(i) = asin( x(i) ) * (180 / pi); end % find the absolute difference between angles for i = 1:20 diff(i) = abs( ang( i + 1 ) - ang( i )); end % check for discontinuity for i = 1:20 if (diff(i) != 90) disp("discontinuity") endif end Please verify this logic is correct for discontinuity check. -ben *From:* music-dsp-boun...@music.columbia.edu on behalf of gm *Sent:* Monday, January 29, 2018 1:29 AM *To:* music-dsp@music.columbia.edu *Subject:* Re: [music-dsp] Clock drift and compensation diff gives you the phase step per sample, basically the frequency. However the phase will jump back to zero periodically when the phase exceeds 360° (when it wraps around) in this case diff will get you a wrong result. So you need to "unwrap" the phase or the phase difference, for example: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi or similar. Am 28.01.2018 um 17:19 schrieb Benny Alexandar: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben *From:* music-dsp-boun...@music.columbia.edu <mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu> on behalf of gm <mailto:g...@voxangelica.net> *Sent:* Saturday, January 27, 2018 5:20 PM *To:* music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> *Subject:* Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Hi GM, Instead of finding Hilbert transform, I tried with just finding the angle between samples of a fixed frequency sine wave. I tried to create a sine wave of frequency x[n] = sin ( 2 * pi * 1/4 * n), and tried calculating the angle between samples, it should be 90 degree. This also can be used to detect any discontinuity in the signal. Below is the octave code which I tried. One cycle of sine wave consists of 4 samples, two +ve and two -ve. % generate the sine wave of frequency 1/4 for i = 1 : 20 x(i) = sin( 2 * pi * ( 1 / 4) * i); end % find the angle between samples in degrees. for i = 1:20 ang(i) = asin( x(i) ) * (180 / pi); end % find the absolute difference between angles for i = 1:20 diff(i) = abs( ang( i + 1 ) - ang( i )); end % check for discontinuity for i = 1:20 if (diff(i) != 90) disp("discontinuity") endif end Please verify this logic is correct for discontinuity check. -ben From: music-dsp-boun...@music.columbia.edu on behalf of gm Sent: Monday, January 29, 2018 1:29 AM To: music-dsp@music.columbia.edu Subject: Re: [music-dsp] Clock drift and compensation diff gives you the phase step per sample, basically the frequency. However the phase will jump back to zero periodically when the phase exceeds 360° (when it wraps around) in this case diff will get you a wrong result. So you need to "unwrap" the phase or the phase difference, for example: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi or similar. Am 28.01.2018 um 17:19 schrieb Benny Alexandar: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben From: music-dsp-boun...@music.columbia.edu<mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu> on behalf of gm <mailto:g...@voxangelica.net> Sent: Saturday, January 27, 2018 5:20 PM To: music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> Subject: Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
> On 05.02.2018|KW6, at 18:20, Benny Alexandar wrote: > > Hi Robert, > > Yes, I need to do ASRC, and the challenge is how to estimate the drift > and correct it. > > As I mentioned in the earlier attached figure, DSP is slave and tuner chip > feeds the baseband samples and is the master. > Now the question is where to do the timestamping for correctly estimate the > drift. > The system is an embedded platform having a tuner chip and DSP chip, both > have independent oscillators ( Xtal) for providing the clock. Not a very clever design. > So my question is how to timestamp the audio data. You don’t. > After channel decoder the compressed audio will have variable decoding times > based on audio content. So this is not a good place to timestamp as it is > very jittery. The most basic implementation would be using a buffering of the decoded audio (input tank) and a double buffer for the audio output (output tank). At every output request, you see how much input samples have been generated so far. If you average this over many output request, you have the sample rate ratio and you can compute a sample rate conversion. The SRC4193 form TI does it in hardware, the data sheet describes it a bit. Best, Steffan > > Suppose every digital radio transmission frame duration T seconds > corresponds to T seconds of audio, can I timestamp the > baseband RF IQ samples when it arrives at the DSP ? After demodulation and > audio decoder calculate the max delay it can > have for worst case scenarios, and add that as target delay before playing > out. Then while playing out each audio period > read the current time, the difference of current time - ( RF packet arrival > time + Target Delay) should be ideally zero, > if audio plays out at the same rate as transmission of audio,. > > -ben > > > From: music-dsp-boun...@music.columbia.edu > on behalf of robert bristow-johnson > > Sent: Monday, February 5, 2018 1:01 PM > To: music-dsp@music.columbia.edu > Subject: Re: [music-dsp] Clock drift and compensation > > > Ben, can you confirm that what you want to do is Asynchronous Sample > Rate Conversion (ASRC)? this is what Steffan is talking about and what > it looked like you were looking for in your first post. > > If ASRC is what you wanna do, that is a combination of the SRC task > (like what is done to a sound file when you change the sample rate of > it) and servo systems like you get in control theory, like what is done > in a phase-lock loop (like hurrying up or slowing down based on the > delay). If you wanna write your own code to do this, it's about those > two general DSP and digital control problems. you will need to be able > to read a fast system clock (like what profilers read) to do this really > well. > > r b-j > > On 1/28/18 1:16 PM, STEFFAN DIEDRICHSEN wrote: > > Actually, there are SRC chips available from Texas Instruments, just > > take look at their website. They don’t cost too much and are found in > > countless digital mixing consoles. > > > > Best, > > > > Steffan > > > > Von meinem iPhone gesendet > > > > > > > > Von meinem iPhone gesendet > > Am 28.01.2018 um 17:19 schrieb Benny Alexandar > <mailto:ben.a...@outlook.com <mailto:ben.a...@outlook.com>>>: > > > >> Hi GM, > >> > >> >> HT -> Atan2 -> differenciate -> unwrap > >> Could you please explain how to find the drift using HT, > >> > >> HT -> gives real(I) & imaginary (Q) components of real signal > >> Atan2 -> the phase of an I Q signal > >> diff-> gives what ? > >> unwrap ? > >> > >> -ben > >> > >> > >> > >> *From:* music-dsp-boun...@music.columbia.edu > >> <mailto:music-dsp-boun...@music.columbia.edu > >> <mailto:music-dsp-boun...@music.columbia.edu>> > >> >> <mailto:music-dsp-boun...@music.columbia.edu > >> <mailto:music-dsp-boun...@music.columbia.edu>>> on behalf of gm > >> mailto:g...@voxangelica.net > >> <mailto:g...@voxangelica.net>>> > >> *Sent:* Saturday, January 27, 2018 5:20 PM > >> *To:* music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu > >> <mailto:music-dsp@music.columbia.edu>> > >> *Subject:* Re: [music-dsp] Clock drift and compensation > >> > >> I don't understand your project at all so not sure if this is helpful, > >> probably not, > >> but you c
Re: [music-dsp] Clock drift and compensation
I've done a few different systems similar to what you're describing - a radio front-end tuner that generates baseband I & Q at audio rates that's then further processed by a DSP to extract true audio. Normally what I do is slave the DSP rate to the tuner audio rate. That's usually possible since the data from the tuner is in I2S format and my DSP's I2S port can act as a slave. All subsequent processing happens at rates derived from the tuner's sample rate, and the audio output DAC is also running at that rate. If your system architecture doesn't support running everything from the tuner's sample rate then you will need an ASRC as discussed earlier. Depending on which DSP you're using you may find that there is an ASRC co-processor already available. Many TI and ADI DSPs include this as an IP core you can access. Otherwise you'll have to code it up yourself. These aren't too hard to do - I have built them using a buffer depth measurement as the observable. Just maintain a short input buffer and servo techniques to keep the read pointer trailing the write pointer by a certain amount. Fairly simple polyphase resampling such as described by JOS works well and can maintain an SNR of 70dB or better which is often sufficient for radio applications where noise is generally pretty high anyway. Eric On 02/05/2018 10:20 AM, Benny Alexandar wrote: Hi Robert, Yes, I need to do ASRC, and the challenge is how to estimate the drift and correct it. As I mentioned in the earlier attached figure, DSP is slave and tuner chip feeds the baseband samples and is the master. Now the question is where to do the timestamping for correctly estimate the drift. The system is an embedded platform having a tuner chip and DSP chip, both have independent oscillators ( Xtal) for providing the clock. So my question is how to timestamp the audio data. After channel decoder the compressed audio will have variable decoding times based on audio content. So this is not a good place to timestamp as it is very jittery. Suppose every digital radio transmission frame duration T seconds corresponds to T seconds of audio, can I timestamp the baseband RF IQ samples when it arrives at the DSP ? After demodulation and audio decoder calculate the max delay it can have for worst case scenarios, and add that as target delay before playing out. Then while playing out each audio period read the current time, the difference of current time - ( RF packet arrival time + Target Delay) should be ideally zero, if audio plays out at the same rate as transmission of audio,. -ben ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Hi Robert, Yes, I need to do ASRC, and the challenge is how to estimate the drift and correct it. As I mentioned in the earlier attached figure, DSP is slave and tuner chip feeds the baseband samples and is the master. Now the question is where to do the timestamping for correctly estimate the drift. The system is an embedded platform having a tuner chip and DSP chip, both have independent oscillators ( Xtal) for providing the clock. So my question is how to timestamp the audio data. After channel decoder the compressed audio will have variable decoding times based on audio content. So this is not a good place to timestamp as it is very jittery. Suppose every digital radio transmission frame duration T seconds corresponds to T seconds of audio, can I timestamp the baseband RF IQ samples when it arrives at the DSP ? After demodulation and audio decoder calculate the max delay it can have for worst case scenarios, and add that as target delay before playing out. Then while playing out each audio period read the current time, the difference of current time - ( RF packet arrival time + Target Delay) should be ideally zero, if audio plays out at the same rate as transmission of audio,. -ben From: music-dsp-boun...@music.columbia.edu on behalf of robert bristow-johnson Sent: Monday, February 5, 2018 1:01 PM To: music-dsp@music.columbia.edu Subject: Re: [music-dsp] Clock drift and compensation Ben, can you confirm that what you want to do is Asynchronous Sample Rate Conversion (ASRC)? this is what Steffan is talking about and what it looked like you were looking for in your first post. If ASRC is what you wanna do, that is a combination of the SRC task (like what is done to a sound file when you change the sample rate of it) and servo systems like you get in control theory, like what is done in a phase-lock loop (like hurrying up or slowing down based on the delay). If you wanna write your own code to do this, it's about those two general DSP and digital control problems. you will need to be able to read a fast system clock (like what profilers read) to do this really well. r b-j On 1/28/18 1:16 PM, STEFFAN DIEDRICHSEN wrote: > Actually, there are SRC chips available from Texas Instruments, just > take look at their website. They don’t cost too much and are found in > countless digital mixing consoles. > > Best, > > Steffan > > Von meinem iPhone gesendet > > > > Von meinem iPhone gesendet > Am 28.01.2018 um 17:19 schrieb Benny Alexandar <mailto:ben.a...@outlook.com>>: > >> Hi GM, >> >> >> HT -> Atan2 -> differenciate -> unwrap >> Could you please explain how to find the drift using HT, >> >> HT -> gives real(I) & imaginary (Q) components of real signal >> Atan2 -> the phase of an I Q signal >> diff-> gives what ? >> unwrap ? >> >> -ben >> >> >> >> *From:* music-dsp-boun...@music.columbia.edu >> <mailto:music-dsp-boun...@music.columbia.edu> >> > <mailto:music-dsp-boun...@music.columbia.edu>> on behalf of gm >> mailto:g...@voxangelica.net>> >> *Sent:* Saturday, January 27, 2018 5:20 PM >> *To:* music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> >> *Subject:* Re: [music-dsp] Clock drift and compensation >> >> I don't understand your project at all so not sure if this is helpful, >> probably not, >> but you can calculate the drift or instantanous frequency of a sine wave >> on a per sample basis >> using a Hilbert transform >> HT -> Atan2 -> differenciate -> unwrap >> ___ >> dupswapdrop: music-dsp mailing list >> music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> >> https://lists.columbia.edu/mailman/listinfo/music-dsp >> >> ___ >> dupswapdrop: music-dsp mailing list >> music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> >> https://lists.columbia.edu/mailman/listinfo/music-dsp > > > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp -- r b-j r...@audioimagination.com "Imagination is more important than knowledge." ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Ben, can you confirm that what you want to do is Asynchronous Sample Rate Conversion (ASRC)? this is what Steffan is talking about and what it looked like you were looking for in your first post. If ASRC is what you wanna do, that is a combination of the SRC task (like what is done to a sound file when you change the sample rate of it) and servo systems like you get in control theory, like what is done in a phase-lock loop (like hurrying up or slowing down based on the delay). If you wanna write your own code to do this, it's about those two general DSP and digital control problems. you will need to be able to read a fast system clock (like what profilers read) to do this really well. r b-j On 1/28/18 1:16 PM, STEFFAN DIEDRICHSEN wrote: Actually, there are SRC chips available from Texas Instruments, just take look at their website. They don’t cost too much and are found in countless digital mixing consoles. Best, Steffan Von meinem iPhone gesendet Von meinem iPhone gesendet Am 28.01.2018 um 17:19 schrieb Benny Alexandar <mailto:ben.a...@outlook.com>>: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben *From:* music-dsp-boun...@music.columbia.edu <mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu>> on behalf of gm mailto:g...@voxangelica.net>> *Sent:* Saturday, January 27, 2018 5:20 PM *To:* music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> *Subject:* Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp -- r b-j r...@audioimagination.com "Imagination is more important than knowledge." ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
you have two unknowns, the frequency of the sampled signal and the difference in sample rate between sender and receiver. with no further information given, you can only assume one and determine the other based on it. On 01/29/2018 06:27 PM, Benny Alexandar wrote: Hi GM, Thanks for the suggestion. Yes, it should work for sine tone kind of signals. I have this doubt on sampling and drift. - Suppose transmitter is sampling a sine tone say (Fin) 1KHz at 8kHZ (Fs) sample rate. This means 8 samples should correspond to one cycle of 1 kHz. - Receiver is sampling at 7.999 kHz because of drift in crystal, but I'm thinking my receiver is having a sample rate of 8kHz and takes 8 samples for one cycle. which gives 999.875 Hz and not 1kHz. So, how to detect this drift and take only that many samples for the corresponding receiver sample rate. in this case 7.999 samples corresponds to 1 kHz. -ben *From:* music-dsp-boun...@music.columbia.edu on behalf of gm *Sent:* Monday, January 29, 2018 1:29 AM *To:* music-dsp@music.columbia.edu *Subject:* Re: [music-dsp] Clock drift and compensation diff gives you the phase step per sample, basically the frequency. However the phase will jump back to zero periodically when the phase exceeds 360° (when it wraps around) in this case diff will get you a wrong result. So you need to "unwrap" the phase or the phase difference, for example: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi or similar. Am 28.01.2018 um 17:19 schrieb Benny Alexandar: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben *From:* music-dsp-boun...@music.columbia.edu <mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu> on behalf of gm <mailto:g...@voxangelica.net> *Sent:* Saturday, January 27, 2018 5:20 PM *To:* music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> *Subject:* Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Hi GM, Thanks for the suggestion. Yes, it should work for sine tone kind of signals. I have this doubt on sampling and drift. - Suppose transmitter is sampling a sine tone say (Fin) 1KHz at 8kHZ (Fs) sample rate. This means 8 samples should correspond to one cycle of 1 kHz. - Receiver is sampling at 7.999 kHz because of drift in crystal, but I'm thinking my receiver is having a sample rate of 8kHz and takes 8 samples for one cycle. which gives 999.875 Hz and not 1kHz. So, how to detect this drift and take only that many samples for the corresponding receiver sample rate. in this case 7.999 samples corresponds to 1 kHz. -ben From: music-dsp-boun...@music.columbia.edu on behalf of gm Sent: Monday, January 29, 2018 1:29 AM To: music-dsp@music.columbia.edu Subject: Re: [music-dsp] Clock drift and compensation diff gives you the phase step per sample, basically the frequency. However the phase will jump back to zero periodically when the phase exceeds 360° (when it wraps around) in this case diff will get you a wrong result. So you need to "unwrap" the phase or the phase difference, for example: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi or similar. Am 28.01.2018 um 17:19 schrieb Benny Alexandar: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben From: music-dsp-boun...@music.columbia.edu<mailto:music-dsp-boun...@music.columbia.edu> <mailto:music-dsp-boun...@music.columbia.edu> on behalf of gm <mailto:g...@voxangelica.net> Sent: Saturday, January 27, 2018 5:20 PM To: music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> Subject: Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu<mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
diff gives you the phase step per sample, basically the frequency. However the phase will jump back to zero periodically when the phase exceeds 360° (when it wraps around) in this case diff will get you a wrong result. So you need to "unwrap" the phase or the phase difference, for example: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi or similar. Am 28.01.2018 um 17:19 schrieb Benny Alexandar: Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben *From:* music-dsp-boun...@music.columbia.edu on behalf of gm *Sent:* Saturday, January 27, 2018 5:20 PM *To:* music-dsp@music.columbia.edu *Subject:* Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Actually, there are SRC chips available from Texas Instruments, just take look at their website. They don’t cost too much and are found in countless digital mixing consoles. Best, Steffan Von meinem iPhone gesendet Von meinem iPhone gesendet > Am 28.01.2018 um 17:19 schrieb Benny Alexandar : > > Hi GM, > > >> HT -> Atan2 -> differenciate -> unwrap > Could you please explain how to find the drift using HT, > > HT -> gives real(I) & imaginary (Q) components of real signal > Atan2 -> the phase of an I Q signal > diff-> gives what ? > unwrap ? > > -ben > > > From: music-dsp-boun...@music.columbia.edu > on behalf of gm > Sent: Saturday, January 27, 2018 5:20 PM > To: music-dsp@music.columbia.edu > Subject: Re: [music-dsp] Clock drift and compensation > > > I don't understand your project at all so not sure if this is helpful, > probably not, > but you can calculate the drift or instantanous frequency of a sine wave > on a per sample basis > using a Hilbert transform > HT -> Atan2 -> differenciate -> unwrap > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Hi GM, >> HT -> Atan2 -> differenciate -> unwrap Could you please explain how to find the drift using HT, HT -> gives real(I) & imaginary (Q) components of real signal Atan2 -> the phase of an I Q signal diff-> gives what ? unwrap ? -ben From: music-dsp-boun...@music.columbia.edu on behalf of gm Sent: Saturday, January 27, 2018 5:20 PM To: music-dsp@music.columbia.edu Subject: Re: [music-dsp] Clock drift and compensation I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
I don't understand your project at all so not sure if this is helpful, probably not, but you can calculate the drift or instantanous frequency of a sine wave on a per sample basis using a Hilbert transform HT -> Atan2 -> differenciate -> unwrap ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
Hi, Apparently there are no timing information being broadcast and no meta data fields available for getting these like in mpeg TS. The only way is to find the symbol boundary and time stamp it, since the tuner is feeding the base band samples to DSP, if any tuner variations will be reflected in the timing of symbols in DSP. Monitor this difference and adjust audio clock in DSP, which is possible in hardware of DSP. This is what I'm planning to implement, please find the attached figure, Now the timing of input side is after detecting the start of symbol. Every symbol will be timestamped and measure the time deviation between two symbols. d = t1 - t0, where t0 - time of arrival of symbol (n) t1 - time of arrival of symbol (n+1) d - time deviation between two symbols. D - time duration between two symbols according to digital radio standards, then error = ( D / d ) - 1 Please send your suggestions feedback regarding this approach. -ben From: music-dsp-boun...@music.columbia.edu on behalf of Andy Farnell Sent: Wednesday, January 24, 2018 2:17 AM To: music-dsp@music.columbia.edu Subject: Re: [music-dsp] Clock drift and compensation On Tue, Jan 23, 2018 at 04:17:40PM +, Benny Alexandar wrote: > How to design a control system such that a digital baseband frame of duration > 'T' ms is mapped to audio and adjust the drift ? A classic asynchronous resampling problem. Look at something like SMPTE drop frame resampling using div/modulo to calculate the number of frames of m samples over which to interpolate to get some new number of n samples. Real problem is that you need to know the difference/drift in the clocks. Is there some feature in your signal that helps with this? > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
On Tue, January 23, 2018 7:17 pm, Benny Alexandar wrote: > Now if the tuner xtal is drifting then the dsp audio streaming needs to > adjust to that drift, else buffer overflow or underrun happens as the > sample rates doesn't match. Assuming you do not have the option of modifying the hardware, you may use sample length modification techniques similar to these: https://www.google.com/patents/WO2008006080A2?cl=en ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Clock drift and compensation
On Tue, Jan 23, 2018 at 04:17:40PM +, Benny Alexandar wrote: > How to design a control system such that a digital baseband frame of duration > 'T' ms is mapped to audio and adjust the drift ? A classic asynchronous resampling problem. Look at something like SMPTE drop frame resampling using div/modulo to calculate the number of frames of m samples over which to interpolate to get some new number of n samples. Real problem is that you need to know the difference/drift in the clocks. Is there some feature in your signal that helps with this? > ___ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp signature.asc Description: Digital signature ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
[music-dsp] Clock drift and compensation
Hi All, I have a problem to solve, I have a system which has a tuner chip and DSP chip, both are clocked by independent xtals. Tuner gives the baseband samples to DSP, and tuner is master and dsp is slave. Dsp does the demodulation of base band samples and does the audio decoding and generate audio, which is streamed out from DSP. Now if the tuner xtal is drifting then the dsp audio streaming needs to adjust to that drift, else buffer overflow or underrun happens as the sample rates doesn't match. How to design a control system such that a digital baseband frame of duration 'T' ms is mapped to audio and adjust the drift ? -ben ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp