annotate cpp-qm-dsp/ConstantQ.h @ 40:031386846e3c

Return bin frequencies, for reference; some padding
author Chris Cannam <c.cannam@qmul.ac.uk>
date Tue, 19 Nov 2013 14:37:23 +0000
parents cb072f01435b
children 337d3b324c75
rev   line source
c@29 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@29 2
c@29 3 #ifndef CONSTANTQ_H
c@29 4 #define CONSTANTQ_H
c@29 5
c@30 6 #include "CQKernel.h"
c@30 7
c@30 8 #include <vector>
c@30 9
c@30 10 class Resampler;
c@32 11 class FFTReal;
c@30 12
c@29 13 class ConstantQ
c@29 14 {
c@29 15 public:
c@29 16 ConstantQ(double sampleRate,
c@29 17 double minFreq, double maxFreq,
c@29 18 int binsPerOctave);
c@30 19 ~ConstantQ();
c@29 20
c@34 21 double getSampleRate() const { return m_sampleRate; }
c@34 22 double getMaxFrequency() const { return m_p.maxFrequency; }
c@34 23 double getMinFrequency() const { return m_p.minFrequency; } // actual min, not that provided to ctor
c@34 24 int getBinsPerOctave() const { return m_binsPerOctave; }
c@34 25 int getOctaves() const { return m_octaves; }
c@34 26 int getTotalBins() const { return m_octaves * m_binsPerOctave; }
c@34 27 int getColumnHop() const { return m_p.fftHop / m_p.atomsPerFrame; }
c@34 28
c@36 29 std::vector<std::vector<double> > process(const std::vector<double> &);
c@36 30 std::vector<std::vector<double> > getRemainingBlocks();
c@29 31
c@30 32 private:
c@30 33 double m_sampleRate;
c@30 34 double m_maxFrequency;
c@30 35 double m_minFrequency;
c@30 36 int m_binsPerOctave;
c@30 37 int m_octaves;
c@29 38
c@30 39 CQKernel *m_kernel;
c@30 40 CQKernel::Properties m_p;
c@30 41 int m_bigBlockSize;
c@30 42
c@30 43 std::vector<Resampler *> m_decimators;
c@31 44 std::vector<std::vector<double> > m_buffers;
c@30 45
c@30 46 int m_totalLatency;
c@30 47
c@32 48 FFTReal *m_fft;
c@30 49
c@30 50 void initialise();
c@34 51 std::vector<std::vector<double> > processOctaveBlock(int octave);
c@30 52 };
c@29 53
c@29 54 #endif
c@29 55