qm-dsp
1.8
BeatSpectrum.cpp
Go to the documentation of this file.
1
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3
/*
4
QM DSP Library
5
6
Centre for Digital Music, Queen Mary, University of London.
7
This file copyright 2008 Kurt Jacobson and QMUL.
8
9
This program is free software; you can redistribute it and/or
10
modify it under the terms of the GNU General Public License as
11
published by the Free Software Foundation; either version 2 of the
12
License, or (at your option) any later version. See the file
13
COPYING included with this distribution for more information.
14
*/
15
16
#include "
BeatSpectrum.h
"
17
18
#include "
maths/CosineDistance.h
"
19
20
using
std::vector;
21
22
vector<double>
BeatSpectrum::process
(
const
vector<vector<double> > &m)
23
{
24
int
origin = 0;
25
int
sz = m.size()/2;
26
27
int
i, j, k;
28
29
vector<double> v(sz);
30
for
(i = 0; i < sz; ++i) v[i] = 0.0;
31
32
CosineDistance
cd;
33
34
for
(i = origin; i < origin + sz; ++i) {
35
36
k = 0;
37
38
for
(j = i + 1; j < i + sz + 1; ++j) {
39
40
v[k++] += cd.
distance
(m[i], m[j]);
41
}
42
}
43
44
// normalize
45
46
double
max = 0.0;
47
48
for
(i = 0; i < sz; ++i) {
49
if
(v[i] > max) max = v[i];
50
}
51
52
if
(max > 0.0) {
53
for
(i = 0; i < sz; ++i) {
54
v[i] /= max;
55
}
56
}
57
58
return
v;
59
}
60
BeatSpectrum.h
CosineDistance.h
BeatSpectrum::process
std::vector< double > process(const std::vector< std::vector< double > > &inmatrix)
Definition
BeatSpectrum.cpp:22
CosineDistance
Definition
CosineDistance.h:25
CosineDistance::distance
double distance(const vector< double > &v1, const vector< double > &v2)
Definition
CosineDistance.cpp:23
dsp
rhythm
BeatSpectrum.cpp
Generated by
1.9.8