public override WWUtil.LargeArray <double> FilterDo(WWUtil.LargeArray <double> inPcmLA) { var inPcm = inPcmLA.ToArray(); double [] outPcm = new double[inPcm.Length]; for (long i = 0; i < outPcm.Length; ++i) { mDelay.Filter(inPcm[i]); outPcm[i] = Convolution(); } return(new WWUtil.LargeArray <double>(outPcm)); }
public override WWUtil.LargeArray <double> FilterDo(WWUtil.LargeArray <double> inPcmLA) { var inPcm = inPcmLA.ToArray(); var outPcm = new double[inPcm.Length]; for (int i = 0; i < inPcm.Length; ++i) { double x = inPcm[i]; double delayedY = mDelayX.Filter(x); for (int j = 0; j < MOVING_AVERAGER_NUM; ++j) { x = mMovingAveragerList[j].Filter(x); } double y = delayedY - x; outPcm[i] = y; } if (0 < mDiscardSamples) { if (outPcm.Length < mDiscardSamples) { mDiscardSamples -= outPcm.Length; return(new WWUtil.LargeArray <double>(0)); } else { var outPcm2 = new double[outPcm.Length - mDiscardSamples]; Array.Copy(outPcm, mDiscardSamples, outPcm2, 0, outPcm2.Length); mDiscardSamples = 0; return(new WWUtil.LargeArray <double>(outPcm2)); } } return(new WWUtil.LargeArray <double>(outPcm)); }