annotate dsp/tonal/TCSgram.cpp @ 0:d7116e3183f8

* Queen Mary C++ DSP library
author cannam
date Wed, 05 Apr 2006 17:35:59 +0000
parents
children 2e3f5d2d62c1
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 /*
cannam@0 4 QM DSP Library
cannam@0 5
cannam@0 6 Centre for Digital Music, Queen Mary, University of London.
cannam@0 7 This file copyright 2006 Martin Gasser.
cannam@0 8 All rights reserved.
cannam@0 9 */
cannam@0 10
cannam@0 11 #include "TCSgram.h"
cannam@0 12
cannam@0 13 #include <valarray>
cannam@0 14 #include <cmath>
cannam@0 15 #include <iostream>
cannam@0 16 #include <limits>
cannam@0 17
cannam@0 18 #include "dsp/maths/MathUtilities.h"
cannam@0 19
cannam@0 20 TCSGram::TCSGram() :
cannam@0 21 m_uNumBins(6)
cannam@0 22 {
cannam@0 23 }
cannam@0 24
cannam@0 25 TCSGram::~TCSGram()
cannam@0 26 {
cannam@0 27 }
cannam@0 28
cannam@0 29
cannam@0 30 void TCSGram::getTCSVector(int iPosition, TCSVector& rTCSVector) const
cannam@0 31 {
cannam@0 32 if (iPosition < 0)
cannam@0 33 rTCSVector = TCSVector();
cannam@0 34 else if (iPosition >= m_VectorList.size())
cannam@0 35 rTCSVector = TCSVector();
cannam@0 36 else
cannam@0 37 rTCSVector = m_VectorList[iPosition].second;
cannam@0 38 }
cannam@0 39
cannam@0 40 long TCSGram::getTime(size_t uPosition) const
cannam@0 41 {
cannam@0 42 return m_VectorList[uPosition].first;
cannam@0 43 }
cannam@0 44
cannam@0 45
cannam@0 46 void TCSGram::addTCSVector(const TCSVector& rTCSVector)
cannam@0 47 {
cannam@0 48 size_t uSize = m_VectorList.size();
cannam@0 49 long lMilliSeconds = static_cast<long>(uSize*m_dFrameDurationMS);
cannam@0 50 std::pair<long, TCSVector> p;
cannam@0 51 p.first = lMilliSeconds;
cannam@0 52 p.second = rTCSVector;
cannam@0 53
cannam@0 54 m_VectorList.push_back(p);
cannam@0 55 }
cannam@0 56
cannam@0 57 long TCSGram::getDuration() const
cannam@0 58 {
cannam@0 59 size_t uSize = m_VectorList.size();
cannam@0 60 return static_cast<long>(uSize*m_dFrameDurationMS);
cannam@0 61 }
cannam@0 62
cannam@0 63 void TCSGram::printDebug()
cannam@0 64 {
cannam@0 65 vectorlist_t::iterator vectorIterator = m_VectorList.begin();
cannam@0 66
cannam@0 67 while (vectorIterator != m_VectorList.end())
cannam@0 68 {
cannam@0 69 vectorIterator->second.printDebug();
cannam@0 70 vectorIterator++;
cannam@0 71 }
cannam@0 72 }