Mercurial > hg > svcore
comparison data/model/test/MockWaveModel.cpp @ 1527:710e6250a401 zoom
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 17 Sep 2018 13:51:14 +0100 |
parents | a12fd0456f0c |
children |
comparison
equal
deleted
inserted
replaced
1324:d4a28d1479a8 | 1527:710e6250a401 |
---|---|
20 using namespace std; | 20 using namespace std; |
21 | 21 |
22 MockWaveModel::MockWaveModel(vector<Sort> sorts, int length, int pad) | 22 MockWaveModel::MockWaveModel(vector<Sort> sorts, int length, int pad) |
23 { | 23 { |
24 for (auto sort: sorts) { | 24 for (auto sort: sorts) { |
25 m_data.push_back(generate(sort, length, pad)); | 25 m_data.push_back(generate(sort, length, pad)); |
26 } | 26 } |
27 } | 27 } |
28 | 28 |
29 vector<float> | 29 floatvec_t |
30 MockWaveModel::getData(int channel, sv_frame_t start, sv_frame_t count) const | 30 MockWaveModel::getData(int channel, sv_frame_t start, sv_frame_t count) const |
31 { | 31 { |
32 sv_frame_t i = 0; | 32 sv_frame_t i = 0; |
33 | 33 |
34 // cerr << "MockWaveModel::getData(" << channel << "," << start << "," << count << "): "; | 34 // cerr << "MockWaveModel::getData(" << channel << "," << start << "," << count << "): "; |
35 | 35 |
36 vector<float> data; | 36 floatvec_t data; |
37 | 37 |
38 while (i < count) { | 38 while (i < count) { |
39 sv_frame_t idx = start + i; | 39 sv_frame_t idx = start + i; |
40 if (!in_range_for(m_data[channel], idx)) break; | 40 if (!in_range_for(m_data[channel], idx)) break; |
41 data.push_back(m_data[channel][idx]); | 41 data.push_back(m_data[channel][idx]); |
42 // cerr << data[i] << " "; | 42 // cerr << data[i] << " "; |
43 ++i; | 43 ++i; |
44 } | 44 } |
45 | 45 |
46 // cerr << endl; | 46 // cerr << endl; |
47 | 47 |
48 return data; | 48 return data; |
49 } | 49 } |
50 | 50 |
51 vector<vector<float>> | 51 vector<floatvec_t> |
52 MockWaveModel::getMultiChannelData(int fromchannel, int tochannel, | 52 MockWaveModel::getMultiChannelData(int fromchannel, int tochannel, |
53 sv_frame_t start, sv_frame_t count) const | 53 sv_frame_t start, sv_frame_t count) const |
54 { | 54 { |
55 vector<vector<float>> data(tochannel - fromchannel + 1); | 55 vector<floatvec_t> data(tochannel - fromchannel + 1); |
56 | 56 |
57 for (int c = fromchannel; c <= tochannel; ++c) { | 57 for (int c = fromchannel; c <= tochannel; ++c) { |
58 data.push_back(getData(c, start, count)); | 58 data[c] = getData(c, start, count); |
59 } | 59 } |
60 | 60 |
61 return data; | 61 return data; |
62 } | 62 } |
63 | 63 |
70 data.push_back(0.f); | 70 data.push_back(0.f); |
71 } | 71 } |
72 | 72 |
73 for (int i = 0; i < length; ++i) { | 73 for (int i = 0; i < length; ++i) { |
74 | 74 |
75 double v = 0.0; | 75 double v = 0.0; |
76 | 76 |
77 switch (sort) { | 77 switch (sort) { |
78 case DC: v = 1.0; break; | 78 case DC: v = 1.0; break; |
79 case Sine: v = sin((2.0 * M_PI / 8.0) * i); break; | 79 case Sine: v = sin((2.0 * M_PI / 8.0) * i); break; |
80 case Cosine: v = cos((2.0 * M_PI / 8.0) * i); break; | 80 case Cosine: v = cos((2.0 * M_PI / 8.0) * i); break; |
81 case Nyquist: v = (i % 2) * 2 - 1; break; | 81 case Nyquist: v = (i % 2) * 2 - 1; break; |
82 case Dirac: v = (i == 0) ? 1.0 : 0.0; break; | 82 case Dirac: v = (i == 0) ? 1.0 : 0.0; break; |
83 } | 83 } |
84 | 84 |
85 data.push_back(float(v)); | 85 data.push_back(float(v)); |
86 } | 86 } |
87 | 87 |
88 for (int i = 0; i < pad; ++i) { | 88 for (int i = 0; i < pad; ++i) { |
89 data.push_back(0.f); | 89 data.push_back(0.f); |
90 } | 90 } |