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;
}