#!/usr/bin/env python3 import sys, os, struct import numpy as np SR = 44100 def read_wav(path): d = open(path, 'rb').read() i = 12 ch = bps = None data_off = data_sz = None while i + 8 <= len(d): cid = d[i:i+4]; sz = struct.unpack(' -120 and bin[f] == np.max(bin[max(0,f-8):f+9]): peakset.add(f) print("peaks in input (Hz):", sorted(round(fr[f]) for f in peakset if fr[f] < 18000)) colw = 22 hdr = f"{'Hz':>6} {'IN dB':>7}" + ''.join(f" {os.path.basename(p)[:colw]:>{colw}}" for p in outs) print(hdr) for f in sorted(peakset): if fr[f] < 18000: row = f"{fr[f]:6.0f} {bin[f]:7.1f}" refbase = None for p in outs: y, _ = read_wav(p) b, f2 = db_spec_mono(y) # nearest bin to fr[f] idx = int(round(fr[f]*(len(f2)-1)/f2[-1])) idx = int(np.argmin(np.abs(f2 - fr[f]))) if p == outs[0]: refbase = b[idx] row += f" {b[idx]:{colw}.2f}" print(row) if __name__ == '__main__': main()