# 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 <ben.a...@outlook.com>
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 <music-dsp-bounces@music.
> columbia.edu> on behalf of gm <g...@voxangelica.net>
> *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 <music-dsp-bounces@music.
> columbia.edu> <music-dsp-boun...@music.columbia.edu> on behalf of gm
> <g...@voxangelica.net> <g...@voxangelica.net>
> *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```