caw is an interactive, real-time audio processing environment based on libcw. The environment implements a data flow processing model which is specified with a JSON like configuration language.
The best introduction to the language is caw by Example This tutorial steps through the basic language constructs and theory of operation.
Fedora
sudo dnf install autoconf autoconf-archive automake libtool gcc-c++ gdb fftw-devel alsa-lib-devel libwebsockets-devel libubsan
Ubuntu
sudo apt install autoconf libtool fftw-dev libwebsockets-dev libatlas-base-dev libasound2-dev libubsan1
Note that libcw will take advantage of the Intel Math Kernel Library
if it is enabled via the configure enable-mkl switch.
Get the project code
cd ~/src
git clone https://github.com/currawong-project/caw.git
cd caw/src
git clone https://github.com/currawong-project/libcw.git
cd libcw
Build
cd ~/src/caw
rm -rf build
cmake -B build/debug -DCMAKE_INSTALL_PREFIX=build/debug/install --preset debug # (or --preset release)
cmake --build build/debug --preset debug
cmake --install build/debug
caw ui <program_cfg_fname> {<program_label>} : Run with a GUI.
caw exec <program_cfg_fname> <program_label> : Run without a GUI.
caw hw_report <program_cfg_fname> : Print the hardware details and exit.
caw test <test_cfg_fname> (<module_label> | all) (<test_label> | all) (compare | echo | gen_report )* {args ...}
caw test_stub ...
Test Example Command line
caw test ~/src/cwtest/src/cwtest/cfg/test/main.cfg /time all echo
wpctl status # get the device id
wpctl set-profile <device-id> off # disable the device