1*02e95f1aSMarcin RadomskiTinyALSA 2*02e95f1aSMarcin Radomski======== 3*02e95f1aSMarcin Radomski 4*02e95f1aSMarcin Radomski[](https://travis-ci.org/tinyalsa/tinyalsa) 5*02e95f1aSMarcin Radomski 6*02e95f1aSMarcin RadomskiTinyALSA is a small library to interface with ALSA in the Linux kernel. 7*02e95f1aSMarcin Radomski 8*02e95f1aSMarcin RadomskiThe aims are: 9*02e95f1aSMarcin Radomski 10*02e95f1aSMarcin Radomski - Provide a basic pcm and mixer API. 11*02e95f1aSMarcin Radomski - If it's not absolutely needed, don't add it to the API. 12*02e95f1aSMarcin Radomski - Avoid supporting complex and unnecessary operations, that could be 13*02e95f1aSMarcin Radomski dealt with at a higher level. 14*02e95f1aSMarcin Radomski - Provide comprehensive documentation. 15*02e95f1aSMarcin Radomski 16*02e95f1aSMarcin Radomski### Building 17*02e95f1aSMarcin Radomski 18*02e95f1aSMarcin RadomskiTinyALSA supports these build systems: 19*02e95f1aSMarcin Radomski 20*02e95f1aSMarcin Radomski - [CMake](https://en.wikipedia.org/wiki/CMake) 21*02e95f1aSMarcin Radomski - [Make](https://en.wikipedia.org/wiki/Make_(software)) 22*02e95f1aSMarcin Radomski - [Meson](https://en.wikipedia.org/wiki/Meson_(software)) 23*02e95f1aSMarcin Radomski - [Soong](https://android.googlesource.com/platform/build/soong/+/refs/heads/master/README.md) for Android 24*02e95f1aSMarcin Radomski 25*02e95f1aSMarcin RadomskiTo build and install with Make, run the commands: 26*02e95f1aSMarcin Radomski 27*02e95f1aSMarcin Radomski``` 28*02e95f1aSMarcin Radomskimake 29*02e95f1aSMarcin Radomskisudo make install 30*02e95f1aSMarcin Radomskisudo ldconfig 31*02e95f1aSMarcin Radomski``` 32*02e95f1aSMarcin Radomski 33*02e95f1aSMarcin Radomski### Installing 34*02e95f1aSMarcin Radomski 35*02e95f1aSMarcin RadomskiTinyALSA is now available as a set of the following [Debian](https://en.wikipedia.org/wiki/Debian) 36*02e95f1aSMarcin Radomskipackages from [launchpad](https://launchpad.net/~taylorcholberton/+archive/ubuntu/tinyalsa): 37*02e95f1aSMarcin Radomski 38*02e95f1aSMarcin Radomski| Package Name: | Description: | 39*02e95f1aSMarcin Radomski|-----------------|-----------------------------------------------------| 40*02e95f1aSMarcin Radomski| tinyalsa | Contains tinyplay, tinycap, tinymix and tinypcminfo | 41*02e95f1aSMarcin Radomski| libtinyalsa | Contains the shared library | 42*02e95f1aSMarcin Radomski| libtinyalsa-dev | Contains the static library and header files | 43*02e95f1aSMarcin Radomski 44*02e95f1aSMarcin RadomskiTo install these packages, run the commands: 45*02e95f1aSMarcin Radomski 46*02e95f1aSMarcin Radomski``` 47*02e95f1aSMarcin Radomskisudo apt-add-repository ppa:taylorcholberton/tinyalsa 48*02e95f1aSMarcin Radomskisudo apt-get update 49*02e95f1aSMarcin Radomskisudo apt-get install tinyalsa 50*02e95f1aSMarcin Radomskisudo apt-get install libtinyalsa-dev 51*02e95f1aSMarcin Radomski``` 52*02e95f1aSMarcin Radomski 53*02e95f1aSMarcin Radomski### Documentation 54*02e95f1aSMarcin Radomski 55*02e95f1aSMarcin RadomskiOnce installed, the man pages are available via: 56*02e95f1aSMarcin Radomski 57*02e95f1aSMarcin Radomski``` 58*02e95f1aSMarcin Radomskiman tinyplay 59*02e95f1aSMarcin Radomskiman tinycap 60*02e95f1aSMarcin Radomskiman tinymix 61*02e95f1aSMarcin Radomskiman tinypcminfo 62*02e95f1aSMarcin Radomskiman libtinyalsa-pcm 63*02e95f1aSMarcin Radomskiman libtinyalsa-mixer 64*02e95f1aSMarcin Radomski``` 65*02e95f1aSMarcin Radomski 66*02e95f1aSMarcin Radomski### Test 67*02e95f1aSMarcin Radomski 68*02e95f1aSMarcin RadomskiTo test libtinyalsa, please follow the instructions, 69*02e95f1aSMarcin Radomski 70*02e95f1aSMarcin Radomski#### Setup Bazel build environment 71*02e95f1aSMarcin Radomski 72*02e95f1aSMarcin RadomskiVisit [here](https://docs.bazel.build/versions/3.7.0/install.html) to get more info to setup Bazel environment. 73*02e95f1aSMarcin Radomski 74*02e95f1aSMarcin Radomski#### Insert loopback devices 75*02e95f1aSMarcin Radomski 76*02e95f1aSMarcin RadomskiThe test program does pcm_* operations on loopback devices. You have to insert loopback devices after your system boots up. 77*02e95f1aSMarcin Radomski 78*02e95f1aSMarcin Radomski``` 79*02e95f1aSMarcin Radomskisudo modprobe snd-aloop 80*02e95f1aSMarcin Radomskisudo chmod 777 /dev/snd/* 81*02e95f1aSMarcin Radomski``` 82*02e95f1aSMarcin Radomski 83*02e95f1aSMarcin Radomski#### Run test program 84*02e95f1aSMarcin Radomski 85*02e95f1aSMarcin Radomski``` 86*02e95f1aSMarcin Radomskibazel test //:tinyalsa_tests --test_output=all 87*02e95f1aSMarcin Radomski``` 88*02e95f1aSMarcin Radomski 89*02e95f1aSMarcin RadomskiThe 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. 90*02e95f1aSMarcin Radomski 91*02e95f1aSMarcin Radomski``` 92*02e95f1aSMarcin Radomskibazel test //:tinyalsa_tests --test_output=all \ 93*02e95f1aSMarcin Radomski --copt=-DTEST_LOOPBACK_CARD=[loopback card] \ 94*02e95f1aSMarcin Radomski --copt=-DTEST_LOOPBACK_PLAYBACK_DEVICE=[loopback playback device] \ 95*02e95f1aSMarcin Radomski --copt=-DTEST_LOOPBACK_CAPTURE_DEVICE=[loopback capture device] 96*02e95f1aSMarcin Radomski``` 97*02e95f1aSMarcin Radomski 98*02e95f1aSMarcin Radomski#### Generate coverage report 99*02e95f1aSMarcin Radomski 100*02e95f1aSMarcin Radomski``` 101*02e95f1aSMarcin Radomskibazel coverage //:tinyalsa_tests --combined_report=lcov --test_output=all 102*02e95f1aSMarcin Radomskigenhtml bazel-out/_coverage/_coverage_report.dat -o tinyalsa_tests_coverage 103*02e95f1aSMarcin Radomski``` 104