diff dsp/segmentation/Segmenter.h @ 243:dc30e3864ceb

* merge in segmentation code from soundbite plugin/library repository
author Chris Cannam <c.cannam@qmul.ac.uk>
date Wed, 09 Jan 2008 10:46:25 +0000
parents
children 2b74bd60c61f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsp/segmentation/Segmenter.h	Wed Jan 09 10:46:25 2008 +0000
@@ -0,0 +1,56 @@
+#ifndef _SEGMENTER_H
+#define _SEGMENTER_H
+
+/*
+ *  Segmenter.h
+ *  soundbite
+ *
+ *  Created by Mark Levy on 23/03/2006.
+ *  Copyright 2006 Centre for Digital Music, Queen Mary, University of London. All rights reserved.
+ *
+ */
+
+#include <vector>
+#include <iostream>
+
+using std::vector;
+using std::ostream;
+
+class Segment
+{
+public:
+	int start;		// in samples
+	int end;
+	int type;
+};
+
+class Segmentation
+{
+public:
+	int nsegtypes;		// number of segment types, so possible types are {0,1,...,nsegtypes-1}
+	int samplerate;
+	vector<Segment> segments;	
+};
+
+ostream& operator<<(ostream& os, const Segmentation& s);
+
+class Segmenter
+{
+public:
+	Segmenter() {}
+	virtual ~Segmenter() {}
+	virtual void initialise(int samplerate) = 0;	// must be called before any other methods
+	virtual int getWindowsize() = 0;				// required window size for calls to extractFeatures()
+	virtual int getHopsize() = 0;					// required hop size for calls to extractFeatures()
+	virtual void extractFeatures(double* samples, int nsamples) = 0;
+	virtual void segment() = 0;						// call once all the features have been extracted
+	virtual void segment(int m) = 0;				// specify desired number of segment-types
+	virtual void clear() { features.clear(); }
+	const Segmentation& getSegmentation() const { return segmentation; } 
+protected:
+	vector<vector<double> > features;
+	Segmentation segmentation;
+	int samplerate;
+};
+
+#endif