I am accordion repairer and also an engineer. I plan to make a useful tool in Python to help with tuning. In an accordion, there are several reeds making different sounds at different frequencies, and those create the specific tremolo of accordion. For tuning them, I need to disable one of the reeds, but this doesn't really work, because where the 3 reeds work together, there is a coupling effect, so I need a tool to estimate precisely the fundamental frequency of those sounds with are the same note slightly out of tune.

I wonder if you have any idea as to how to data extract the beat frequency from a recorded sound from three audio sources for example (338 ,440 and 442 Hz).

I was wondering if it is possible in the time domain, with ondelet transforms. This must be implemented in Python.

  • $\begingroup$ See en.wikipedia.org/wiki/Beat_(acoustics) $\endgroup$
    – doetoe
    Aug 23, 2021 at 16:10
  • $\begingroup$ Do you mean experimentally or how to calculate from knowing the source frequencies? $\endgroup$
    – Bill N
    Aug 23, 2021 at 19:43
  • $\begingroup$ Experimentally from an audio source (as written in the question) $\endgroup$
    – zaord
    Aug 25, 2021 at 15:54

2 Answers 2


Well normally to calculate frequencies out of a sound signal one uses a 'fourier transforms'

Here is a python example to do it with a sound file. https://www.dummies.com/programming/python/performing-a-fast-fourier-transform-fft-on-a-sound-file/

Here is a bit explaining about the fourier math, its interesting, and the concept isnt that complex https://www.youtube.com/watch?v=spUNpyF58BY


Not sure this can be very helpful but a simple idea would be to filter out frequencies above, let's say, 20 Hz (or even lower) and then perform a Fourier Transform. Please keep in mind that you will have to allow for enough acquisition time to be able to get valid information for low frequencies. You should sample for roughly one second to acquire two full periods (which is a rough minimum recommendation) of a 2 Hz signal. Furthermore you will have to get enough samples to be able to get good resolution with the Fourier Transform at low frequencies.

Another "naive" idea is to do some filtering (to get rid of audio frequencies) and try to count the zero crossings (per second) to get an estimate of the beating frequency.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.