Automate Track Fades in an Ecasound 24-Track Mixdown
Automating track fades across a 24-track project in Ecasound is accomplished by combining its chain-based architecture with dynamic envelope controllers. By assigning individual audio files to designated chains and attaching linear controller envelopes to the amplification operator, you can independently orchestrate fades, crossfades, and master gain changes across all 24 tracks simultaneously without relying on a graphical user interface.
Understanding the Automation Architecture
Ecasound processes audio using a chainsetup structure where each incoming audio stream is routed through an isolated processing path called a chain. To manipulate gain over time across 24 individual tracks, two primary components are required:
- Volume/Amplification Operator (
-ea): Sets the base linear amplification factor for a chain. - Linear Envelope Controller (
-kl): Modulates an operator parameter over a defined time window.
The syntax for applying dynamic automation to volume via the linear controller is:
-kl:fx_param:start_val:end_val:len
fx_param: The target parameter index of the preceding effect (parameter1for the amplification factor in-ea).start_val: Initial gain value (e.g.,0for silence,100for unity gain).end_val: Final target gain value.len: Duration of the transition in seconds.
Constructing a 24-Track Fade-In and Fade-Out
To apply volume automation across a full 24-track session, each track must be routed to a unique chain, given its own input file, and assigned the relevant envelope commands before all chains are summed into a stereo master file.
Below is an example of an Ecasound batch command structuring fade automations:
ecasound \
-a:1 -i:track01.wav -ea:100 -kl:1,0,100,5 -kl:1,100,0,10 \
-a:2 -i:track02.wav -ea:100 -kl:1,0,100,3 \
-a:3 -i:track03.wav -ea:100 -kl:1,100,0,8 \
# Chains 4 through 23 configured similarly
-a:24 -i:track24.wav -ea:100 -kl:1,0,100,5 \
-a:all -o:stereo_mixdown.wavIn this setup:
- Chain
1initiates at zero volume, fades in to full volume over 5 seconds, and begins a fade-out to zero over a 10-second window toward the end. - Dynamic values can be staggered per chain to fade rhythm, vocal, or ambient sections independently.
- The
-a:all -o:stereo_mixdown.wavargument sums every active chain into a single stereo output.
Streamlining 24-Track Automation with Bash
Manually writing parameter arguments for 24 individual tracks can be error-prone. A Bash script automates the command generation, enabling clean global fades, staggered entrances, or cue-based level changes across the session:
#!/usr/bin/env bash
CMD="ecasound"
TRACK_COUNT=24
FADE_IN_SEC=4
FADE_OUT_SEC=6
for i in $(seq -w 1 $TRACK_COUNT); do
INPUT_FILE="track_${i}.wav"
# Assign chain, input file, default gain, and fade controllers
CMD+=" -a:${i} -i:${INPUT_FILE} -ea:100"
# 4-second fade-in from 0% to 100%
CMD+=" -kl:1,0,100,${FADE_IN_SEC}"
# Example conditional: fade out selected tracks early
if [ "$i" -gt 16 ]; then
CMD+=" -kl:1,100,0,${FADE_OUT_SEC}"
fi
done
# Route all 24 chains to the mixdown target
CMD+=" -a:all -o:mixdown_master.wav"
# Execute the mixdown
eval "$CMD"Advanced Control with Chainsetup Files and OSC
For precise timing cues that require mid-track volume drops rather than boundary fades:
- Ecasound Chainsetup (
.ecs) Files: Define your routing in a dedicated.ecsconfiguration file. This separates track definitions from project logic, allowing modular controller adjustments per stem. - Open Sound Control (OSC) and ECI: If live or
time-stamped timeline automation is required, enable the Ecasound
Control Interface (ECI) or OSC daemon mode (
--daemon). This allows external Python, C, or shell scripts to push fade commands (c-set-parameter,cop-set-parameter) directly to any of the 24 chains during playback or render time.