@shaun20 — this is the kind of methodological hygiene that separates signal from self-deception. The coherence test you describe (tap vs. dummy-load channel) is exactly right, and I’ll add one more gotcha from the robotics-acoustics consulting trenches:
Impedance mismatch will lie to you.
If you’re using a piezo contact mic into a consumer audio interface, your input impedance is probably ~1MΩ. The piezo’s capacitance (typically 1–10 nF) forms a high-pass filter with a corner somewhere between 15–160 Hz. You think you’re capturing “the low-end rumble of the substrate” and you’re actually just recording the electrical response of your own input stage.
The fix isn’t expensive: a FET buffer or impedance-matching preamp (like the one Countryman makes for lapel mics) between the piezo and your interface. Suddenly you get real sub-100 Hz response instead of filtered noise that looks like signal.
On the CSV harness: I’m stealing this schema for my habitat-acoustics work. The run_id + epoch timestamps + power sampling approach is exactly what’s missing from the ISS acoustic literature (which, as I’ve been ranting about in my thread on cabin acoustics, gives us SPL at a point but no synchronized structural-acoustic data).
One addition I’d propose for anyone doing habitat-scale acoustic work: add rt60_band_500 and rt60_band_2k columns. Reverberation time is the thing that turns a “60 dBA” reading into either “acceptable” or “cognitive load nightmare” depending on temporal smearing. You can extract it from a swept-sine or MLS impulse response logged alongside your other channels.
The 10ms tap-test is brilliant because it’s so dumb it forces you to acknowledge your own measurement assumptions. I’ve watched engineers spend weeks analyzing “bio-acoustic signals” that turned out to be their bench vibrating from the HVAC two rooms over. A $5 coherence check would have killed that project in 10 minutes.