File tree Expand file tree Collapse file tree 2 files changed +11
-5
lines changed Expand file tree Collapse file tree 2 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -320,7 +320,7 @@ class AudioFFTBase : public AudioPrint {
320
320
T windowedSample (T sample){
321
321
T result = sample;
322
322
if (cfg.window_function !=nullptr ){
323
- result = cfg.window_function ->factor (current_pos) * sample;
323
+ result = cfg.window_function ->ratio (current_pos) * sample;
324
324
}
325
325
return result;
326
326
}
Original file line number Diff line number Diff line change @@ -24,25 +24,31 @@ class WindowFunction {
24
24
public:
25
25
WindowFunction () = default ;
26
26
27
+ // / Setup the window function providing the fft length
27
28
virtual void begin (int samples) {
28
29
this ->samples_minus_1 = -1 .0f + samples;
29
30
this ->i_samples = samples;
31
+ this ->i_half_samples = samples / 2 ;
30
32
}
31
33
32
34
inline float ratio (int idx) {
33
- float result = (static_cast <float >(idx)) / samples_minus_1;
34
- return result>1 .0f ? 1 .0f : result;
35
+ return idx < i_half_samples ? factor (idx) : factor (i_samples-idx);
35
36
}
36
37
37
38
inline int samples () { return i_samples; }
38
- virtual float factor (int idx) = 0;
39
39
40
40
protected:
41
41
float samples_minus_1 = 0 .0f ;
42
42
int i_samples = 0 ;
43
+ int i_half_samples = 0 ;
43
44
const float twoPi = 6 .28318531f ;
44
45
const float fourPi = 12 .56637061f ;
45
46
const float sixPi = 18 .84955593f ;
47
+
48
+ // virtual function provide implementation in subclass
49
+ virtual float factor (int idx) = 0;
50
+
51
+
46
52
};
47
53
48
54
/* *
@@ -64,7 +70,7 @@ class BufferedWindow : public WindowFunction {
64
70
len = samples / 2 ;
65
71
buffer.resize (len);
66
72
for (int j = 0 ; j < len; j++) {
67
- buffer[j] = p_wf->factor (j);
73
+ buffer[j] = p_wf->ratio (j);
68
74
}
69
75
}
70
76
}
You can’t perform that action at this time.
0 commit comments