diff --git a/src/main/java/io/github/dsheirer/dsp/filter/design/FilterViewer.java b/src/main/java/io/github/dsheirer/dsp/filter/design/FilterViewer.java index c6bbb29f..242d0c5e 100644 --- a/src/main/java/io/github/dsheirer/dsp/filter/design/FilterViewer.java +++ b/src/main/java/io/github/dsheirer/dsp/filter/design/FilterViewer.java @@ -1,15 +1,13 @@ package io.github.dsheirer.dsp.filter.design; +import io.github.dsheirer.dsp.filter.FilterFactory; import io.github.dsheirer.dsp.filter.fir.FIRFilterSpecification; -import io.github.dsheirer.dsp.filter.fir.remez.RemezFIRFilterDesigner; import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Arrays; - public class FilterViewer extends Application { private final static Logger mLog = LoggerFactory.getLogger(FilterViewer.class); @@ -41,27 +39,16 @@ public class FilterViewer extends Application */ private float[] getFilter() { - FIRFilterSpecification specification = FIRFilterSpecification.lowPassBuilder() - .sampleRate(25000) - .gridDensity(16) - .passBandCutoff(6000) - .passBandAmplitude(1.0) - .passBandRipple(0.01) - .stopBandStart(6700) - .stopBandAmplitude(0.0) - .stopBandRipple(0.03) - .build(); - // FIRFilterSpecification specification = FIRFilterSpecification.lowPassBuilder() -// .sampleRate(100) +// .sampleRate(8000) // .gridDensity(16) // .oddLength(true) -// .passBandCutoff(21) +// .passBandCutoff(300) // .passBandAmplitude(1.0) // .passBandRipple(0.01) -// .stopBandStart(29) +// .stopBandStart(500) // .stopBandAmplitude(0.0) -// .stopBandRipple(0.01) +// .stopBandRipple(0.03) //Approximately 60 dB attenuation // .build(); // // FIRFilterSpecification specification = FIRFilterSpecification.highPassBuilder() @@ -74,15 +61,15 @@ public class FilterViewer extends Application // .passBandRipple(0.01) // .build(); -// FIRFilterSpecification specification = FIRFilterSpecification.bandPassBuilder() -// .sampleRate(8000) -// .stopFrequency1(1000) -// .passFrequencyBegin(1100) -// .passFrequencyEnd(1900) -// .stopFrequency2(2000) -// .stopRipple(0.000001) -// .passRipple(0.00001) -// .build(); + FIRFilterSpecification specification = FIRFilterSpecification.bandPassBuilder() + .sampleRate(8000) + .stopFrequency1(1000) + .passFrequencyBegin(1100) + .passFrequencyEnd(1900) + .stopFrequency2(2000) + .stopRipple(0.000001) + .passRipple(0.00001) + .build(); float[] taps = null; @@ -96,38 +83,37 @@ public class FilterViewer extends Application // mLog.error("Error"); // } - try - { - RemezFIRFilterDesigner designer = new RemezFIRFilterDesigner(specification); - - if(designer.isValid()) - { - taps = designer.getImpulseResponse(); - } - } - catch(FilterDesignException fde) - { - mLog.error("Filter design error", fde); - } - - if(taps == null) - { - throw new IllegalStateException("Couldn't design filter"); - } - // try // { -// taps = FilterFactory.getSincM2Synthesizer(0.25, 2, 9); -// taps = FilterFactory.getSincM2Channelizer(12500.0, 2, 9, true); -// taps = FilterFactory.getSincM2Synthesizer( 25000.0, 12500.0, 2, 9); +// RemezFIRFilterDesigner designer = new RemezFIRFilterDesigner(specification); // +// if(designer.isValid()) +// { +// taps = designer.getImpulseResponse(); +// } // } -// catch(FilterDesignException e) +// catch(FilterDesignException fde) // { -// e.printStackTrace(); +// mLog.error("Filter design error", fde); +// } +// +// if(taps == null) +// { +// throw new IllegalStateException("Couldn't design filter"); // } - mLog.debug(Arrays.toString(taps)); + try + { +// taps = FilterFactory.getSincM2Synthesizer(0.25, 2, 9); +// taps = FilterFactory.getSincM2Channelizer(12500.0, 2, 9, true); + taps = FilterFactory.getSincM2Synthesizer( 25000.0, 12500.0, 2, 9); + + } + catch(FilterDesignException e) + { + e.printStackTrace(); + } + return taps; } }