00001 #ifndef MARSYAS_TRANSCRIBER_H
00002 #define MARSYAS_TRANSCRIBER_H
00003
00004 #include "MarSystemManager.h"
00005 #include "TranscriberExtract.h"
00006
00007 namespace Marsyas
00008 {
00017 class Transcriber: public TranscriberExtract
00018 {
00019
00020 public:
00021 Transcriber();
00022 ~Transcriber();
00023
00025
00026
00027
00028 static mrs_real findMedianWithoutZeros(const mrs_natural start,
00029 const mrs_natural length,
00030 const realvec& array);
00031 static realvec findValleys(const realvec& list);
00032 static realvec findPeaks(const realvec& list, const
00033 mrs_real cutoff);
00034 static mrs_real findNextPeakValue(const realvec& list,
00035 const mrs_natural start);
00037
00038
00041 static void pitchSegment(const realvec& pitchList,
00042 realvec& boundaries, const mrs_natural width);
00043 static realvec findPitchBoundaries(const realvec&
00044 pitchList, const mrs_natural width);
00046
00047
00050 static void ampSegment(const realvec& ampList, realvec&
00051 boundaries,const mrs_real cutoff);
00052 static void filterAmpBoundaries(realvec& ampList, realvec&
00053 boundaries);
00054 static void discardEndingTotalSilenceAmpsOnly(realvec& ampList);
00056
00057
00060 static realvec getNotes(const realvec& pitchList, const realvec&
00061 ampList, const realvec& boundaries);
00062 static void discardBeginEndSilences(const realvec& pitchList, const
00063 realvec& ampList, realvec& boundaries);
00064 static void discardBeginEndSilencesAmpsOnly(const realvec& ampList,
00065 realvec& boundaries);
00066 static void getRelativeDurations(const realvec& boundaries,
00067 realvec &durations);
00069
00070 };
00071 }
00072 #endif
00073