Example #1
0
 public static float[] MakeLowPassKernel(double sampleRate, int filterOrder, double cutoffFrequency, WindowType windowType)
 {
     filterOrder |= 1;
     float[] array  = FilterBuilder.MakeSinc(sampleRate, cutoffFrequency, filterOrder);
     float[] window = FilterBuilder.MakeWindow(windowType, filterOrder);
     FilterBuilder.ApplyWindow(array, window);
     FilterBuilder.Normalize(array);
     return(array);
 }
Example #2
0
 public unsafe IQBalancer()
 {
     this._dcTimeConst      = 0.0001f;
     this._dcRemoverIBuffer = UnsafeBuffer.Create(sizeof(DcRemover));
     this._dcRemoverI       = (DcRemover *)(void *)this._dcRemoverIBuffer;
     this._dcRemoverI->Init(this._dcTimeConst);
     this._dcRemoverQBuffer = UnsafeBuffer.Create(sizeof(DcRemover));
     this._dcRemoverQ       = (DcRemover *)(void *)this._dcRemoverQBuffer;
     this._dcRemoverQ->Init(this._dcTimeConst);
     float[] buffer = FilterBuilder.MakeWindow(WindowType.Hamming, 1024);
     this._windowBuffer    = UnsafeBuffer.Create(buffer);
     this._windowPtr       = (float *)(void *)this._windowBuffer;
     this._isMultithreaded = (Utils.ProcessorCount > 1);
 }
Example #3
0
        public IQBalancer()
        {
            _dcRemoverIBuffer = UnsafeBuffer.Create(sizeof(DcRemover));
            _dcRemoverI       = (DcRemover *)_dcRemoverIBuffer;
            _dcRemoverI->Init(DcTimeConst);
            _dcRemoverQBuffer = UnsafeBuffer.Create(sizeof(DcRemover));
            _dcRemoverQ       = (DcRemover *)_dcRemoverQBuffer;
            _dcRemoverQ->Init(DcTimeConst);
            var window = FilterBuilder.MakeWindow(WindowType.Hamming, FFTBins);

            _windowBuffer    = UnsafeBuffer.Create(window);
            _windowPtr       = (float *)_windowBuffer;
            _isMultithreaded = Environment.ProcessorCount > 1;
        }
Example #4
0
 public static Complex[] MakeKernelFromFFT(Complex[] buf, int len, WindowType window, int order)
 {
     float[]   array  = FilterBuilder.MakeWindow(window, order + 1);
     Complex[] array2 = new Complex[order + 1];
     for (int i = 0; i < order + 1; i++)
     {
         int num = i - order / 2;
         if (num < 0)
         {
             num += len;
         }
         Complex.Mul(ref array2[i], buf[num], array[i]);
     }
     return(array2);
 }
Example #5
0
 unsafe static IQBalancer()
 {
     IQBalancer._windowBuffer = UnsafeBuffer.Create(FilterBuilder.MakeWindow(WindowType.BlackmanHarris7, 128));
     IQBalancer._windowPtr    = (float *)(void *)IQBalancer._windowBuffer;
 }