You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ExAlsa is an ALSA NIF for Elixir. The purpose of this library is provide a low-latency and configurable interface to ALSA. Writing and capturing sound from devices with as low latency as possible in as deterministic way as possible is the primary goal of this library.
An additional goal is to provide enough documentation for implementors to configure their own ALSA handler properly for their use case and to have some basic understanding of PCM sound generation.
Requirements
Linux >= 2.6
Installation
defdepsdo[{:ex_alsa,"~> 0.1.0"}]end
Usage
{:ok, handler} = ExAlsa.open_handler("default")
{:ok, _options} = ExAlsa.set_params(%{
channels: 1,
rate: 44100,
buffeR_size:
})
# Stream silence for the length of one buffer size
ExAlsa.write(List.duplicate(0, buffer_size))
# See tests for a more interesting demo.
TODO
Write ExAlsa module documentation
Explore necessity of running on BEAM's dirty scheduler and implication of doing so
Write ALSA configuration documentation (may live in a different repository)
Brief overview of sampling, waves, PMC. Readers should walk away confident that they can produce sound by writing numbers in a vector.
How to calculate the maximum sleep between writes
A better description of each relevant ALSA config -- difference between SW params and HW params