matthiasm@0: #ifndef _MONONOTE_H_ matthiasm@0: #define _MONONOTE_H_ matthiasm@0: matthiasm@0: #include "MonoNoteHMM.h" matthiasm@0: #include "MonoNoteParameters.h" matthiasm@0: matthiasm@0: #include matthiasm@0: #include matthiasm@0: #include matthiasm@0: matthiasm@0: using std::vector; matthiasm@0: using std::pair; matthiasm@0: matthiasm@0: class MonoNote { matthiasm@0: public: matthiasm@0: MonoNote(); matthiasm@0: virtual ~MonoNote(); matthiasm@0: matthiasm@0: struct FrameOutput { matthiasm@0: size_t frameNumber; matthiasm@0: double pitch; matthiasm@0: size_t noteState; // unvoiced, attack, stable, release, inter matthiasm@0: FrameOutput() : frameNumber(0), pitch(-1.0), noteState(0) { } matthiasm@0: FrameOutput(size_t _frameNumber, double _pitch, size_t _noteState) : matthiasm@0: frameNumber(_frameNumber), pitch(_pitch), noteState(_noteState) { } matthiasm@0: }; matthiasm@0: // pitchProb is a frame-wise vector carrying a vector of pitch-probability pairs matthiasm@0: const vector process(const vector > > pitchProb); matthiasm@0: private: matthiasm@0: MonoNoteHMM hmm; matthiasm@0: }; matthiasm@0: matthiasm@0: #endif