Routing Headphone Cue Mixes in Ecasound
This article explains how to configure independent headphone cue mixes with separate volume levels using Ecasound, a powerful command-line multitrack audio processor. By utilizing Ecasound’s chain architecture, you can split audio inputs into distinct signal paths, apply isolated gain adjustments to each path, and route them to separate hardware outputs for performers and engineers.
Core Concepts: Chains and Routing
Ecasound processes audio using "chains." A chain is an independent audio path that connects inputs, effect operators (such as volume control), and outputs.
To route an audio stream to multiple outputs with independent volumes:
- Assign an input source to multiple chains.
- Apply independent amplitude scaling (
-ea) to each chain. - Assign each chain to a distinct physical output device or subchannel.
Determining Your Audio Outputs
Before routing, identify your sound card’s playback channels. With ALSA, list playback devices:
aplay -lFor professional multichannel sound cards, ALSA channels are
typically represented as subdevices or exposed as multichannel streams.
If you use JACK, output ports are typically named
system:playback_1, system:playback_2, etc.
Basic Two-Chain Cue Mix Command
The following example takes a single stereo input file and routes it to two separate stereo outputs: the main monitors (outputs 1–2) and performer headphones (outputs 3–4), each with independent volume levels.
Using ALSA
If your interface exposes outputs as separate subdevices (e.g.,
hw:0,0 for main and hw:0,1 for cue):
ecasound \
-a:main,cue -i:backing_track.wav \
-a:main -ea:100 -o:alsa,hw:0,0 \
-a:cue -ea:60 -o:alsa,hw:0,1-a:main,cue -i:backing_track.wav: Assignsbacking_track.wavas the input to both themainandcuechains.-a:main -ea:100 -o:alsa,hw:0,0: Configures themainchain with 100% gain, outputting to ALSA device 0,0.-a:cue -ea:60 -o:alsa,hw:0,1: Configures thecuechain with 60% gain, outputting to ALSA device 0,1.
Using JACK
When running a JACK audio server, route directly to specific system playback channels:
ecasound \
-a:main,cue -i:backing_track.wav \
-a:main -ea:100 -o:jack,system:playback_1,system:playback_2 \
-a:cue -ea:75 -o:jack,system:playback_3,system:playback_4Multitrack Inputs with Independent Cue Mix Balances
In real-world tracking scenarios, you often need to balance multiple stems differently between the main control room and the performer's headphones.
To achieve this, create dedicated chains for each track per mix:
ecasound \
-a:drums_main,drums_cue -i:drums.wav \
-a:vox_main,vox_cue -i:vocals.wav \
-a:drums_main -ea:100 -o:jack,system:playback_1,system:playback_2 \
-a:vox_main -ea:80 -o:jack,system:playback_1,system:playback_2 \
-a:drums_cue -ea:60 -o:jack,system:playback_3,system:playback_4 \
-a:vox_cue -ea:120 -o:jack,system:playback_3,system:playback_4In this setup:
- The control room (
main) hears full-volume drums (-ea:100) and moderate vocals (-ea:80). - The vocalist (
cue) receives reduced drums (-ea:60) and boosted vocals (-ea:120).
Adjusting Volume Levels in Real-Time
To modify headphone cue volumes during a session without stopping
audio playback, run Ecasound in interactive mode by appending the
-c flag:
ecasound -c \
-a:main,cue -i:backing_track.wav \
-a:main -ea:100 -o:alsa,hw:0,0 \
-a:cue -ea:60 -o:alsa,hw:0,1Once inside the interactive prompt, change the cue volume using standard Ecasound interactive commands:
- Select the cue chain:
c-select cue - Locate the amplify operator position:
cop-list - Set the new gain value (e.g., changing the first operator to 85%):
cop-set 1 1 85
This updates the headphone mix immediately without interrupting the primary recording or playback stream.