Here is my JavaFX spectrum analyzer for bachelor's degree in Saint-Petersburg State University of Architecture and Civil Engineering
You can get audio-signal from any input-device. Change range, choose window function (you have a lot), choose speed and resolution. Save and open saved spectrum, get a difference and get a legend.
Also you can set a lot of features in settings section.
I plan to write some arcticle on stackoverflow about signal processing. I made huge amount of work so please indicate the authorship in your work. Thank you.