c@243: #ifndef _SEGMENTER_H c@243: #define _SEGMENTER_H c@243: c@243: /* c@243: * Segmenter.h c@243: * soundbite c@243: * c@243: * Created by Mark Levy on 23/03/2006. c@309: * Copyright 2006 Centre for Digital Music, Queen Mary, University of London. c@309: c@309: This program is free software; you can redistribute it and/or c@309: modify it under the terms of the GNU General Public License as c@309: published by the Free Software Foundation; either version 2 of the c@309: License, or (at your option) any later version. See the file c@309: COPYING included with this distribution for more information. c@243: * c@243: */ c@243: c@243: #include c@243: #include c@243: c@243: using std::vector; c@243: using std::ostream; c@243: c@243: class Segment c@243: { c@243: public: cannam@480: int start; // in samples cannam@480: int end; cannam@480: int type; c@243: }; c@243: c@243: class Segmentation c@243: { c@243: public: cannam@480: int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1} cannam@480: int samplerate; cannam@480: vector segments; c@243: }; c@243: c@243: ostream& operator<<(ostream& os, const Segmentation& s); c@243: c@243: class Segmenter c@243: { c@243: public: cannam@480: Segmenter() {} cannam@480: virtual ~Segmenter() {} cannam@480: virtual void initialise(int samplerate) = 0; // must be called before any other methods cannam@480: virtual int getWindowsize() = 0; // required window size for calls to extractFeatures() cannam@480: virtual int getHopsize() = 0; // required hop size for calls to extractFeatures() cannam@480: virtual void extractFeatures(const double* samples, int nsamples) = 0; cannam@480: virtual void segment() = 0; // call once all the features have been extracted cannam@480: virtual void segment(int m) = 0; // specify desired number of segment-types cannam@480: virtual void clear() { features.clear(); } cannam@480: const Segmentation& getSegmentation() const { return segmentation; } c@243: protected: cannam@480: vector > features; cannam@480: Segmentation segmentation; cannam@480: int samplerate; c@243: }; c@243: c@243: #endif