I am a second year Electronics student attempting to make a mini project in audio analysis. I am thinking about using FFT to convert and then compare the two audio signals, first one being the "music teacher recording" and second one being "music student recording", comparing the second one with the first one, extracting musical notes, visually representing that and then providing feedback in some form to the "student".

Is this a trivial task or am I looking at something complex? I am familiar with Python and its associated libraries and would like to work with it. Please also point me towards relevant things that I need to learn and libraries that would help.



1 Answer 1


This is definitely possible, but not trivial if it is to be useful.

There are some cantrips on the way. Even with a perfect note for note rendition on the student side, there are still differences to be taken into account:

  • variation in tempo
  • differences in absolute pitch
  • differences in the tones of the instruments (each one sounds a little different, the keywords are "formants" and "harmonics"), which could inhibit the correct pitch identification
  • general SNR, if the acoustic environment is noisy

All the above have to be treated in order to achieve the main requirements neccessary for a valid comparison: time alignment and pitch detection. Also, complexity will rise steeply, if you opt for polyphonic capability.

Python is an excellent choice for this task. You probably already know the two main packages for signal processing: numpy and scipy. They contain basically everything you will need for the algorithmic part.

For everything else, GUI, visualization, hardware interfacing and so on, some googling will get you started.

  • $\begingroup$ Thanks, so is doing FFT over the sampled signal a valid way to move forward or would using it on real data like this lead to issues? $\endgroup$
    – Doodoo28
    Commented Apr 2 at 14:19
  • $\begingroup$ The FFT ist a valid tool for this. I just wanted to point out some issues. $\endgroup$
    – Max
    Commented Apr 2 at 17:49
  • $\begingroup$ Alright, got it. Thanks. $\endgroup$
    – Doodoo28
    Commented Apr 2 at 17:53

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.