diff --git a/tools/peakdump.c b/tools/peakdump.c new file mode 100644 index 0000000000..7d88a294f4 --- /dev/null +++ b/tools/peakdump.c @@ -0,0 +1,49 @@ +// gcc -o peakdump peakdump.c -Wall -O3 -lm +// inspect ardour .peak files + +#include +#include +#include + +#define _FPP 256 + +int main (int argc, char **argv) { + int c = 0, d = 0; + float thresh = -1.f; + + if (argc < 2 || argc > 3) { + fprintf(stderr, "usage: %s [threshold] \n", argv[0]); + return -1; + } + + if (argc == 3) { + thresh = atof(argv[1]); + } + + FILE *F = fopen(argv[argc-1], "r"); + + if (!F) { + fprintf(stderr, "Cannot open file '%s'\n", argv[argc-1]); + return -1; + } + + printf(" # ) audio sample range : MIN MAX\n"); + while (!feof(F)) { + struct PeakData { + float min; + float max; + } buf; + + if (fread(&buf, sizeof(struct PeakData), 1, F) <= 0) { + break; + } + if (fabsf(buf.min) > thresh || fabsf(buf.max) > thresh) { + printf("%8d) %10d - %10d: %+.3f %+.3f\n", ++d, + _FPP * c, _FPP * (c + 1) - 1, + buf.min, buf.max); + } + ++c; + } + fclose(F); + return 0; +}