Testing Low Pass Filters in Java: public static double[] FirstOrderLPF (double[] input, double ratio) { double[] output = new double[input.length]; double value = 0; for (int i = 0; i < input.length; i++) { value = input[i] * ratio + value*(1-ratio); output[i] = value; } return output; } public static double[] SecondOrderLPF (double[] input, double ratio) { double[] output = new double[input.length]; double value = 0; double value2 = 0; for (int i = 0; i < input.length; i++) { value = input[i] * ratio + value*(1-ratio); value2 = value * ratio + value2*(1-ratio); output[i] = value2; } return output; } Results: 4 sample/cycle: First order 3DB ratio = 0.7509617805480957 First order 6DB ratio = 0.5857863426208496 Second order 3DB ratio = 0.864356517791748 Second order 6DB ratio = 0.7667346000671387 8 sample/cycle: First order 3DB ratio = 0.5857863426208496 First order 6DB ratio = 0.35640573501586914 Second order 3DB ratio = 0.6944746971130371 Second order 6DB ratio = 0.5298819541931152 16 sample/cycle: First order 3DB ratio = 0.3318209648132324 First order 6DB ratio = 0.20199346542358398 Second order 3DB ratio = 0.4498744010925293 Second order 6DB ratio = 0.3215975761413574 32 sample/cycle: First order 3DB ratio = 0.1793208122253418 First order 6DB ratio = 0.10701799392700195 Second order 3DB ratio = 0.26179075241088867 Second order 6DB ratio = 0.1777663230895996 64 sample/cycle: First order 3DB ratio = 0.09365320205688477 First order 6DB ratio = 0.055086612701416016 Second order 3DB ratio = 0.14140748977661133 Second order 6DB ratio = 0.09343862533569336 128 sample/cycle: First order 3DB ratio = 0.04792070388793945 First order 6DB ratio = 0.02794027328491211 Second order 3DB ratio = 0.0734248161315918 Second order 6DB ratio = 0.04789304733276367 256 sample/cycle: First order 3DB ratio = 0.02424764633178711 First order 6DB ratio = 0.01407003402709961 Second order 3DB ratio = 0.037416934967041016 Second order 6DB ratio = 0.024243831634521484