History

minor change: use periodic window

Rob Sykes committed 12 years ago

Commit 1b0c9831 parent 685b47a1 file · +3 −3Browse files

Showing the changes to src/spectrogram.c (1 of 1 file). Show all

Unified · Split

src/spectrogram.c+3−3
@@ -71,7 +71,7 @@ typedef struct { · 70 unmodified lines
7171 int dft_size, step_size, block_steps, block_num, rows, cols, read;
7272 int x_size, end, end_min, last_end;
7373 sox_bool truncated;
74− double buf[MAX_FFT_SIZE], dft_buf[MAX_FFT_SIZE], window[MAX_FFT_SIZE];
74+ double buf[MAX_FFT_SIZE], dft_buf[MAX_FFT_SIZE], window[MAX_FFT_SIZE+1];
7575 double block_norm, max, magnitudes[(MAX_FFT_SIZE>>1) + 1];
7676 float * dBfs;
7777 } priv_t;
@@ -170,7 +170,7 @@ static int getopts(sox_effect_t * effp, int argc, char **argv) · 92 unmodified lines
170170 static double make_window(priv_t * p, int end)
171171 {
172172 double sum = 0, * w = end < 0? p->window : p->window + end;
173− int i, n = p->dft_size - abs(end);
173+ int i, n = 1 + p->dft_size - abs(end);
174174
175175 if (end) memset(p->window, 0, sizeof(p->window));
176176 for (i = 0; i < n; ++i) w[i] = 1;
@@ -185,7 +185,7 @@ static double make_window(priv_t * p, int end) · 8 unmodified lines
185185 (p->dB_range + p->gain) * (1.005 + p->window_adjust / 50) + 6);
186186 }
187187 for (i = 0; i < p->dft_size; ++i) sum += p->window[i];
188− for (i = 0; i < p->dft_size; ++i) p->window[i] *= 2 / sum
188+ for (--n, i = 0; i < p->dft_size; ++i) p->window[i] *= 2 / sum
189189 * sqr((double)n / p->dft_size); /* empirical small window adjustment */
190190 return sum;
191191 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t