blob: 219be720c57629629ca6685c8094bd16aca703f3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#include "partial_tracking.h"
using namespace std;
using namespace simpl;
// ---------------------------------------------------------------------------
// PartialTracking
// ---------------------------------------------------------------------------
PartialTracking::PartialTracking() {
_sampling_rate = 44100;
_max_partials = 100;
_min_partial_length = 0;
_max_gap = 2;
}
PartialTracking::~PartialTracking() {
clear();
}
void PartialTracking::clear() {
_frames.clear();
}
int PartialTracking::sampling_rate() {
return _sampling_rate;
}
void PartialTracking::sampling_rate(int new_sampling_rate) {
_sampling_rate = new_sampling_rate;
}
int PartialTracking::max_partials() {
return _max_partials;
}
void PartialTracking::max_partials(int new_max_partials) {
_max_partials = new_max_partials;
}
int PartialTracking::min_partial_length() {
return _min_partial_length;
}
void PartialTracking::min_partial_length(int new_min_partial_length) {
_min_partial_length = new_min_partial_length;
}
int PartialTracking::max_gap() {
return _max_gap;
}
void PartialTracking::max_gap(int new_max_gap) {
_max_gap = new_max_gap;
}
// Streamable (real-time) partial-tracking.
Peaks PartialTracking::update_partials(Frame* frame) {
Peaks peaks;
return peaks;
}
// Find partials from the sinusoidal peaks in a list of Frames.
Frames PartialTracking::find_partials(Frames frames) {
for(int i = 0; i < frames.size(); i++) {
Peaks peaks = update_partials(frames[i]);
for(int j = 0; j < peaks.size(); j++) {
frames[i]->partial(j, peaks[j]);
}
}
_frames = frames;
return _frames;
}
|