Mercurial > hg > silvet
annotate src/EM.h @ 42:c0c4a945577a
Sparsity parameters
author | Chris Cannam |
---|---|
date | Sat, 05 Apr 2014 18:10:33 +0100 |
parents | 5164bccf3064 |
children | e92376d450b0 9e2d1f6cd43a |
rev | line source |
---|---|
Chris@34 | 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ |
Chris@34 | 2 |
Chris@34 | 3 /* |
Chris@34 | 4 Silvet |
Chris@34 | 5 |
Chris@34 | 6 A Vamp plugin for note transcription. |
Chris@34 | 7 Centre for Digital Music, Queen Mary University of London. |
Chris@34 | 8 |
Chris@34 | 9 This program is free software; you can redistribute it and/or |
Chris@34 | 10 modify it under the terms of the GNU General Public License as |
Chris@34 | 11 published by the Free Software Foundation; either version 2 of the |
Chris@34 | 12 License, or (at your option) any later version. See the file |
Chris@34 | 13 COPYING included with this distribution for more information. |
Chris@34 | 14 */ |
Chris@34 | 15 |
Chris@34 | 16 #ifndef SILVET_EM_H |
Chris@34 | 17 #define SILVET_EM_H |
Chris@34 | 18 |
Chris@34 | 19 #include <vector> |
Chris@34 | 20 |
Chris@34 | 21 class EM |
Chris@34 | 22 { |
Chris@34 | 23 public: |
Chris@34 | 24 EM(); |
Chris@34 | 25 ~EM(); |
Chris@34 | 26 |
Chris@36 | 27 void iterate(std::vector<double> column); |
Chris@36 | 28 void report(); |
Chris@34 | 29 |
Chris@38 | 30 const std::vector<double> &getEstimate() const { |
Chris@38 | 31 return m_estimate; |
Chris@38 | 32 } |
Chris@38 | 33 const std::vector<double> &getPitchDistribution() const { |
Chris@38 | 34 return m_pitches; |
Chris@38 | 35 } |
Chris@38 | 36 const std::vector<std::vector<double> > &getSources() const { |
Chris@38 | 37 return m_sources; |
Chris@38 | 38 } |
Chris@38 | 39 |
Chris@34 | 40 private: |
Chris@34 | 41 typedef std::vector<double> V; |
Chris@34 | 42 typedef std::vector<std::vector<double> > Grid; |
Chris@34 | 43 |
Chris@34 | 44 V m_pitches; |
Chris@34 | 45 Grid m_sources; |
Chris@36 | 46 |
Chris@36 | 47 V m_estimate; |
Chris@36 | 48 V m_q; |
Chris@34 | 49 |
Chris@35 | 50 int m_notes; |
Chris@35 | 51 int m_bins; |
Chris@35 | 52 int m_instruments; |
Chris@42 | 53 |
Chris@42 | 54 double m_pitchSparsity; |
Chris@42 | 55 double m_sourceSparsity; |
Chris@35 | 56 |
Chris@34 | 57 int m_lowest; |
Chris@34 | 58 int m_highest; |
Chris@35 | 59 |
Chris@36 | 60 void normalise(V &column); |
Chris@36 | 61 void expectation(const V &column); |
Chris@36 | 62 void maximisation(const V &column); |
Chris@36 | 63 |
Chris@35 | 64 bool inRange(int instrument, int note); |
Chris@34 | 65 }; |
Chris@34 | 66 |
Chris@34 | 67 #endif |