Hallo Neil! I finally got a chance to have a look at your work, and wow. thank you for your hardwork! It's incredible how accurate the algorithm managed to calculate the period....
I do have some questions though. But it may just be something easily modified within the code or having better recordings...
Firstly, is there a reason that you didn't filter the audio files? There is a lot of background noise in the recordings. Or was this simply not required, being FindPeaks ignored anything below 0.002?
What did you mean by DC? A resonsant frequency of some kind?
You mentioned the length of the data was low...the other files are around 60 seconds or so. If I use a longer file length, would the 0 padding be required? To be honest, I'm not sure I quite understand the additional padding at all. But you don't need to explain it.
I'm unsure how familiar you are with watches or specifically their movements and inner workings, if you are ignore this paragraph... ETA is quite famous for having high quality well made movements. The Russians are also known between the 40s and 60s to have some high quality little machines. In general swiss movements are good. However, some brands Phenix for example although nice quality watches, were known to try new things, having made their movements completely inhouse...sometimes doing odd things, which would cause a lot of weird "inner" housing noise.
I noticed the eta2412 produces about 320~ peaks within the 11 seconds clip (from your algorithim I mean) which provides lots of data to produce the accurate calculated Hz/Period (if I understood what is going on anyways) An interesting point of this movement is it's relatively simplicity, but also the use of a timed annular balance wheel and spring regulator.
The Phenix 140SC However, has a much more "complicated' design, on top of it's age (the particular watch I have I mean) It uses a "free spring balance" meaning it's regulated through the interia of the wheel and some other interesting design tidbits, this makes the watch more complicated and difficult to adjust/regulate, however should technially produce a more accurate watch). When running through the algorithm, this particular watch (which has a hand measured period of 0.187, which means the watch runs close to 2 minutes fast per day) produces about 100 peaks (when using a filtered version 30 seconds long, 150~ unfiltered)

The calculated period at the end is 0.19987, which unfortunately is very wrong compared to the hand produced measurement
Another example is the Chaika1600 movement. When running through the algorithm produces only 27 peaks across 30 seconds and in the end a period of 0.166689. This isn't far away from the hand measured value of 0.1678, which would be about 9 seconds slow per day.

A Third watch the Phenix 130, has a measured period of 0.19989, when running through the algorithm I get 4000 (!) peaks, and a period of 0.19974. Which is right on the money.
These three clips I changed the cutoff in findpeak to 0.001, as a side note.

Here I would ask if you have an idea of why there is such a huge variation in detected peaks. I feel like there must be an issue with the "shape" of each tick, I will have to investigate to see if they are all wildly different between each watch/fork design
Watches per day generally will drift in a tolerance generally -5/+12 [s] depending on a million things (for good watches of course). because of that, getting 0.1666 or 0.1667 or even 0.165 from hand measured and/or algorithmic data must be averaged over several days with environmental data to get the kind of final research data I'm looking for. This I think shows an incredible robustness of your algorithm and accuracy, both comparing to a 6hz or 5hz signals/watches, and because of that, I can only praise and say thank you.
Unfortunately, the Phenix140SC seems to be measured completely wrong...My assumption would be because of the quality and consistency of the recordings/signals. Could this be over lying issue? My apologies if there is something trivial about the miscalculation I should be easily seeing in the code.
If you think the samples are simply poor, I can gladly record new ones, and retest before having to put more work/thought into the algorithm.
Thanks again so much for the help!