00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MARSYAS_SPECTRUM2CHROMA_H
00020 #define MARSYAS_SPECTRUM2CHROMA_H
00021
00022 #include "MarSystem.h"
00023 #include <vector>
00024 #include <string>
00025
00026 namespace Marsyas
00027 {
00044 class Spectrum2Chroma: public MarSystem
00045 {
00046 private:
00047 realvec chromaMap_;
00048 std::vector<std::string> noteNames_;
00049
00050 MarControlPtr ctrl_nbins_;
00051 MarControlPtr ctrl_middleAfreq_;
00052 MarControlPtr ctrl_weightCenterFreq_;
00053 MarControlPtr ctrl_weightStdDev_;
00054
00055 mrs_natural pnbins_;
00056 mrs_real pmiddleAfreq_;
00057 mrs_real pweightCenterFreq_;
00058 mrs_real pweightStdDev_;
00059
00060 void addControls();
00061 void myUpdate(MarControlPtr sender);
00062
00063 public:
00064 Spectrum2Chroma(std::string name);
00065 Spectrum2Chroma(const Spectrum2Chroma& a);
00066 ~Spectrum2Chroma();
00067 MarSystem* clone() const;
00068
00069 void myProcess(realvec& in, realvec& out);
00070 };
00071
00072 }
00073
00074 #endif
00075