annotate cq/Chromagram.h @ 170:b96b0addbca7

Pull out chroma class into library
author Chris Cannam <c.cannam@qmul.ac.uk>
date Wed, 04 Feb 2015 15:09:06 +0000
parents
children a12642e36167
rev   line source
c@170 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@170 2 /*
c@170 3 Constant-Q library
c@170 4 Copyright (c) 2013-2015 Queen Mary, University of London
c@170 5
c@170 6 Permission is hereby granted, free of charge, to any person
c@170 7 obtaining a copy of this software and associated documentation
c@170 8 files (the "Software"), to deal in the Software without
c@170 9 restriction, including without limitation the rights to use, copy,
c@170 10 modify, merge, publish, distribute, sublicense, and/or sell copies
c@170 11 of the Software, and to permit persons to whom the Software is
c@170 12 furnished to do so, subject to the following conditions:
c@170 13
c@170 14 The above copyright notice and this permission notice shall be
c@170 15 included in all copies or substantial portions of the Software.
c@170 16
c@170 17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
c@170 18 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
c@170 19 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
c@170 20 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
c@170 21 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
c@170 22 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
c@170 23 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
c@170 24
c@170 25 Except as contained in this notice, the names of the Centre for
c@170 26 Digital Music; Queen Mary, University of London; and Chris Cannam
c@170 27 shall not be used in advertising or otherwise to promote the sale,
c@170 28 use or other dealings in this Software without prior written
c@170 29 authorization.
c@170 30 */
c@170 31
c@170 32 #ifndef CQCHROMAGRAM_H
c@170 33 #define CQCHROMAGRAM_H
c@170 34
c@170 35 #include "CQBase.h"
c@170 36
c@170 37 class CQSpectrogram;
c@170 38
c@170 39 class Chromagram
c@170 40 {
c@170 41 public:
c@170 42 struct Parameters {
c@170 43 Parameters(double sr) :
c@170 44 sampleRate(sr),
c@170 45 lowestOctave(0),
c@170 46 octaves(7),
c@170 47 bpo(36),
c@170 48 tuningFrequency(440.) { }
c@170 49 double sampleRate;
c@170 50 int lowestOctave;
c@170 51 int octaves;
c@170 52 int bpo;
c@170 53 double tuningFrequency;
c@170 54 };
c@170 55
c@170 56 Chromagram(Parameters params);
c@170 57 virtual ~Chromagram();
c@170 58
c@170 59 CQBase::RealBlock process(const CQBase::RealSequence &);
c@170 60 CQBase::RealBlock getRemainingOutput();
c@170 61
c@170 62 double getMinFrequency() const { return m_minFrequency; }
c@170 63 double getMaxFrequency() const { return m_maxFrequency; }
c@170 64
c@170 65 std::string getBinName(int bin) const;
c@170 66
c@170 67 bool isValid() const;
c@170 68 int getColumnHop() const;
c@170 69 int getLatency() const;
c@170 70
c@170 71 private:
c@170 72 Parameters m_params;
c@170 73 CQSpectrogram *m_cq;
c@170 74 double m_minFrequency;
c@170 75 double m_maxFrequency;
c@170 76 CQBase::RealBlock convert(const CQBase::RealBlock &);
c@170 77 };
c@170 78
c@170 79 #endif
c@170 80
c@170 81
c@170 82