TODO: Update summary.
Inheritance: IAudioConsumer
        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;
        }
Exemple #2
0
        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;
        }
        public void TestPassThrough()
        {
            short[] samples = { 1000, 2000, 3000, 4000, 5000, 6000 };
            short[] data = (short[])(samples.Clone());

            AudioBuffer buffer = new AudioBuffer();
            SilenceRemover processor = new SilenceRemover(buffer);
            processor.Reset(44100, 1);
            processor.Consume(data, data.Length);
            processor.Flush();

            Assert.AreEqual(data.Length, buffer.data.Length);
            for (int i = 0; i < data.Length; i++)
            {
                Assert.AreEqual(data[i], buffer.data[i]); // << "Signals differ at index " << i;
            }
        }
        public void TestRemoveLeadingSilence()
        {
            short[] samples1 = { 0, 60, 0, 1000, 2000, 0, 4000, 5000, 0 };
            short[] data1 = (short[])(samples1.Clone());

            short[] samples2 = { 1000, 2000, 0, 4000, 5000, 0 };
            short[] data2 = (short[])(samples2.Clone());

            AudioBuffer buffer = new AudioBuffer();
            SilenceRemover processor = new SilenceRemover(buffer, 100);
            processor.Reset(44100, 1);
            processor.Consume(data1, data1.Length);
            processor.Flush();

            Assert.AreEqual(data2.Length, buffer.data.Length);
            for (int i = 0; i < data2.Length; i++)
            {
                Assert.AreEqual(data2[i], buffer.data[i]); // << "Signals differ at index " << i;
            }
        }