Chromagram.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 /*
3  Constant-Q library
4  Copyright (c) 2013-2015 Queen Mary, University of London
5 
6  Permission is hereby granted, free of charge, to any person
7  obtaining a copy of this software and associated documentation
8  files (the "Software"), to deal in the Software without
9  restriction, including without limitation the rights to use, copy,
10  modify, merge, publish, distribute, sublicense, and/or sell copies
11  of the Software, and to permit persons to whom the Software is
12  furnished to do so, subject to the following conditions:
13 
14  The above copyright notice and this permission notice shall be
15  included in all copies or substantial portions of the Software.
16 
17  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
21  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
22  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 
25  Except as contained in this notice, the names of the Centre for
26  Digital Music; Queen Mary, University of London; and Chris Cannam
27  shall not be used in advertising or otherwise to promote the sale,
28  use or other dealings in this Software without prior written
29  authorization.
30 */
31 
32 #ifndef CQCHROMAGRAM_H
33 #define CQCHROMAGRAM_H
34 
35 #include "CQBase.h"
36 #include "CQParameters.h"
37 
38 class CQSpectrogram;
39 
41 {
42 public:
43  struct Parameters {
44  Parameters(double sr) :
45  sampleRate(sr),
46  lowestOctave(0),
47  octaveCount(7),
48  binsPerOctave(36),
49  tuningFrequency(440.),
50  q(1.0), // Q scaling factor
51  atomHopFactor(0.25), // hop size of shortest temporal atom
52  threshold(0.0005), // sparsity threshold for resulting kernel
53  window(CQParameters::SqrtBlackmanHarris) // window shape
54  { }
55 
59  double sampleRate;
60 
68 
74 
80 
87 
91  double q;
92 
97  double atomHopFactor;
98 
103  double threshold;
104 
109  };
110 
111  Chromagram(Parameters params);
112  virtual ~Chromagram();
113 
116 
117  double getMinFrequency() const { return m_minFrequency; }
118  double getMaxFrequency() const { return m_maxFrequency; }
119 
120  std::string getBinName(int bin) const;
121 
122  bool isValid() const;
123  int getColumnHop() const;
124  int getLatency() const;
125 
126 private:
127  Parameters m_params;
128  CQSpectrogram *m_cq;
129  double m_minFrequency;
130  double m_maxFrequency;
131  CQBase::RealBlock convert(const CQBase::RealBlock &);
132 };
133 
134 #endif
135 
136 
137 
bool isValid() const
Definition: Chromagram.cpp:79
CQBase::RealBlock getRemainingOutput()
Definition: Chromagram.cpp:124
double sampleRate
Definition: Chromagram.h:59
int getColumnHop() const
Definition: Chromagram.cpp:85
double atomHopFactor
Definition: Chromagram.h:97
CQParameters::WindowType window
Definition: Chromagram.h:108
Definition: Chromagram.h:40
std::string getBinName(int bin) const
Definition: Chromagram.cpp:97
Definition: CQSpectrogram.h:46
double tuningFrequency
Definition: Chromagram.h:86
std::vector< RealColumn > RealBlock
A matrix of real-valued samples, indexed by time then bin number.
Definition: CQBase.h:61
double getMaxFrequency() const
Definition: Chromagram.h:118
virtual ~Chromagram()
Definition: Chromagram.cpp:73
double q
Definition: Chromagram.h:91
Definition: CQParameters.h:39
int binsPerOctave
Definition: Chromagram.h:79
int lowestOctave
Definition: Chromagram.h:67
int getLatency() const
Definition: Chromagram.cpp:91
double getMinFrequency() const
Definition: Chromagram.h:117
Definition: Chromagram.h:43
Parameters(double sr)
Definition: Chromagram.h:44
Chromagram(Parameters params)
Definition: Chromagram.cpp:40
double threshold
Definition: Chromagram.h:103
std::vector< double > RealSequence
A series of real-valued samples ordered in time.
Definition: CQBase.h:49
WindowType
Definition: CQParameters.h:42
int octaveCount
Definition: Chromagram.h:73
CQBase::RealBlock process(const CQBase::RealSequence &)
Definition: Chromagram.cpp:118