Frequency spectrum analysis

Are there any plans to add frequency analysis (spectrum FFT) to the UI?

Or are there any ways to output the data into something else which can plot the data as an FFT?

Hi @johnofleek and welcome to the Joulescope forum!

The Joulescope UI does have a way to do frequency analysis today. In the Waveform widget, right-click on the x-axis, selection AnnotationsDual markers. Left click and drag on each dual marker to position them on the region of interest. The right-click on one of the dual markers and select AnalysisFrequency.

frequency.py source code

Note that this is offline analysis (not real-time) and the y-axis scale is likely not offset “correctly”. However, it is in dB, so relative peak measurements are meaningful.

Does this work for you?

Thanks for the quick response
That does function - but is a bit too hard to use for my application
What i’m really looking for is something a bit more like the functions in audio tools like sonic visualiser
Even better like a spectrum analyser instrument.
I’m also particularly interested in 1 Hz buckets for noise root Hz work
Sorry - I’ve just discovered that the joulescope 220 works fairly well to capture analogue signals from differential amplifier outputs and then started to wonder if I could view or export the data for better frequency spectrum analysis

Hi @johnofleek - it sounds like you really want real-time operation rather than the existing batch mode processing. The JS220 is a nice isolated differential voltage probe with ~300 kHz bandwidth. While adding real-time spectrum analyzer views (spectrum, spectrogram, waterfall) is definitely something I would like to add to the Joulescope UI, it is unfortunately not at the top of the list.

The qspectrumanalyzer package looks really nice, and might do what you need. Unfortunately, it does not look like it has been maintained. Since it’s GPL3 licensed, we would never be able to distribute with the Joulescope UI, which is Apache 2.0 licensed. However, the pyjoulescope_driver package should make it easy to add Joulescopes as a new backend.

sigrok is another open-source package, but not sure how good the spectrum analyzer support is.

Here is a super simple example that used pyaudio as the input. It should be pretty quick to hook it up to pyjoulescope_driver, (see the data_fn callback in read_by_pyjoulescope_driver).

Is creating this capability something that matches your skills and you would want to put in the time?