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
|