Running Independent Chains in Ecasound Chainsetups

Ecasound fully supports chainsetups containing disconnected chains that process audio completely independently of one another. This article explores how Ecasound handles parallel, isolated signal paths within a single chainsetup, demonstrates the basic syntax required to configure them, and explains how global engine parameters such as buffer sizes and transport controls affect concurrent, independent processing pipelines.

Independent Chains in a Single Chainsetup

In Ecasound, a chain is an audio processing path that connects audio inputs, operators (such as effects, filters, and envelope controllers), and outputs. A chainsetup acts as the master container for all active chains.

A chainsetup does not require chains to be interconnected. If chains do not share inputs, outputs, or inter-chain routing elements (like loop devices), they exist as topologically disconnected graphs. Ecasound processes each of these disconnected chains in parallel without routing audio between them.

Syntax and Configuration

To run disconnected chains, define separate chain names using the -a option and assign distinct inputs (-i) and outputs (-o) to each:

ecasound \
  -a:chain1 -i:input1.wav -ea:150 -o:output1.wav \
  -a:chain2 -i:input2.wav -efl:800 -o:output2.wav

In this configuration:

Neither chain passes data to the other, making them functionally independent audio pipelines operating within the same process.

Shared Engine Dynamics

Although disconnected chains are functionally isolated in terms of audio routing, they remain governed by the same underlying Ecasound engine instance. This introduces several shared factors:

Typical Use Cases

Running disconnected chains in one chainsetup is useful when: