Home

Awesome

ExAlsa

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

Installation

def deps do
  [
    {: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

Influences/Alternative packages

Check out Mikael Karlsson's excellent https://github.com/karlsson/xalsa for an Erlang/Elixir solution using OTP.

Further ALSA Reading

A lot of the documentation here is referenced from the URLs below: