In-house Python Library for Acoustic Signal Processing (LASP): fractional octave filter banks, Fourier analysis, code for doing acoustic measurements and beamforming tools. http://code.ascee.nl/ASCEE/lasp
Go to file
2022-09-22 10:18:38 +02:00
cmake Removed old testing code. Improved Doxyfile, added logo to Doxygen. Added pytest testing config. 2022-09-03 16:07:44 +02:00
examples Updated pyproject and doxyfile, and readme 2022-09-22 10:11:47 +02:00
img Removed old testing code. Improved Doxyfile, added logo to Doxygen. Added pytest testing config. 2022-09-03 16:07:44 +02:00
scripts DaqConfiguration(s) back in place. Time to couple some stuff to ACME 2022-08-01 17:26:22 +02:00
src/lasp Code cleanup. RescanDaqdevices changed API. DaqApi string returns only apiname. Added comments, added Doxygen groups, exported FFT wisdom load / store to Python. SLM stores reference level squared. Added comments on SLM Lpeak, Leq and Lmax, a lot of using rte = std::runtime_error, added Window string conversion, Pybind11 enum no longer exports values, added cpp_enum to convert Qty to an enumerated value in C++ code. Removed class and methods to fill comboboxes. Does not belong in LASP, but in ACME instead. DeviceInfo has operator string(). 2022-09-22 10:18:38 +02:00
test Updated pyproject and doxyfile, and readme 2022-09-22 10:11:47 +02:00
third_party Added threadpool, biquadbank could be working for equalizer. First steps of SLM and AvPowerSpectra 2022-08-11 14:47:44 +02:00
.gitattributes Split up GUI in different Widgets, added revtime, added figure list possibilities, added Qt Resources, added About panel, added lots of comments, export and import of measurements 2018-05-02 16:29:53 +02:00
.gitignore Removed old testing code. Improved Doxyfile, added logo to Doxygen. Added pytest testing config. 2022-09-03 16:07:44 +02:00
.gitmodules Added threadpool, biquadbank could be working for equalizer. First steps of SLM and AvPowerSpectra 2022-08-11 14:47:44 +02:00
CMakeLists.txt Switched to OpenMP for parallellizing for loops. Bugfixes in PowerSpectra() class. Added tests to check Parsevall hold. Improved lots of comments. Added module groups. Use CMake to specify code version number. Device info should be obtained from StreamMgr in Python code. 2022-09-03 20:59:14 +02:00
Doxyfile Updated pyproject and doxyfile, and readme 2022-09-22 10:11:47 +02:00
LICENSE Initial commit 2018-03-05 20:58:03 +01:00
pyproject.toml Updated pyproject and doxyfile, and readme 2022-09-22 10:11:47 +02:00
pytest.ini Removed old testing code. Improved Doxyfile, added logo to Doxygen. Added pytest testing config. 2022-09-03 16:07:44 +02:00
README.md Updated pyproject and doxyfile, and readme 2022-09-22 10:11:47 +02:00
setup.py Output of a sine wave now works. Pfff 2022-07-20 14:58:48 +02:00

Library for Acoustic Signal Processing

Welcome to LASP: Library for Acoustic Signal Processing. LASP is a C library with a Python interface which is supposed to process (multi-) microphone acoustic data in real time on a PC and output results.

The main goal of this library will be the processing of data from an array of microphones real time, on a Raspberry PI. At the point in time of this writing, we are yet unsure whether the Raspberry PI will have enough computational power to this end, but may be by the time it is finished, we have a new faster generation :).

Current features that are implemented:

  • Compile-time determination of the floating-point accuracy (32/64 bit)
  • Fast convolution FIR filter implementation
  • Sample rate decimation by an integer factor of 4.
  • Octave filterbank FIR filters designed to comply with IEC 61260 (1995).
  • Averaged power spectra and power spectral density determination using Welch' method. Taper functions of Hann, Hamming, Bartlett and Blackman are provided.
  • A thread-safe job queue including routines to create worker threads.
  • Several linear algebra routines (wrappers around BLAS and LAPACK).
  • A nice debug tracer implementation
  • Third octave filter bank FIR filters designed to comply with IEC 61260 (1995).
  • Slow and fast time updates of (A/C/Z) weighted sound pressure levels

Future features (wish-list)

  • Conventional and delay-and-sum beam-forming algorithms

For now, the source code is well-documented but it requires some additional documentation (the math behind it). This will be published in a sister repository (https://code.ascee.nl/ascee/lasp-doc).

If you have any question(s), please feel free to contact us: info@ascee.nl.

Building from source

Two commands that install all requirements (for Ubuntu / Linux Mint)

  • pip install scipy numpy build scikit-build appdirs
  • `sudo apt install libusb-dev

Runtime dependencies (Linux)

  • FFTW (For really fast FFT's). If compiled with Ffftpack, this library is not required.
  • libUlDAQ, for the Measurement Computing DT9837A USB DAQ box
    • GNU Autotools, for compiling libUlDAQ
  • RtAudio, for Audio DAQ backends
  • libusb
  • BLAS (OpenBLAS, other).
  • RtAudio (optional)
  • UlDaq (optional)

Editable install

In the root directory of the repository, run:

  • pip3 isntall --user --prefix=~/.local -e .
  • cmake .
  • make -j

Build dependencies

Optional dependencies, which can be turned ON/OFF using CMake:

  • Build tools: compiler http://cmake.org, the Python packages:

    • Scipy
    • Numpy
    • py-build-cmake
    • appdirs These can all be installed using:
  • The following Python packages need also be available:

    • Scipy (which includes Numpy). Install with sudo apt install python3-scipy, or pacman -S scipy.
    • appdirs, which can be grabbed from https://pypi.org

Compilation of LASP

Archlinux

Compiling the code on Archlinux requires the following packages to be available:

  • openblas-lapack (AUR)
  • Python>=3.7
  • Numpy (Python-numpy)
  • Cython

Ubuntu / Linux Mint

Only tested with Linux Mint 18.04, we require the following packages for compilation:

  • build-essential
  • cython
  • python3-numpy
  • libopenblas
  • libclalsadrv-dev
  • libopenblas-base
  • libopenblas-dev