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@16
|
18 #include "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 }
|