diff dsp/segmentation/ClusterMeltSegmenter.h @ 249:18a0dffa5c1a

* Various fixes to segmentation code
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 10 Jan 2008 15:14:53 +0000
parents cdfd0948a852
children d096a79fa772
line wrap: on
line diff
--- a/dsp/segmentation/ClusterMeltSegmenter.h	Thu Jan 10 15:14:30 2008 +0000
+++ b/dsp/segmentation/ClusterMeltSegmenter.h	Thu Jan 10 15:14:53 2008 +0000
@@ -1,10 +1,11 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
 /*
- *  ClusterMeltSegmenter.h
- *  soundbite
+ * ClusterMeltSegmenter.h
  *
- *  Created by Mark Levy on 23/03/2006.
- *  Copyright 2006 Centre for Digital Music, Queen Mary, University of London. All rights reserved.
- *
+ * Created by Mark Levy on 23/03/2006.
+ * Copyright 2006 Centre for Digital Music, Queen Mary, University of London.
+ * All rights reserved.
  */
 
 #include <vector>
@@ -13,72 +14,84 @@
 #include "Segmenter.h"
 #include "hmm/hmm.h"
 #include "base/Window.h"
-#include "dsp/chromagram/ConstantQ.h"
 
 using std::vector;
 
-class ClusterMeltSegmenterParams		// defaults are sensible for 11025Hz with 0.2 second hopsize
+class Decimator;
+class ConstantQ;
+
+class ClusterMeltSegmenterParams
+// defaults are sensible for 11025Hz with 0.2 second hopsize
 {
 public:
-	ClusterMeltSegmenterParams() : featureType(FEATURE_TYPE_CONSTQ), hopSize(0.2), windowSize(0.6), fmin(62), fmax(16000), 
-	nbins(8), ncomponents(20), 	nHMMStates(40), nclusters(10), histogramLength(15), neighbourhoodLimit(20) { }
-	feature_types featureType;
-	double hopSize;		// in secs
-	double windowSize;	// in secs
-	int fmin;
-	int fmax;
-	int nbins;
-	int ncomponents;
-	int nHMMStates;
-	int nclusters;
-	int histogramLength;
-	int neighbourhoodLimit;
+    ClusterMeltSegmenterParams() : 
+        featureType(FEATURE_TYPE_CONSTQ),
+        hopSize(0.2),
+        windowSize(0.6),
+        fmin(62),
+        fmax(16000), 
+        nbins(8),
+        ncomponents(20),
+ 	nHMMStates(40),
+        nclusters(10),
+        histogramLength(15),
+        neighbourhoodLimit(20) { }
+    feature_types featureType;
+    double hopSize;    	// in secs
+    double windowSize;	// in secs
+    int fmin;
+    int fmax;
+    int nbins;
+    int ncomponents;
+    int nHMMStates;
+    int nclusters;
+    int histogramLength;
+    int neighbourhoodLimit;
 };
 
 class ClusterMeltSegmenter : public Segmenter
 {
 public:
-	ClusterMeltSegmenter(ClusterMeltSegmenterParams params);
-	virtual ~ClusterMeltSegmenter();
-	virtual void initialise(int samplerate);
-	virtual int getWindowsize();
-	virtual int getHopsize();
-	virtual void extractFeatures(double* samples, int nsamples);
-	void setFeatures(const vector<vector<double> >& f);		// provide the features yourself
-	virtual void segment();		// segment into default number of segment-types
-	void segment(int m);		// segment into m segment-types
-	int getNSegmentTypes() { return nclusters; }
+    ClusterMeltSegmenter(ClusterMeltSegmenterParams params);
+    virtual ~ClusterMeltSegmenter();
+    virtual void initialise(int samplerate);
+    virtual int getWindowsize();
+    virtual int getHopsize();
+    virtual void extractFeatures(const double* samples, int nsamples);
+    void setFeatures(const vector<vector<double> >& f);		// provide the features yourself
+    virtual void segment();		// segment into default number of segment-types
+    void segment(int m);		// segment into m segment-types
+    int getNSegmentTypes() { return nclusters; }
+
 protected:
-	//void mpeg7ConstQ();
-	void makeSegmentation(int* q, int len);
+    void makeSegmentation(int* q, int len);
 	
-	Window<double> *window;
-//	int windowLength;			// in samples
-	ConstantQ* constq;	
-	model_t* model;				// the HMM
-	//vector<int> stateSequence;
-	//vector<int> segmentTypeSequence;
-	int* q;						// the decoded HMM state sequence
-	vector<vector<double> > histograms;	
-	
-	feature_types featureType;	
-	double hopSize;		// in seconds
-	double windowSize;	// in seconds
-	
-	// constant-Q parameters
-	int fmin;
-	int fmax;
-	int nbins;
-	int ncoeff;
-	
-	// PCA parameters
-	int ncomponents;
-	
-	// HMM parameters
-	int nHMMStates;
-	
-	// clustering parameters
-	int nclusters;
-	int histogramLength;
-	int neighbourhoodLimit;
+    Window<double> *window;
+    ConstantQ* constq;	
+    model_t* model;				// the HMM
+    int* q;					// the decoded HMM state sequence
+    vector<vector<double> > histograms;	
+    
+    feature_types featureType;	
+    double hopSize;		// in seconds
+    double windowSize;	// in seconds
+    
+    // constant-Q parameters
+    int fmin;
+    int fmax;
+    int nbins;
+    int ncoeff;
+    
+    // PCA parameters
+    int ncomponents;
+    
+    // HMM parameters
+    int nHMMStates;
+    
+    // clustering parameters
+    int nclusters;
+    int histogramLength;
+    int neighbourhoodLimit;
+
+    Decimator *decimator;
 };