public float[] map(final float[] data) { final float[] out = new float[data.length * upFactor / downFactor]; for (int i = 0; i < data.length; i++) { final float sample = data[i]; for (int j = 0; j < upFactor; j++) { final Filters.FIRFilter filter = filters[j]; filter.addToDelayLine(sample); final int upsampledIndex = i * upFactor + j; if (upsampledIndex % downFactor == 0) { out[upsampledIndex / downFactor] = (float) filter.filter(); } } } return out; }
public float[] map(final float[] data) { final int outLength = data.length * factor; if (out == null || out.length != outLength) { out = new float[outLength]; } else { Arrays.fill(out, 0); } for (int i = 0; i < data.length; i++) { final float sample = data[i]; for (int j = 0; j < factor; j++) { final Filters.FIRFilter filter = filters[j]; filter.addToDelayLine(sample); out[i * factor + j] = (float) filter.filter(); } } return out; }