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:
- One Active Setup: Only one chainsetup can be
selected (
cs-select) at a time. - Connection Requirement: The real-time engine only
connects (
cs-connect) and starts (start) the currently selected chainsetup. - Switching Execution: To run a different chainsetup, you must stop the engine, disconnect the current setup, select the alternative setup, connect it, and start the engine again.
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:
- Multiple inputs and outputs can be assigned to unique chains.
- Chains run concurrently and share the master engine clock.
- Signal routing, filtering, and mixing can occur across these parallel chains without conflict.
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.