A fully fledged lock-in amplifier running at 25 kHz sampling rate @ 12-bit on an Adafruit M4 microprocessor board with an extensive Python graphical user interface showing real-time signals, interactive filter design and real-time power spectra.
More efficient lockin_DAQ_update() by using unbuffered C-accelerated numpy operations, i.e. numpy.ufunc
Using numpy_ringbuffer instead of collections.deque: speed improvement
Above changes result in ~4 to 5% less cpu time needed, measured on computer Onera.