annotate NoveltyCurveProcessor.h @ 14:c11367df624d

* Renamed NoveltyCurve.* and Spectrogram.* to $(Name)Processor.* * Aligned novelty curve with audio - when performing FIRFilter::process(params), take inputLength after group delay. * Removed trail of Spectrogram. * General tidying!
author Carl Bussey <c.bussey@se10.qmul.ac.uk>
date Thu, 14 Aug 2014 10:31:49 +0100
parents NoveltyCurve.h@7680cc4c0073
children 1e4c02ca8b81
rev   line source
c@5 1 //
c@5 2 // NoveltyCurve.h
c@5 3 // Tempogram
c@5 4 //
c@5 5 // Created by Carl Bussey on 10/07/2014.
c@5 6 // Copyright (c) 2014 Carl Bussey. All rights reserved.
c@5 7 //
c@5 8
c@11 9 // Don't new delete objects
c@11 10
c@5 11 #ifndef __Tempogram__NoveltyCurve__
c@5 12 #define __Tempogram__NoveltyCurve__
c@5 13
c@5 14 #include <iostream>
c@7 15 #include <cmath>
c@7 16 #include <vector>
c@7 17 #include <iostream>
c@7 18 #include "FIRFilter.h"
c@7 19 #include "WindowFunction.h"
c@7 20 #include <cassert>
c@14 21 #include "SpectrogramProcessor.h"
c@5 22
c@14 23 class NoveltyCurveProcessor{
c@5 24 float m_samplingFrequency;
c@7 25 int m_fftLength;
c@5 26 int m_blockSize;
c@5 27 int m_numberOfBlocks;
c@5 28 int m_compressionConstant;
c@5 29 int m_numberOfBands;
c@13 30 int * m_pBandBoundaries;
c@13 31 float * m_pBandSum;
c@5 32
c@5 33 void initialise();
c@5 34 void cleanup();
c@13 35 float calculateMax(const std::vector< std::vector<float> > &spectrogram) const;
c@13 36 void subtractLocalAverage(std::vector<float> &noveltyCurve, const size_t &smoothLength) const;
c@13 37 void smoothedDifferentiator(std::vector< std::vector<float> > &spectrogram, const size_t &smoothLength) const;
c@13 38 void halfWaveRectify(std::vector< std::vector<float> > &spectrogram) const;
c@5 39
c@5 40 public:
c@5 41
c@14 42 NoveltyCurveProcessor(const float &samplingFrequency, const size_t &fftLength, const size_t &numberOfBlocks, const size_t &compressionConstant);
c@14 43 ~NoveltyCurveProcessor();
c@13 44 std::vector<float> spectrogramToNoveltyCurve(Spectrogram spectrogram) const;
c@5 45 };
c@5 46
c@5 47 #endif /* defined(__Tempogram__NoveltyCurve__) */