| TinyALSA |
| ======== |
| |
| [](https://travis-ci.org/tinyalsa/tinyalsa) |
| |
| TinyALSA is a small library to interface with ALSA in the Linux kernel. |
| |
| The aims are: |
| |
| - Provide a basic pcm and mixer API. |
| - If it's not absolutely needed, don't add it to the API. |
| - Avoid supporting complex and unnecessary operations, that could be |
| dealt with at a higher level. |
| - Provide comprehensive documentation. |
| |
| ### Building |
| |
| TinyALSA supports these build systems: |
| |
| - [CMake](https://en.wikipedia.org/wiki/CMake) |
| - [Make](https://en.wikipedia.org/wiki/Make_(software)) |
| - [Meson](https://en.wikipedia.org/wiki/Meson_(software)) |
| - [Soong](https://android.googlesource.com/platform/build/soong/+/refs/heads/master/README.md) for Android |
| |
| To build and install with Make, run the commands: |
| |
| ``` |
| make |
| sudo make install |
| sudo ldconfig |
| ``` |
| |
| ### Installing |
| |
| TinyALSA is now available as a set of the following [Debian](https://en.wikipedia.org/wiki/Debian) |
| packages from [launchpad](https://launchpad.net/~taylorcholberton/+archive/ubuntu/tinyalsa): |
| |
| | Package Name: | Description: | |
| |-----------------|-----------------------------------------------------| |
| | tinyalsa | Contains tinyplay, tinycap, tinymix and tinypcminfo | |
| | libtinyalsa | Contains the shared library | |
| | libtinyalsa-dev | Contains the static library and header files | |
| |
| To install these packages, run the commands: |
| |
| ``` |
| sudo apt-add-repository ppa:taylorcholberton/tinyalsa |
| sudo apt-get update |
| sudo apt-get install tinyalsa |
| sudo apt-get install libtinyalsa-dev |
| ``` |
| |
| ### Documentation |
| |
| Once installed, the man pages are available via: |
| |
| ``` |
| man tinyplay |
| man tinycap |
| man tinymix |
| man tinypcminfo |
| man libtinyalsa-pcm |
| man libtinyalsa-mixer |
| ``` |
| |
| ### Test |
| |
| To test libtinyalsa, please follow the instructions, |
| |
| #### Setup Bazel build environment |
| |
| Visit [here](https://docs.bazel.build/versions/3.7.0/install.html) to get more info to setup Bazel environment. |
| |
| #### Insert loopback devices |
| |
| The test program does pcm_* operations on loopback devices. You have to insert loopback devices after your system boots up. |
| |
| ``` |
| sudo modprobe snd-aloop |
| sudo chmod 777 /dev/snd/* |
| ``` |
| |
| #### Run test program |
| |
| ``` |
| bazel test //:tinyalsa_tests --test_output=all |
| ``` |
| |
| The default playback device is hw:2,0 and the default capture device is hw:2,1. If your loopback devices are not hw:2,0 and hw:2,1, you can specify the loopback device. |
| |
| ``` |
| bazel test //:tinyalsa_tests --test_output=all \ |
| --copt=-DTEST_LOOPBACK_CARD=[loopback card] \ |
| --copt=-DTEST_LOOPBACK_PLAYBACK_DEVICE=[loopback playback device] \ |
| --copt=-DTEST_LOOPBACK_CAPTURE_DEVICE=[loopback capture device] |
| ``` |
| |
| #### Generate coverage report |
| |
| ``` |
| bazel coverage //:tinyalsa_tests --combined_report=lcov --test_output=all |
| genhtml bazel-out/_coverage/_coverage_report.dat -o tinyalsa_tests_coverage |
| ``` |