From 86f2b904e99007b2a5802c66989e70c25cf3bc74 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 26 Mar 2013 15:17:16 +0000 Subject: squared average --- spectrogram.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/spectrogram.c b/spectrogram.c index 1c6f7e6..c0611ff 100644 --- a/spectrogram.c +++ b/spectrogram.c @@ -146,7 +146,7 @@ int draw(double *left, double *right, int p, int step) { int x, y, l, r, lx, rx; - int lo, mi, hi; + double lo, mi, hi, av; if (SDL_MUSTLOCK(screen) && SDL_LockSurface(screen)) return -1; @@ -163,12 +163,13 @@ draw(double *left, double *right, int p, int step) if (r >= p) r = p - 1; + av = pow(left[x] + right[x], 2.0); if (x > 100 / step && x < 800 / step) - lo += l + r; + lo += av; if (x > 500 / step && x < 2000 / step) - mi += l + r; + mi += av; if (x > 1500 / step && x < 5000 / step) - hi += l + r; + hi += av; lx = wf_left.x + (flip_left ? wf_left.w - x - 1 : x); rx = wf_right.x + (flip_right ? wf_right.w - x - 1 : x); @@ -187,11 +188,15 @@ draw(double *left, double *right, int p, int step) } /* XXX */ - lo /= 700 / step; - mi /= 1500 / step; - hi /= 3500 / step; - - //warnx("%3d %3d %3d", lo, mi, hi); + lo = sqrt(lo / (700 / step)); + if (lo > p) + lo = p; + mi = sqrt(mi / (1500 / step)); + if (mi > p) + mi = p; + hi = sqrt(hi / (3500 / step)); + if (hi > p) + hi = p; SDL_FillRect(screen, &dl_lo, SDL_MapRGB(screen->format, lo, 0, 0)); SDL_FillRect(screen, &dl_mi, SDL_MapRGB(screen->format, 0, mi, 0)); -- cgit v1.2.3