public Fingerprinter(FingerprinterConfiguration config, IFFTService fftService) { m_image = new Image(12); if (config == null) { config = new FingerprinterConfigurationTest1(); } m_image_builder = new ImageBuilder(m_image); m_chroma_normalizer = new ChromaNormalizer(m_image_builder); m_chroma_filter = new ChromaFilter(config.FilterCoefficients, m_chroma_normalizer); m_chroma = new Chroma(MIN_FREQ, MAX_FREQ, FRAME_SIZE, SAMPLE_RATE, m_chroma_filter); //m_chroma.set_interpolate(true); // TODO: inject IFFTService m_fft = new FFT(FRAME_SIZE, OVERLAP, m_chroma, fftService); if (config.RemoveSilence) { m_silence_remover = new SilenceRemover(m_fft); m_silence_remover.Threshold = config.SilenceThreshold; m_audio_processor = new AudioProcessor(SAMPLE_RATE, m_silence_remover); } else { m_silence_remover = null; m_audio_processor = new AudioProcessor(SAMPLE_RATE, m_fft); } m_fingerprint_calculator = new FingerprintCalculator(config.Classifiers); m_config = config; }