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: - Internal sound cards via the [RtAudio](http://www.music.mcgill.ca/~gary/rtaudio) backend. Many thanks to Gary P. Scavone et al. - [Measurement Computing](https://www.mccdaq.com) [DT9838A](https://www.mccdaq.com/Products/Sound-Vibration-DAQ/DT9837) signal analyzer. - 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](https://lasp.ascee.nl) but it requires some additional documentation (the math behind it). This is maintained in a sister repository [lasp-doc](https://code.ascee.nl/ascee/lasp-doc). If you have any question(s), please feel free to contact us: [email](info@ascee.nl). # 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` ## Installation from wheel (recommended for non-developers) Go to: [LASP releases](https://code.ascee.nl/ASCEE/lasp/releases/latest/) 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 - Download and install [WinPython](https://winpython.github.io) ## From wheel - Download latest wheel from [LASP releases](https://code.ascee.nl/ASCEE/lasp/releases/latest/) and download the latest `.whl`. Then install with `pip`. ## From source - Download and install [MSYS2](https://msys2.org). 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](https://git-scm.com) - Open an MSYS2 **MINGW64** terminal, and install some tools we require: - `$ pacman -S git` - Create a new virtualenv: - `$ /c/winpython//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](https://lasp.ascee.nl/). ## 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: `$ doc/html/index.html` # Usage - See examples directories for IPython notebooks. - Please refer to the [documentation](https://lasp.ascee.nl/) 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: ```bash - $ git pull - $ git submodule update - $ pip install -e . -v ```