CQSpectrogram.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-2014 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 CQSPECTROGRAM_H
33 #define CQSPECTROGRAM_H
34 
35 #include "ConstantQ.h"
36 
46 class CQSpectrogram : public CQBase
47 {
48 public:
56  };
57 
62  CQSpectrogram(CQParameters params, Interpolation interpolation);
63  virtual ~CQSpectrogram();
64 
65  // CQBase methods, see CQBase.h for documentation
66  virtual bool isValid() const { return m_cq.isValid(); }
67  virtual double getSampleRate() const { return m_cq.getSampleRate(); }
68  virtual int getBinsPerOctave() const { return m_cq.getBinsPerOctave(); }
69  virtual int getOctaves() const { return m_cq.getOctaves(); }
70  virtual int getTotalBins() const { return m_cq.getTotalBins(); }
71  virtual int getColumnHop() const { return m_cq.getColumnHop(); }
72  virtual int getLatency() const { return m_cq.getLatency(); }
73  virtual double getMaxFrequency() const { return m_cq.getMaxFrequency(); }
74  virtual double getMinFrequency() const { return m_cq.getMinFrequency(); }
75  virtual double getBinFrequency(double bin) const { return m_cq.getBinFrequency(bin); }
76 
101  RealBlock process(const RealSequence &);
102 
109 
110 private:
111  ConstantQ m_cq;
112  Interpolation m_interpolation;
113 
114  RealBlock m_buffer;
115  RealBlock postProcess(const ComplexBlock &, bool insist);
116  RealBlock fetchHold(bool insist);
117  RealBlock fetchLinear(bool insist);
118  RealBlock linearInterpolated(const RealBlock &, int, int);
119  RealColumn m_prevColumn;
120 };
121 
122 #endif
virtual bool isValid() const
Definition: CQSpectrogram.h:66
virtual bool isValid() const
Definition: ConstantQ.h:62
virtual double getMinFrequency() const
Definition: ConstantQ.cpp:78
std::vector< ComplexColumn > ComplexBlock
A matrix of complex-valued samples, indexed by time then bin number.
Definition: CQBase.h:64
virtual double getMinFrequency() const
Definition: CQSpectrogram.h:74
virtual int getTotalBins() const
Definition: ConstantQ.h:66
virtual double getSampleRate() const
Definition: ConstantQ.h:63
virtual int getColumnHop() const
Definition: CQSpectrogram.h:71
RealBlock process(const RealSequence &)
Definition: CQSpectrogram.cpp:54
virtual int getBinsPerOctave() const
Definition: CQSpectrogram.h:68
virtual double getBinFrequency(double bin) const
Definition: CQSpectrogram.h:75
virtual int getOctaves() const
Definition: ConstantQ.h:65
virtual double getSampleRate() const
Definition: CQSpectrogram.h:67
leave empty cells as zero
Definition: CQSpectrogram.h:51
perform linear interpolation between consecutive time cells
Definition: CQSpectrogram.h:55
Interpolation
Definition: CQSpectrogram.h:49
Definition: ConstantQ.h:51
virtual double getMaxFrequency() const
Definition: CQSpectrogram.h:73
virtual int getLatency() const
Definition: CQSpectrogram.h:72
Definition: CQSpectrogram.h:46
virtual double getMaxFrequency() const
Definition: ConstantQ.h:69
std::vector< RealColumn > RealBlock
A matrix of real-valued samples, indexed by time then bin number.
Definition: CQBase.h:61
virtual int getTotalBins() const
Definition: CQSpectrogram.h:70
Definition: CQParameters.h:39
virtual int getLatency() const
Definition: ConstantQ.h:68
virtual int getColumnHop() const
Definition: ConstantQ.h:67
CQSpectrogram(CQParameters params, Interpolation interpolation)
Definition: CQSpectrogram.cpp:42
std::vector< double > RealColumn
A series of real-valued samples ordered by bin (frequency or similar).
Definition: CQBase.h:52
Definition: CQBase.h:42
virtual int getBinsPerOctave() const
Definition: ConstantQ.h:64
virtual int getOctaves() const
Definition: CQSpectrogram.h:69
virtual ~CQSpectrogram()
Definition: CQSpectrogram.cpp:49
std::vector< double > RealSequence
A series of real-valued samples ordered in time.
Definition: CQBase.h:49
virtual double getBinFrequency(double bin) const
Definition: ConstantQ.cpp:84
replace empty cells with a repeat of the previous column
Definition: CQSpectrogram.h:53
RealBlock getRemainingOutput()
Definition: CQSpectrogram.cpp:60