Initializing the Ecasound Engine in Python with ECI
This article provides an overview of how the Ecasound Control Interface (ECI) functions within a Python environment, specifically focusing on the function calls required to initialize the processing engine and prepare audio chainsetups for execution. It covers the Python object instantiation process, the essential control commands, and the background mechanics of the initialization workflow.
To initialize the Ecasound processing engine within a Python script,
you use the command() method of the
ECA_Control_Interface object to send the
cs-init command:
eci.command("cs-init")Before issuing this command, the ECI controller itself must be instantiated in your script. The standard workflow begins by importing the Python ECI wrapper and creating an interface object:
from pyecasound import ECA_Control_Interface
# Instantiate the ECI controller
eci = ECA_Control_Interface()Creating the ECA_Control_Interface() instance starts the
underlying Ecasound control session. However, the processing engine
itself remains uninitialized until an audio chainsetup is loaded and
configured.
Once your inputs, outputs, and chains are defined, issuing
eci.command("cs-init") explicitly initializes the currently
connected chainsetup. During the cs-init phase, Ecasound
performs critical pre-flight actions:
- It validates input and output audio formats, sample rates, and channel counts.
- It allocates the necessary real-time processing buffers.
- It opens access to audio devices, files, and plugins defined in the chainsetup.
If cs-init succeeds, the engine transitions from a
configuration state to an initialized state, making it ready to process
audio.
While calling eci.command("start") will automatically
invoke cs-init behind the scenes if the engine is not
already prepared, explicitly calling eci.command("cs-init")
is the standard practice. It allows you to verify that all hardware
endpoints, file descriptors, and processing chains are valid before
triggering playback or recording.