# Membrane Audio Mix plugin v0.16.5 - Table of Contents

> Plugin performing raw audio mixing and interleaving.

## Pages

- [Membrane Audio Mix Plugin](readme.md)
- [LICENSE](license.md)

## Modules

- Mixer
  - [Membrane.AudioMixer](Membrane.AudioMixer.md): This element performs audio mixing.
  - [Membrane.AudioMixerBin](Membrane.AudioMixerBin.md): Bin element distributing a mixing job between multiple `Membrane.AudioMixer` elements.
  - [Membrane.LiveAudioMixer](Membrane.LiveAudioMixer.md): This element performs audio mixing for live streams.
  - [Membrane.AudioMixer.Adder](Membrane.AudioMixer.Adder.md): Module responsible for mixing audio tracks (all in the same format, with the same number of
channels and sample rate). The result is a single track in the format mixed tracks are encoded in.
If overflow happens during mixing, it is being clipped to the max value of sample in this format.

  - [Membrane.AudioMixer.ClipPreventingAdder](Membrane.AudioMixer.ClipPreventingAdder.md): Module responsible for mixing audio tracks (all in the same format, with the same number of
channels and sample rate). The result is a single track in the format mixed tracks are encoded in.
If overflow happens during mixing, a wave will be scaled down to the max sample value.
  - [Membrane.AudioMixer.NativeAdder](Membrane.AudioMixer.NativeAdder.md): Module responsible for mixing audio tracks (all in the same format, with the same number of
channels and sample rate). The result is a single track in the format mixed tracks are encoded in.
If overflow happens during mixing, a wave will be scaled down to the max sample value. Uses NIFs
for mixing.
  - [Membrane.LiveAudioMixer.LiveQueue](Membrane.LiveAudioMixer.LiveQueue.md): There are a lot of problems that the mixer can encounter while processing live audio streams:
* packet loss resulting in small stream discontinuity
* connection issues resulting in  complete lack of data
* the need for enforcing max latency on the stream - packets that come too late have to be dropped
  - [Membrane.LiveAudioMixer.LiveQueue.Queue](Membrane.LiveAudioMixer.LiveQueue.Queue.md): The `Queue` module is responsible for storing a single live audio stream.

- Interleaver
  - [Membrane.AudioInterleaver](Membrane.AudioInterleaver.md): Element responsible for interleaving several mono audio streams into single interleaved stream.
All input streams should be in the same raw audio format, defined by `input_stream_format` option.
  - [Membrane.AudioInterleaver.DoInterleave](Membrane.AudioInterleaver.DoInterleave.md): Module responsible for interleaving audio tracks (all in the same format, with 1
channel) in a given order.

## See Also

- [Membrane Framework AI Skill](https://hexdocs.pm/membrane_core/skill.md)
- [Membrane Core](https://hexdocs.pm/membrane_core/llms.txt)
