Your Cart
Loading

Audamux Documentation

V1.4.4

Overview

Audamux is a configurable audio router for Windows with a flexible matrix.

Features

  • Live reconnect: Auto-detects and re-attaches devices.
  • Ideal for bluetooth headsets.
  • Easy to use! Default settings designed to work on most systems, no complicated setup
  • Allows routing from any audio input to output.
  • Allows using outputs as input loopback devices.
  • Latency management: Designed to run continuously and indefinitely. Keeps latency at target level by dynamic adjustments to ensure buffers remain constant.
  • Extremely low CPU usage.

Two routing modes for best efficiency or compatibility:

  • Efficiency: Avoids additional buffers and resampling. Suitable for most use-cases.
  • Compatibility: Allows all inputs to be routed to outputs. For less common cases without a common output format.

First Start-up

  • Unzip the installer and run it.
  • After installation, the main window will appear. Note that on closing, Audamux will minimise to the tray. If you don’t want this, you can turn this off in settings.
  • You can also change if Audamux starts with windows (default is on).

The Main Window & Routing Matrix

On the main window, you will see a grid of inputs and outputs.

By default, inputs are on the left, outputs at the top (this can be changed in settings).

On first start-up, the inputs and outputs shown are the ones currently visible to the system. After this, they are saved and can be modified to handle tracking devices that disconnect and reconnect.


By clicking on any grid cell, a route is made between that input and output. The cell will turn green and a value (1.0) will appear in the cell.

The value is the gain that is applied to this specific route. It can be set by clicking on the cell and dragging left and right. EG. a value of 0.5 will halve the volume (or more specifically the waveforms amplitude). Note this is a simple volume adjustment, which is multiplied to the audio, it is not in dB.

The default value of 1.0 can be changed in the settings.


Other main controls include:

Top row buttons:

  • Replace devices: Completely replace devices in matrix with currently visible devices
  • Add new devices: Add any currently visible devices not in the matrix.
  • Clear all routes: All green route cells are removed from the matrix
  • Restart devices: Completely restart audio engine.
  • Pause Mixing / Start Mixing: This turns on and off the mixing engine.

Master gain: Applied on top of all other gains to the final outputs.

Routing Engine Modes

There are two routing engine modes to favour efficiency or compatibility.

This is as input and outputs may all have different available quality formats they support, we want to make sure we use the best possible.


Efficiency: “Global target format”

  • No additional buffers and no resampling (aside from output rate matching)
  • Suitable for most use-cases
  • Finds the best possible single format to match inputs & outputs.
  • Some inputs may be incompatible (marked in red if selected). In reality, this are likely to be microphone inputs as they are typically lower bitrate.


Compatibility: “Resample to best output”

  • Allows all inputs to be resampled to any output
  • For less common cases without a common output format
  • Inputs resampled to best output format.
  • Allows all inputs to be compatible.
  • Resampling is very lightweight, but may add a small latency as it will use small buffers internally to do this.


Recommendation:

  • For simpler setups, first try “Global target format”. If this doesn't support the inputs you want to use, switch to “Resample to best output”.

Setting Up Inputs and Outputs

On first start, the inputs and outputs shown are the ones currently visible to the system.

The device list won’t change unless you request it to. This is important as the matrix must represent devices that are sometimes not connected in order to handle auto-reconnecting.


To change the inputs/outputs:


If you want to add a device that wasn’t connected on first start-up:

  1. Connect your device
  2. Click “Add new devices”
  3. Any found devices that are not in the grid will be added to the end of the inputs/outputs. No existing routing will be affected

You can now add routes for the new device(s)

  • Note: When you do this, it will restart the audio engine (you may hear a short gap).


If you want the system to replace the entire matrix based on the current connected devices:

  1. Click “Replace devices”
  2. The matrix inputs and outputs will be completely replaced by whatever devices are visible currently
  3. The system will attempt to re-apply all the previous routes made, if any of the new devices are the same as previous (see Device Auto-reacquire in settings for how this is applied).


Types of input:

Capture inputs (“normal” inputs)

  • These are real audio capture devices, like line-in or virtual capture endpoints. Audamux records from them and routes that audio to one or more outputs.

Loopback inputs

  • Every output device can also appear as a loopback input (labelled [Loopback] ...). A loopback input is “whatever this output device is currently playing”.

Common use-cases:

  • Route the “System / Game / Music” mixes (or other playback devices) into headphones/speakers.
  • Routing from Loopback inputs allows routing audio from one output into a different output.
  • Example: Using an audio slider that is attached to an output, to control another output.

Notes:

  • Loopback is still an input row in the matrix, even though it is tied to an output device.
  • When using Loopback inputs, there will likely be an additional latency as we route the output of a previous iteration.
  • Capture and loopback inputs are separate; they can have different formats/behaviour depending on the device/driver.

Live Reconnect

A key feature is to be able to auto-reattach devices.

The main use-case are devices that are turned off like Bluetooth headphones / headsets.

  • To use this, simply make sure your device is in the matrix, with a route applied (if not, follow the steps above to change inputs/outputs).
  • Then if you turn your bluetooth headphones off, that part of the matrix will grey out.
  • When you turn your headset back on (assuming you left bluetooth on in windows so windows auto connects), Audamux will reattach this device and audio will continue.

For any appearing device, the engine tries to match it to one of the devices in the grid (see Device Auto-reacquire in settings for how this is applied). If in the grid, the device will wake up and routing will continue automatically.

This setting is on by default but can be modified in settings.

Loading / Saving and State

Audamux keeps two configurations stored in AppData (note; Nothing is stored on the cloud!).

  • One for the app settings (which also includes master gain).
  • One for the matrix settings (includes all the inputs and outputs, the routes and their gains).

Whenever a modification is made to any of the above, the internal configs are updated so if the app is closed and restarted, it will continue.

You can also save and load the matrix settings to/from a file.

Audio Meters

Audio meters will appear on:

  • The input text background.
  • The output text background.
  • The route cells themselves.

Note: This is not to be used as an “accurate” volume measurement. It is an efficient calculation purely to help visually see activity and to help set-up the matrix.

Latency Management

Rate Matching

Rate matching is a feature that prevents long-running “drift” where some outputs slowly build up more and more buffered audio (increasing latency over time).

  • It works by applying a tiny, smooth playback-rate correction per output so that (on average) the output consumes audio at the same rate that it is produced.

By default the system handles:

  • Speaker latency gradually increases over time, or
  • Outputs drift relative to each other, or
  • Long sessions giving noticeable delay that wasn’t present at start-up.


Priming

Priming prevents the rate matcher from “overreacting” right after startup/restart.

  • Immediately after starting routing, buffers are empty and will fill up. If the rate matcher reacts too early, you can get weird pitch changes or instability during the first seconds.

More detail about how to adjust Latency Management settings in the Settings section.

Settings

Windows settings

Start Audamux with Windows

  • Audamux starts automatically at windows start-up.

Minimise to tray on close

  • If the app is closed, it minimises to the tray instead of closing, and stays active in the background. If this option is not selected, closing the app will kill the app.


Device auto-reacquire

Auto reattach devices when they return:

  • If unconnected devices in the grid connect, they recover and continue automatically (see Live Reconnect).

Match Unrecognised devices by name:

  • If the Device ID assigned by windows changes, then fallback to matching by name (recommend to leave on).


Audio Engine

Routing engine

Global target format or Resample to best output

  • See Routing Engine Modes for detail


Buffer settings control latency vs. glitch-resistance. Lower values reduce latency but may introduce audio clicks on some devices. Higher values ensure there are no audio clicks but increase latency.

WASAPI buffer (ms)

  • Controls the buffering on the output device (WASAPI).
  • Lower: lower output latency, but easier to glitch if the system is under load.
  • Higher: safer, but adds latency to that output.

Route buffer (ms)

  • Controls how much audio Audamux is willing to buffer per route/output internally.
  • Too low can cause dropouts/clicks.
  • Too high increases how much delay can accumulate if something stalls (though backlog recovery helps prevent this).


Latency Management

It is recommended not to adjust these settings unless you have audio issues.

See the Latency Management section for more info.


Rate Matching

Rate Matching keeps buffers stable over long periods without letting latency grow.

  • For long-term low latency rate matching is usually more important than letting buffers grow or drift.

It is recommended to not change the default settings unless you experience any latency or audio glitch.

If you do need to change these settings:

  1. Turn on the statistics graph for the output you are adjusting.
  2. Enable Rate Matching.
  3. Adjust Target buffer until the buffer minimum sits roughly around it most of the time.
  4. If the buffer minimum still trends upward over time, slightly increase Max ratio change.
  5. If you hear pitch “wobble” or artifacts, reduce Max ratio change and/or increase the target buffer slightly.

Enable rate matching

  • ON: Audamux continuously corrects drift.
  • OFF: Buffers can drift over time on some systems.

Target buffer (ms)

  • The minimum-buffer level Audamux tries to maintain.
  • Lower target = lower latency but less safety margin.
  • Higher target = safer/stabler but more latency.

Max ratio change

  • Limits how far the rate correction can move away from 1.000 (perfect rate) in order to correct latency.
  • Lower = very gentle (inaudible), but may correct drift slowly.
  • Higher = faster correction, but can cause audible pitch/warble if pushed too far.


Buffer backlog recovery

This is a feature for cases where buffering suddenly becomes huge (e.g., a device stalls, alt-tabbing into something that causes audio disruption).

  • When the buffered audio exceeds the threshold, Audamux discards the oldest buffered audio to reduce latency quickly.

Enable backlog trim

  • ON: Detect large latency jumps due to device or windows alt-tab and resolve them

Backlog threshold (ms)

  • If latency jumps above this threshold, it will be handled instantly by Buffer Backlog Recovery, if below this threshold it will be handled by Rate Correction.


Startup priming

Adjust settings if you hear pitch changes, warble, or instability right after starting routing, restarting devices or reconnecting a device.


Prime routes on start

  • ON: Rate Matching waits for an initial buffer fill before it starts making corrections.

Priming ratio

  • The temporary ratio used during priming to help buffers reach a stable level smoothly.
  • This should be close to 1.000 to keep the adjustment small (not a large speed-up/slow-down).


UI Settings

Rotated matrix

  • By default, inputs are on the left, outputs at the top.
  • If Rotated matrix is selected, inputs appear at the top, outputs on the right.

Statistics Graph

The Buffer graph is a live “health monitor” for each output device (headphones, speakers, etc).

  • It’s mainly used to diagnose latency drift, dropouts/clicks, and emergency backlog trimming.

How to open

  • Main window menu: View → Buffer graph (or whatever your menu item is named).

How to use

  • Select an output device in the dropdown.
  • The graphs update live; you can scroll back to inspect history.
  • If an output is inactive (no routes), it should show an empty graph.

What the graphs show

Buffer (top graph):

  • Buffer minimum (raw): the most “dangerous low point” the output hit recently.
  • Average buffer minimum (smoothed): a smoothed version of the minimum, useful for seeing slow trends.
  • Target buffer: the configured target the rate matcher tries to keep the minimum around.

Ratio (bottom graph):

  • The current rate-matching ratio the engine is applying for that output.
  • Values slightly above/below 1.000 mean the output is being played very slightly faster/slower to keep buffers stable.

How to interpret common patterns

  • Stable system: buffer minimum hovers around the target; ratio hovers near 1.000.
  • Latency drift: buffer minimum (or the smoothed minimum) slowly climbs over minutes/hours.
  • Dropouts/clicks: buffer minimum repeatedly hits very low values (near empty).
  • Emergency trim events: you’ll see a marker/spike whenever the “backlog recovery” feature discards old buffered audio to bring latency back down.

UI

The UI will show tooltips when you hover over parts of it.

Inputs and outputs text will be:

  • White if available
  • Green if active (has audio coming from it or going to it)
  • Grey if not available (depending on device, some detected immediately, some only when a route is made), also when a device disconnects (EG. bluetooth headset).
  • Red if a device cannot be used because its input format cannot be matched to an output format (this is only in routing mode: “Global target format” as a global mix-format is used for efficiency.

Troubleshooting

  • If devices do not auto reconnect, check both reattach options are set in settings.
  • If this still does not work, it is possible the devices cannot be matched to those in the grid. In this scenario, you can refresh the internal device IDs and names by clicking “Replace Devices”. If the devices were different, you may need to reapply the routes.
  • If devices are not reacting or you don’t hear audio, you can click “Restart Devices” to kill and restart the audio engine.

Note: "Replace devices" resets the device list to currently connected devices (so missing/disconnected devices won’t remain listed after this). If you do want to re-add these, connect the devices and click "Add new devices".


Glossary

  • Input: a source of audio (capture device or loopback of an output).
  • Output: a destination device that Audamux plays audio to.
  • Route: one matrix cell (input → output) that is enabled.
  • Gain: the per-route volume multiplier (the number shown in the cell).
  • Master gain: a global volume multiplier applied on top of all routes.
  • Loopback: “record what this output is playing” and treat it as an input.
  • Matrix: the grid of inputs (rows) and outputs (columns).


Please support development!

For now this app is donation-ware.

  • Pay what you want, including free.
  • As I’m developing this as a solo developer in my free time, outside of my job, any donations would be greatly appreciated.

I hope you find this tool useful.