# Library for Acoustic Signal Processing - Master branch: [![Build Status](https://drone.ascee.nl/api/badges/ASCEE/lasp/status.svg?ref=refs/heads/master)](https://drone.ascee.nl/ASCEE/lasp) - Develop branch: [![Build Status](https://drone.ascee.nl/api/badges/ASCEE/lasp/status.svg?ref=refs/heads/develop)](https://drone.ascee.nl/ASCEE/lasp) 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 (Debian-based) ## Dependencies - `$ sudo apt install python3-pybind11 libopenblas-dev python3-pip python3-scipy libusb-1.0-0-dev libpulse-dev cmake-curses-gui python3-h5py` - `$ pip3 install --user -r requirements.txt` If building RtAudio with the ALSA backend, you will also require the following packages: - libclalsadrv-dev If building RtAudio with the Jack Audio Connection Kit (JACK) backend, you will also require the following packages: - libjack-jackd2-dev ## Download & build - `$ git clone --recursive https://code.ascee.nl/ASCEE/lasp.git` - `$ cd lasp` For a release build: - `$ cmake .` or optionally for a custom build: - `$ ccmake .` Configure and run: - `$ make -j` ### Build documentation In directory: `$ 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` Or via docker: `$ docker build -t lasp_ascee_nl:latest .` ## Install For an editable install (while developing): - `$ pip3 install --prefix=$HOME/.local -e .` To install locally, for a fixed version: - `$ pip3 install --prefix=$HOME/.local` ## Usage - See examples directories for IPython notebooks. - Please refer to the [documentation](https://lasp.ascee.nl/) for features.