lasp/README.md
J.A. de Jong - Redu-Sone B.V., ASCEE V.O.F a443be6e39
Some checks failed
Building, testing and releasing LASP if it has a tag / Release-Ubuntu (push) Blocked by required conditions
Building, testing and releasing LASP if it has a tag / Build-Test-Ubuntu (push) Has been cancelled
Updated readme for RPI install
2024-06-24 16:33:31 +02:00

6.0 KiB

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 acquire and process (multi) sensor data in real time on a PC and output results.

Current features that are implemented:

  • Communication with data acquisition (DAQ) devices, of which:
  • Configuration of DAQ devices: AC coupling, IEPE, sensitivity physical quantities.
  • Recording of signals from these DAQ devices, and storing in a HDF5 file.
  • Filter designers to create A/C sound pressure weighting
  • Biquad filter designers for low pass, high pass, peaking and notch filters
  • A Peak Programme Meter (PPM) to monitor signal levels from DAQ and to watch for signal clipping.
  • A signal generator to create sine waves, sweeps and noise (white / pink).
  • Equalizers to equalize the output prior to sending.
  • Averaged power spectra and power spectral density determination using Welch' method. Taper functions of Hann, Hamming, Bartlett and Blackman are provided.
  • (One third) octave filter bank filters designed to comply with IEC 61260 (1995).
  • Slow and fast time updates of (A/C/Z) weighted sound pressure levels
  • Full Sound Level Meter implementation
  • Real time Sound Level meter, Power / Transfer function estimator
  • Spectra data smoothing algorithms
  • Sensor calibration for microphones

Future features (wish-list)

  • Conventional and delay-and-sum beam-forming algorithms
  • Impedance tube measurement processing

For now, the source code is well-documented on lasp.ascee.nl but it requires some additional documentation (the math behind it). This is maintained in a sister repository lasp-doc.

If you have any question(s), please feel free to contact us: email.

Installation - Linux (Ubuntu-based)

Prerequisites

Run the following on the command line to install all prerequisites on Debian-based Linux, x86-64:

  • sudo apt install python3-pip libfftw3-3 libopenblas-base libusb-1.0-0 libpulse0

Go to: LASP releases and download the latest .whl. Then run:

  • pip install lasp-*-linux_x86_64.whl

From source (Ubuntu-based)

Prerequisites

Run the following one-liner:

  • sudo apt install -y git python3 python3-virtualenv python3-venv libopenblas-dev python3-pip libfftw3-dev libusb-1.0-0-dev libpulse-dev python3-build

If building RtAudio with the ALSA backend, you will also require the following packages:

  • sudo apt install libclalsadrv-dev

If building RtAudio with the Jack Audio Connection Kit (JACK) backend, you will also require the following packages:

  • sudo apt install libjack-jackd2-dev

Download & build

  • $ git clone --recursive https://code.ascee.nl/ASCEE/lasp.git
  • $ cd lasp
  • pip install -e .

Building and installation for Raspberry Pi (Raspberry Pi OS)

Run the following on the command line to install all prerequisites on Raspberry Pi OS:

  • sudo apt install libfftw3-dev libopenblas64-dev libhdf5-dev libclalsadrv-dev

In a virtualenv: install build

  • $ pip install build

Then run:

  • $ git clone --recursive https://code.ascee.nl/ASCEE/lasp.git
  • $ cd lasp
  • $ pyproject-build

Which will generate a whl in the dist folder, that is redistributable for Raspberry Pis that run Raspberry Pi OS.

When installing the whl, it appears that H5PY takes quite some time to install. To follow this process, run it it verbose mode.

Installation - (x86_64) Windows (with WinPython), build with MSYS2

Prerequisites

From wheel

  • Download latest wheel from LASP releases and download the latest .whl. Then install with pip.

From source

  • Download and install MSYS2. Make sure to install the x86_64 version.
  • When unzipping WinPython, make sure to choose a proper and simple path, i.e. C:\winpython
  • Download and install Git for Windows
  • Open an MSYS2 MINGW64 terminal, and install some tools we require:
    • $ pacman -S git
  • Create a new virtualenv:
    • $ /c/winpython/<py-distr-dir>/python.exe -m venv venv
  • Add the venv-python to the path (eases a lot of commands)
    • $ export PATH=$PATH:~/venv/Scripts
  • Install build:
    • $ pip install build
  • Clone LASP:
    • $ git clone --recurse-submodules https://code.ascee.nl/ascee/lasp && cd lasp
  • If run for the first time, we have to install the libraries we depend on in MSYS2 (this only has to be done on a fresh MSYS2 installation):
    • $ scripts/install_msys2_builddeps.sh
  • Copy over required DLL's to be included in distribution:
    • scripts/copy_windows_dlls.sh
  • And... build!
    • pyproject-build
  • Lastly: the generated wheel can be installed in the current virtualenv:
    • pip install dist/lasp*.whl

Documentation

Online

Online LASP documentation.

In directory (Linux/Debian)

$ sudo apt install doxygen graphviz $ pip install doxypypy

While still in lasp dir:

$ doxygen

This will build the documentation. It can be read by:

$ <YOUR-BROWSER> doc/html/index.html

Usage

  • See examples directories for IPython notebooks.
  • Please refer to the documentation for features.

Development docs

Bumping version number

When bumping the version number, please update the number in

  • pyproject.toml
  • CMakeLists.txt

Then, create a commit with tag vX.X.X, and push it.

Updating to latest version (editable mode)

When updating to the latest version of LASP in editable mode:

- $ git pull
- $ git submodule update
- $ pip install -e . -v