Exemple #1
0
        /// <summary>
        /// Calculate autocorrelation data and reflection coefficients.
        /// Can be used to incrementaly compute coefficients for higher orders,
        /// because it caches them.
        /// </summary>
        /// <param name="order">Maximum order</param>
        /// <param name="samples">Samples pointer</param>
        /// <param name="blocksize">Block size</param>
        /// <param name="window">Window function</param>
        public void GetReflection(int order, int *samples, int blocksize, float *window)
        {
            if (autocorr_order > order)
                return;

            fixed(double *reff = Reflection, autoc = autocorr_values, err = prediction_error)
            {
                Lpc.Compute_autocorr(samples, blocksize, autocorr_order, order, autoc, window);
                Lpc.Compute_schur_reflection(autoc, (uint)order, reff, err);
                autocorr_order = order + 1;
            }
        }
Exemple #2
0
 public void ComputeReflection(int order, double *autocorr)
 {
     fixed(double *reff = Reflection, autoc = autocorr_values, err = prediction_error)
     {
         for (int i = 0; i <= order; i++)
         {
             autoc[i] = autocorr[i];
         }
         Lpc.Compute_schur_reflection(autoc, (uint)order, reff, err);
         autocorr_order = order + 1;
     }
 }
Exemple #3
0
 /// <summary>
 /// Produces LPC coefficients from autocorrelation data.
 /// </summary>
 /// <param name="lpcs">LPC coefficients buffer (for all orders)</param>
 public void ComputeLPC(float *lpcs)
 {
     fixed(double *reff = Reflection)
     Lpc.Compute_lpc_coefs((uint)autocorr_order - 1, reff, lpcs);
 }