annotate dsp/tonal/TCSgram.cpp @ 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 e4a57215ddee
rev   line source
c@225 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@225 2
c@225 3 /*
c@225 4 QM DSP Library
c@225 5
c@225 6 Centre for Digital Music, Queen Mary, University of London.
c@225 7 This file copyright 2006 Martin Gasser.
c@309 8
c@309 9 This program is free software; you can redistribute it and/or
c@309 10 modify it under the terms of the GNU General Public License as
c@309 11 published by the Free Software Foundation; either version 2 of the
c@309 12 License, or (at your option) any later version. See the file
c@309 13 COPYING included with this distribution for more information.
c@225 14 */
c@225 15
c@225 16 #include "TCSgram.h"
c@225 17
c@225 18 #include <valarray>
c@225 19 #include <cmath>
c@225 20 #include <iostream>
c@225 21 #include <limits>
c@225 22
c@241 23 #include "maths/MathUtilities.h"
c@225 24
c@225 25 TCSGram::TCSGram() :
c@225 26 m_uNumBins(6)
c@225 27 {
c@225 28 }
c@225 29
c@225 30 TCSGram::~TCSGram()
c@225 31 {
c@225 32 }
c@225 33
c@225 34
c@225 35 void TCSGram::getTCSVector(int iPosition, TCSVector& rTCSVector) const
c@225 36 {
c@225 37 if (iPosition < 0)
c@225 38 rTCSVector = TCSVector();
c@225 39 else if (iPosition >= m_VectorList.size())
c@225 40 rTCSVector = TCSVector();
c@225 41 else
c@225 42 rTCSVector = m_VectorList[iPosition].second;
c@225 43 }
c@225 44
c@225 45 long TCSGram::getTime(size_t uPosition) const
c@225 46 {
c@225 47 return m_VectorList[uPosition].first;
c@225 48 }
c@225 49
c@225 50
c@225 51 void TCSGram::addTCSVector(const TCSVector& rTCSVector)
c@225 52 {
c@225 53 size_t uSize = m_VectorList.size();
c@225 54 long lMilliSeconds = static_cast<long>(uSize*m_dFrameDurationMS);
c@225 55 std::pair<long, TCSVector> p;
c@225 56 p.first = lMilliSeconds;
c@225 57 p.second = rTCSVector;
c@225 58
c@225 59 m_VectorList.push_back(p);
c@225 60 }
c@225 61
c@225 62 long TCSGram::getDuration() const
c@225 63 {
c@225 64 size_t uSize = m_VectorList.size();
c@225 65 return static_cast<long>(uSize*m_dFrameDurationMS);
c@225 66 }
c@225 67
c@225 68 void TCSGram::printDebug()
c@225 69 {
c@225 70 vectorlist_t::iterator vectorIterator = m_VectorList.begin();
c@225 71
c@225 72 while (vectorIterator != m_VectorList.end())
c@225 73 {
c@225 74 vectorIterator->second.printDebug();
c@225 75 vectorIterator++;
c@225 76 }
c@225 77 }