annotate dsp/segmentation/Segmenter.h @ 321:f1e6be2de9a5

A threshold (delta) is added in the peak picking parameters structure (PPickParams). It is used as an offset when computing the smoothed detection function. A constructor for the structure PPickParams is also added to set the parameters to 0 when a structure instance is created. Hence programmes using the peak picking parameter structure and which do not set the delta parameter (e.g. QM Vamp note onset detector) won't be affected by the modifications. Functions modified: - dsp/onsets/PeakPicking.cpp - dsp/onsets/PeakPicking.h - dsp/signalconditioning/DFProcess.cpp - dsp/signalconditioning/DFProcess.h
author mathieub <mathieu.barthet@eecs.qmul.ac.uk>
date Mon, 20 Jun 2011 19:01:48 +0100
parents d5014ab8b0e5
children 175e51ae78eb
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@309 9 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London.
c@309 10
c@309 11 This program is free software; you can redistribute it and/or
c@309 12 modify it under the terms of the GNU General Public License as
c@309 13 published by the Free Software Foundation; either version 2 of the
c@309 14 License, or (at your option) any later version. See the file
c@309 15 COPYING included with this distribution for more information.
c@243 16 *
c@243 17 */
c@243 18
c@243 19 #include <vector>
c@243 20 #include <iostream>
c@243 21
c@243 22 using std::vector;
c@243 23 using std::ostream;
c@243 24
c@243 25 class Segment
c@243 26 {
c@243 27 public:
c@243 28 int start; // in samples
c@243 29 int end;
c@243 30 int type;
c@243 31 };
c@243 32
c@243 33 class Segmentation
c@243 34 {
c@243 35 public:
c@243 36 int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1}
c@243 37 int samplerate;
c@243 38 vector<Segment> segments;
c@243 39 };
c@243 40
c@243 41 ostream& operator<<(ostream& os, const Segmentation& s);
c@243 42
c@243 43 class Segmenter
c@243 44 {
c@243 45 public:
c@243 46 Segmenter() {}
c@243 47 virtual ~Segmenter() {}
c@243 48 virtual void initialise(int samplerate) = 0; // must be called before any other methods
c@243 49 virtual int getWindowsize() = 0; // required window size for calls to extractFeatures()
c@243 50 virtual int getHopsize() = 0; // required hop size for calls to extractFeatures()
c@249 51 virtual void extractFeatures(const double* samples, int nsamples) = 0;
c@243 52 virtual void segment() = 0; // call once all the features have been extracted
c@243 53 virtual void segment(int m) = 0; // specify desired number of segment-types
c@243 54 virtual void clear() { features.clear(); }
c@243 55 const Segmentation& getSegmentation() const { return segmentation; }
c@243 56 protected:
c@243 57 vector<vector<double> > features;
c@243 58 Segmentation segmentation;
c@243 59 int samplerate;
c@243 60 };
c@243 61
c@243 62 #endif