diff --git a/src/common/debug.c b/src/common/debug.c index e4677e7..fe4de48 100644 --- a/src/common/debug.c +++ b/src/common/debug.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "sample.h" #include "debug.h" #include "display.h" @@ -118,6 +119,26 @@ const char *debug_amplitude(double level) return text; } +#define level2db(level) (20 * log10(level)) + +const char *debug_db(double level_db) +{ + static char text[128]; + int l; + + strcpy(text, ": . : . : . : . : . : . : . : . : "); + if (level_db <= 0.0) + return text; + l = (int)round(level2db(level_db)); + if (l > 3) + return text; + if (l < -48) + return text; + text[l + 48] = '*'; + + return text; +} + void debug_list_cat(void) { int i; diff --git a/src/common/debug.h b/src/common/debug.h index 989ee9f..b5b3e2e 100644 --- a/src/common/debug.h +++ b/src/common/debug.h @@ -27,6 +27,7 @@ void _printdebug(const char *file, const char *function, int line, int cat, int level, int chan, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 7, 8))); const char *debug_amplitude(double level); +const char *debug_db(double level_db); void debug_list_cat(void); int parse_debug_opt(const char *opt); diff --git a/src/test/test_filter.c b/src/test/test_filter.c index d78578a..0f7c6b9 100644 --- a/src/test/test_filter.c +++ b/src/test/test_filter.c @@ -13,31 +13,12 @@ static double get_level(double *samples) { -#if 0 - int i; - double last = 0, envelope = 0; - int up = 0; - - for (i = SAMPLERATE/2; i < SAMPLERATE; i++) { - if (last < samples[i]) { - up = 1; - } else if (last > samples[i]) { - if (up) { - if (last > envelope) - envelope = last; - } - up = 0; - } - last = samples[i]; - } -#else int i; double envelope = 0; for (i = SAMPLERATE/2; i < SAMPLERATE; i++) { if (samples[i] > envelope) envelope = samples[i]; } -#endif return envelope; } @@ -72,7 +53,7 @@ int main(void) gen_samples(samples, (double)i); filter_process(&filter_low, samples, SAMPLERATE); level = get_level(samples); - printf("%4d Hz: %.1f dB", i, level2db(level)); + printf("%s%4d Hz: %.1f dB", debug_db(level), i, level2db(level)); if (i == 1000) printf(" cutoff\n"); else if (i == 2000) @@ -91,7 +72,7 @@ int main(void) gen_samples(samples, (double)i); filter_process(&filter_high, samples, SAMPLERATE); level = get_level(samples); - printf("%4d Hz: %.1f dB", i, level2db(level)); + printf("%s%4d Hz: %.1f dB", debug_db(level), i, level2db(level)); if (i == 2000) printf(" cutoff\n"); else if (i == 1000) @@ -112,7 +93,7 @@ int main(void) filter_process(&filter_low, samples, SAMPLERATE); filter_process(&filter_high, samples, SAMPLERATE); level = get_level(samples); - printf("%4d Hz: %.1f dB", i, level2db(level)); + printf("%s%4d Hz: %.1f dB", debug_db(level), i, level2db(level)); if (i == 1000) printf(" cutoff high\n"); else if (i == 2000)