About ALSA

ALSA is the abbreviated form of Advanced Linux Sound Architecture. It is a kind of software framework which is an integral part of the Linux kernel. It provides an API or Application Programming Interface for soundcard device drivers. Few of the important goals of the ALSA project at the time of its inception were facilitation of automatic configuration of the soundcard hardware and easy handling of various sound devices by the systems. Advanced Linux Sound Architecture is released under the GNU Gen Public license (GPL) as well as the GNU Lesser Gen Public license (LGPL). Various important frameworks including JACK (JACK Audio Connection Kit) make use of ALSA for enabling performance of low latency professional grade editing and mixing of audio files.

Its’ important features
Some of the features that were an integral part of ALSA were not actually supported by the OSS (Open Sound System) at the time of its conception. These were:
- Thread-safe and multiprocessor-friendly device drivers
- Hardware mixing of multiple channels
- Hardware-based MIDI synthesis
- Full-duplex operation

The API of ALSA is comparatively more complex and larger than OSS. Hence, developing an application using ALSA can be more complex owing to its sound technology. Although ALSA can be configured to make available an OSS emulation layer, this kind of functionality is no more available. It isn’t also installed on several Linux distributions by default.

Specifically for the application developers who wish to use all the driver features via an interface which is comparatively of higher level than the available interface for interacting directly with the kernel drivers, ALSA bundles in a user-space library apart from the sound device drivers. Unlike as in case of the kernel API that tries to directly reflect the hardware’s capabilities, the user-space library of ALSA provides an abstraction which stays as standard as possible across the disparities existing in the various hardware elements. This target is accomplished partly by appropriate utilization of the software plug-ins. For instance, several built-in sound chips or the modern day soundcards don’t have the conventional ‘master volume’ control. The user-space library makes available a software volume control for all such devices, making use of a plug-in known as ‘softvol’. In addition, the ordinary application software doesn’t need to bother if this kind of control gets correctly implemented by the underlying hardware or by the software emulation of any such underlying hardware.

Now coming to the implementation of the Advanced Linux Sound Architecture, the ASoC (ALSA System on Chip) layer aims for providing optimum support for ALSA on the embedded systems utilizing the SoC or system-on-chip design.