annotate dsp/segmentation/Segmenter.h @ 251:c3600d3cfe5c

* Add timbral (MFCC) feature option to segmenter
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 10 Jan 2008 16:41:33 +0000
parents 18a0dffa5c1a
children e5907ae6de17
rev   line source
c@243 1 #ifndef _SEGMENTER_H
c@243 2 #define _SEGMENTER_H
c@243 3
c@243 4 /*
c@243 5 * Segmenter.h
c@243 6 * soundbite
c@243 7 *
c@243 8 * Created by Mark Levy on 23/03/2006.
c@243 9 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London. All rights reserved.
c@243 10 *
c@243 11 */
c@243 12
c@243 13 #include <vector>
c@243 14 #include <iostream>
c@243 15
c@243 16 using std::vector;
c@243 17 using std::ostream;
c@243 18
c@243 19 class Segment
c@243 20 {
c@243 21 public:
c@243 22 int start; // in samples
c@243 23 int end;
c@243 24 int type;
c@243 25 };
c@243 26
c@243 27 class Segmentation
c@243 28 {
c@243 29 public:
c@243 30 int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1}
c@243 31 int samplerate;
c@243 32 vector<Segment> segments;
c@243 33 };
c@243 34
c@243 35 ostream& operator<<(ostream& os, const Segmentation& s);
c@243 36
c@243 37 class Segmenter
c@243 38 {
c@243 39 public:
c@243 40 Segmenter() {}
c@243 41 virtual ~Segmenter() {}
c@243 42 virtual void initialise(int samplerate) = 0; // must be called before any other methods
c@243 43 virtual int getWindowsize() = 0; // required window size for calls to extractFeatures()
c@243 44 virtual int getHopsize() = 0; // required hop size for calls to extractFeatures()
c@249 45 virtual void extractFeatures(const double* samples, int nsamples) = 0;
c@243 46 virtual void segment() = 0; // call once all the features have been extracted
c@243 47 virtual void segment(int m) = 0; // specify desired number of segment-types
c@243 48 virtual void clear() { features.clear(); }
c@243 49 const Segmentation& getSegmentation() const { return segmentation; }
c@243 50 protected:
c@243 51 vector<vector<double> > features;
c@243 52 Segmentation segmentation;
c@243 53 int samplerate;
c@243 54 };
c@243 55
c@243 56 #endif