# about fractional pitch search of melp

Started by December 15, 2008
hi all
I'm learning MELP source code.I am not able to understand the fractional pitch search algorithm in function

Shortword frac_pch(Shortword sig_in[],Shortword *pcorr,Shortword fpitch,
Shortword range,Shortword pmin,Shortword pmax,
Shortword pmin_q7,Shortword pmax_q7,Shortword lmin);

somebody can give me some hints about determining fractional pitch in Bandpass voicing analysis.
I alse have a question about 6th order lowpass Butterworth filter used in Global pitch search.the filter coefficient is below:
Shortword lpf_num[(LPF_ORD/2)*3] = {
713, 1426, 713,
798, 1600, 801,
1016, 2028, 1012};
/* sign of coefficients for lpf_den(denominator ) is reversed */
Shortword lpf_den[(LPF_ORD/2)*3] = {
-8192, 6884, -1543,
-8192, 7723, -2731,
-8192, 9793, -5657};

the filter coefficient is produced by two matlab commands lines as specified in the source code:
[z,p,k]=butter(6,1000/4000);
sos=zp2sos(z,p,k);
when i type the two command line in matlab version6.5.1, I cann't get the same coefficient as in the source code,the denominator is the same when converted into Q13,but the numerator is different.when reversed the sign of denominator ,the coefficient i got is below :
0.0011 0.0021 0.0011 -1.0000 0.8403 -0.1883
1.0000 2.0000 1.0000 -1.0000 0.9428 -0.3333
1.0000 2.0000 1.0000 -1.0000 1.1954 -0.6906
the left half part(numerator ) is different from in the source code.
how can i get the coefficients as in the source code?