summaryrefslogtreecommitdiff
path: root/src/simpl/partial_tracking.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/simpl/partial_tracking.h')
-rw-r--r--src/simpl/partial_tracking.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/simpl/partial_tracking.h b/src/simpl/partial_tracking.h
new file mode 100644
index 0000000..964d959
--- /dev/null
+++ b/src/simpl/partial_tracking.h
@@ -0,0 +1,73 @@
+#ifndef PARTIAL_TRACKING_H
+#define PARTIAL_TRACKING_H
+
+#include "base.h"
+
+extern "C" {
+ #include "sms.h"
+}
+
+using namespace std;
+
+namespace simpl
+{
+
+
+// ---------------------------------------------------------------------------
+// PartialTracking
+//
+// Link spectral peaks from consecutive frames to form partials
+// ---------------------------------------------------------------------------
+
+class PartialTracking {
+ protected:
+ int _sampling_rate;
+ int _max_partials;
+ int _min_partial_length;
+ int _max_gap;
+ Frames _frames;
+
+ public:
+ PartialTracking();
+ ~PartialTracking();
+
+ void clear();
+
+ int sampling_rate();
+ virtual void sampling_rate(int new_sampling_rate);
+ int max_partials();
+ virtual void max_partials(int new_max_partials);
+ int min_partial_length();
+ virtual void min_partial_length(int new_min_partial_length);
+ int max_gap();
+ virtual void max_gap(int new_max_gap);
+
+ virtual Peaks update_partials(Frame* frame);
+ virtual Frames find_partials(Frames frames);
+};
+
+
+// ---------------------------------------------------------------------------
+// SMSPartialTracking
+// ---------------------------------------------------------------------------
+class SMSPartialTracking : public PartialTracking {
+ private:
+ SMSAnalysisParams _analysis_params;
+ SMSHeader _header;
+ SMSData _data;
+ sample* _peak_amplitude;
+ sample* _peak_frequency;
+ sample* _peak_phase;
+ void init_peaks();
+
+ public:
+ SMSPartialTracking();
+ ~SMSPartialTracking();
+ void max_partials(int new_max_partials);
+ Peaks update_partials(Frame* frame);
+};
+
+
+} // end of namespace Simpl
+
+#endif