Ecasound Chain Ordering and Audio Execution Order

In Ecasound, the sequence in which audio chains and chain operators are defined directly controls the signal flow, processing hierarchy, and real-time execution timing. Chain ordering determines whether audio operators process data sequentially or in parallel, governs the latency of inter-chain routing via loop devices, and dictates how multi-channel inputs are summed and dispatched to outputs. Understanding these mechanics is essential for achieving predictable audio effects and avoiding unwanted buffer delays during multitrack processing.

Intra-Chain Operator Execution

Within an individual chain, execution is strictly linear and sequential. When multiple chain operators—such as filters, compressors, or gain adjustments—are attached using the -ea, -ef, or -el options, Ecasound executes them in the exact order they are declared from left to right.

For example, placing a gain boost before a limiter produces a hard-clipped, compressed signal, whereas placing the limiter before the gain boost results in clean peak control followed by overall amplification. Because each operator consumes and mutates the audio stream within the chain's current processing buffer, downstream operators only receive the modified output of previous operators.

Inter-Chain Processing and Buffer Scheduling

Ecasound processes audio in discrete blocks defined by the buffer size (-b). During each processing cycle, the engine iterates through all active chains assigned to the current setup.

When chains operate independently—each with its own input and output—the order in which the chains are declared does not alter the audio results, as each chain receives its input and computes its output for the current buffer cycle concurrently. However, CPU workload scheduling and output mixing follow the chain sequence registered in the engine.

The Impact of Order on Loop Devices

Chain ordering has its most critical impact when routing signals between chains using virtual loop devices (-i:loop,N and -o:loop,N). Loop devices pass audio from a writer chain to a reader chain.

  1. Forward Routing (Producer First): If Chain A writes to loop,1 and Chain B reads from loop,1, and Chain A is declared earlier in the setup than Chain B, Ecasound processes Chain A first. Chain B then reads the freshly processed audio in the same processing cycle, resulting in zero-buffer cross-chain latency.
  2. Reverse Routing (Consumer First): If Chain B is declared before Chain A, Chain B attempts to read from loop,1 before Chain A has populated it for that cycle. Consequently, Chain B reads the data from the previous cycle, introducing an inherent one-buffer delay (latency equal to the -b sample buffer size). While this delay is useful for deliberate feedback loops, it introduces unintentional phase issues and timing offsets in standard sub-mixing or parallel processing workflows.

Summing and Output Dispatch Order

When multiple chains are routed to the same physical audio output, Ecasound sums their streams. The declaration order of the chains determines the accumulation sequence into the final output buffer. While digital audio summing is mathematically commutative (\(A + B = B + A\)), the chain execution order dictates the precise point at which master effects or post-mix routing can intercept the combined stream before writing to disk or an external sound server like ALSA or JACK.