Multiple Concurrent Chainsetups in Ecasound

Ecasound allows users to define and load multiple chainsetups within a single interactive session, but it does not support running or processing multiple chainsetups concurrently. While multiple setups can reside in memory, only one chainsetup can be active and connected to the processing engine at any given moment. To achieve concurrent audio routing, users must combine independent signal paths as distinct chains within a single active chainsetup, or run separate, concurrent Ecasound instances.

Loading vs. Executing Chainsetups

In Ecasound, a chainsetup serves as the container for audio processing topologies, holding the configuration for inputs, outputs, controllers, and individual audio chains.

You can add or load multiple chainsetups into an interactive Ecasound session using commands like cs-add or cs-load. These configurations exist side by side in memory, allowing you to manage and switch between different routing presets without exiting the program. However, Ecasound's engine architecture enforces a strict single-active model:

Achieving Concurrent Audio Processing

If your goal is to process multiple independent audio paths simultaneously within a single session, you must structure the configuration around chains rather than separate chainsetups.

Within a single active chainsetup:

For example, two completely isolated signal paths (such as recording one source to a file while processing and playing back another) should be defined as separate chains (e.g., chain1 and chain2) within one chainsetup.

Running Truly Isolated Configurations

When configurations require entirely different sample rates, incompatible buffer sizes, or distinct real-time priorities that cannot coexist inside a single chainsetup, the solution is to launch multiple independent Ecasound processes. Most modern audio subsystems (such as JACK, ALSA with dmix, or PipeWire) easily handle multiple simultaneous Ecasound clients running in parallel.