Ecasound Aux Send and Return Bus Routing

This article explains how to implement auxiliary (aux) send and return buses in Ecasound for shared effects processing during a multitrack mixing session. By leveraging Ecasound’s chain architecture and real-time loop devices, you can route multiple audio tracks into a single shared processing chain—such as a reverb or delay bus—and blend the processed wet signal back into the master mix.

Core Routing Architecture

In Ecasound, auxiliary buses rely on three core components:

  1. Chains (-a:chain_name): Independent signal paths that can host inputs, outputs, and effect operators.
  2. Loop Devices (loop,name): Internal virtual audio buffers used to pass audio between different chains without writing to physical disk or hardware.
  3. Shared Audio Objects: Multiple chains can write to the same output or read from the same input, providing automatic summing and distribution.

Step 1: Defining the Tracks and the Aux Send

To create an auxiliary send, a track’s dry signal is split. One path goes directly to the master output, while a parallel path acts as the "send," routing a copy of the signal into a shared loop device.

The amplitude operator (-ea:percent) placed on the send chain controls the send level for that specific track.

# Track 1: Direct path and Aux Send path
-a:t1_dry  -i:guitar.wav -ea:100 -o:loop,master
-a:t1_send -i:guitar.wav -ea:35  -o:loop,reverb_bus

# Track 2: Direct path and Aux Send path
-a:t2_dry  -i:vocals.wav -ea:100 -o:loop,master
-a:t2_send -i:vocals.wav -ea:60  -o:loop,reverb_bus

Because both -a:t1_send and -a:t2_send target the same output buffer (-o:loop,reverb_bus), Ecasound automatically sums these signals together, functioning as an aux send bus.

Step 2: Setting Up the Aux Return (Effect Bus)

The aux return is implemented as a dedicated chain that consumes audio from the send loop, processes it with one or more effects, and sends the wet signal to the master bus.

Effects on the aux return should typically be configured to 100% wet, as the dry signal is already routed directly via the dry track chains.

# Aux Return: Reads the bus, applies LADSPA reverb, controls return level
-a:reverb_return -i:loop,reverb_bus -el:tap_reverb,2500,-10,-20 -ea:80 -o:loop,master

In this chain:

Step 3: Summing at the Master Output

Finally, a master chain receives all audio routed to loop,master (both dry tracks and wet return buses) and sends the finalized mix to the physical sound card or an export file.

# Master: Sums all dry tracks and aux returns, outputs to ALSA hardware
-a:master -i:loop,master -ea:100 -o:alsa

Complete Implementation Example

The complete Ecasound command to run a session with two tracks, one shared reverb aux bus, and a hardware output is:

ecasound \
  -a:t1_dry  -i:guitar.wav -ea:100 -o:loop,master \
  -a:t1_send -i:guitar.wav -ea:30  -o:loop,fx_bus \
  -a:t2_dry  -i:vocals.wav -ea:100 -o:loop,master \
  -a:t2_send -i:vocals.wav -ea:50  -o:loop,fx_bus \
  -a:fx_ret  -i:loop,fx_bus -el:plate_reverb,1.5,100 -ea:75 -o:loop,master \
  -a:master  -i:loop,master -o:alsa

This workflow eliminates duplicate effect processing across tracks, reduces CPU overhead, and provides cohesive spatial cohesion across the mix.