Java M
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


An IIR filter library written in JAVA.

Highpass, lowpass, bandpass and bandstop as Butterworth, Bessel and Chebyshev Type I/II.

It's based on the IIR1 library [] which in turn is based on Vinnie Falco's DSPFilters [].

alt tag




Butterworth butterworth = new Butterworth();


  1. Bandstop

    butterworth.bandStop(order,Samplingfreq,Center freq,Width in frequ);

  2. Bandpass

    butterworth.bandPass(order,Samplingfreq,Center freq,Width in frequ);

  3. Lowpass

    butterworth.lowPass(order,Samplingfreq,Cutoff frequ);

  4. Highpass

    butterworth.highPass(order,Samplingfreq,Cutoff frequ);


Sample by sample for realtime processing:

v = butterworth.filter(v)

Coding examples

See the * files for complete examples for all filter types. Run them with mvn test. These test programs write the different impulse responses of the filters to text files.


Just run: mvn install to add it to your local maven respository or just point your project to Maven Central:

Maven central


Android Studio

dependencies {
    compile group: '', name:'iirj', version: '1.1'


  • mvn javadoc:javadoc generates the JavaDocs
  • mvn site generates the web pages containing the documentation under target/site describing all commands in detail.


mvn test creates impulse responses in the subdirectories for the different filters: target/surefire-reports.

To see the frequency responses install octave, copy the script 'src/test/resources/filtertest.m' in these subdirectories and run it from there. You should see the different frequency reponses for high/low/stop/bandpass. You can try out different filter parameters by modifiing the test scripts and re-run 'mvn test'.

The script DetectorTest uses a bandpass filter to detect the heartbeats of an ECG recording faking a matched filter which could be also seen as a 1st approximation of a wavelet. The heartrate is stored in hr.txt.

Have fun

/Bernd Porr []