annotate src/Silvet.h @ 38:5164bccf3064

Return pitch activation matrix
author Chris Cannam
date Fri, 04 Apr 2014 19:05:47 +0100
parents 7d81407a2fd8
children 303c06efa8d2
rev   line source
Chris@31 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@31 2
Chris@31 3 /*
Chris@31 4 Silvet
Chris@31 5
Chris@31 6 A Vamp plugin for note transcription.
Chris@31 7 Centre for Digital Music, Queen Mary University of London.
Chris@31 8
Chris@31 9 This program is free software; you can redistribute it and/or
Chris@31 10 modify it under the terms of the GNU General Public License as
Chris@31 11 published by the Free Software Foundation; either version 2 of the
Chris@31 12 License, or (at your option) any later version. See the file
Chris@31 13 COPYING included with this distribution for more information.
Chris@31 14 */
Chris@31 15
Chris@31 16 #ifndef SILVET_H
Chris@31 17 #define SILVET_H
Chris@31 18
Chris@31 19 #include <vamp-sdk/Plugin.h>
Chris@31 20
Chris@32 21 #include <vector>
Chris@32 22 #include <string>
Chris@32 23
Chris@32 24 #include "maths/MedianFilter.h"
Chris@32 25
Chris@31 26 using std::string;
Chris@32 27 using std::vector;
Chris@31 28
Chris@31 29 class Resampler;
Chris@32 30 class CQInterpolated;
Chris@31 31
Chris@31 32 class Silvet : public Vamp::Plugin
Chris@31 33 {
Chris@31 34 public:
Chris@31 35 Silvet(float inputSampleRate);
Chris@31 36 virtual ~Silvet();
Chris@31 37
Chris@31 38 string getIdentifier() const;
Chris@31 39 string getName() const;
Chris@31 40 string getDescription() const;
Chris@31 41 string getMaker() const;
Chris@31 42 int getPluginVersion() const;
Chris@31 43 string getCopyright() const;
Chris@31 44
Chris@31 45 InputDomain getInputDomain() const;
Chris@31 46 size_t getPreferredBlockSize() const;
Chris@31 47 size_t getPreferredStepSize() const;
Chris@31 48 size_t getMinChannelCount() const;
Chris@31 49 size_t getMaxChannelCount() const;
Chris@31 50
Chris@31 51 ParameterList getParameterDescriptors() const;
Chris@31 52 float getParameter(string identifier) const;
Chris@31 53 void setParameter(string identifier, float value);
Chris@31 54
Chris@31 55 ProgramList getPrograms() const;
Chris@31 56 string getCurrentProgram() const;
Chris@31 57 void selectProgram(string name);
Chris@31 58
Chris@31 59 OutputList getOutputDescriptors() const;
Chris@31 60
Chris@31 61 bool initialise(size_t channels, size_t stepSize, size_t blockSize);
Chris@31 62 void reset();
Chris@31 63
Chris@31 64 FeatureSet process(const float *const *inputBuffers,
Chris@31 65 Vamp::RealTime timestamp);
Chris@31 66
Chris@31 67 FeatureSet getRemainingFeatures();
Chris@31 68
Chris@31 69 protected:
Chris@31 70 Resampler *m_resampler;
Chris@32 71 CQInterpolated *m_cq;
Chris@32 72
Chris@32 73 typedef vector<vector<double> > Grid;
Chris@32 74
Chris@32 75 vector<MedianFilter<double> *> m_filterA;
Chris@32 76 vector<MedianFilter<double> *> m_filterB;
Chris@32 77 Grid preProcess(const Grid &);
Chris@34 78 FeatureSet transcribe(const Grid &);
Chris@31 79
Chris@38 80 std::string noteName(int n) const;
Chris@38 81
Chris@31 82 int m_blockSize;
Chris@32 83 int m_columnCount;
Chris@32 84 int m_reducedColumnCount;
Chris@32 85
Chris@32 86 mutable int m_notesOutputNo;
Chris@32 87 mutable int m_cqOutputNo;
Chris@38 88 mutable int m_pitchOutputNo;
Chris@31 89 };
Chris@31 90
Chris@31 91 #endif