Using Ecasound as a JACK Transport Master or Client
Ecasound is a powerful command-line multitrack audio processing tool that integrates directly with the JACK Audio Connection Kit. It fully supports JACK transport functionality, allowing it to operate both as a transport master that dictates playback state and as a transport client (slave) that responds to external controls. This guide outlines how Ecasound interacts with the JACK transport mechanism and the specific parameters required to configure each role.
JACK Transport Capabilities in Ecasound
Ecasound provides bidirectional integration with JACK transport. Depending on how it is invoked, it can:
- Act as a Client (Slave): Synchronize its playback, pause, and repositioning states to an external master, such as Ardour, Hydrogen, or QjackCtl.
- Act as a Master: Control the global JACK transport timeline, broadcasting play, stop, and locate events to all other connected JACK clients.
- Act in Bidirectional Mode: Send and receive transport events simultaneously to keep multiple interactive tools in sync.
The -G Option Syntax
Transport integration in Ecasound is handled via the generic system
interface parameter -G. To configure JACK transport, use
the following syntax:
-G:jack,client_name,mode
jack: Specifies the subsystem to use.client_name: Defines the name Ecasound will register under within the JACK graph.mode: Determines the transport role.
Configuration Modes
1. Transport Client (Slave Mode)
To configure Ecasound to listen to an external JACK master, set the
mode parameter to recv:
ecasound -G:jack,ecasound,recv -i input.wav -o jackIn this mode, Ecasound will not begin processing audio until the JACK transport receives a roll or play command from the master. If the master stops, loops, or seeks to a new position, Ecasound follows automatically.
2. Transport Master Mode
To make Ecasound control the global transport timeline for other
applications, set the mode parameter to send:
ecasound -G:jack,ecasound,send -i input.wav -o jackWhen started, Ecasound issues commands to the JACK server to start rolling, effectively driving any transport-aware clients connected to the session.
3. Bidirectional Mode
To enable full two-way synchronization where Ecasound can both issue
commands and follow external timeline changes, set the mode to
sendrecv:
ecasound -G:jack,ecasound,sendrecv -i input.wav -o jackThis mode is ideal when operating Ecasound interactively via the Ecasound Interactive Mode (EIAM) while simultaneously using a GUI controller like QjackCtl for visual timeline tracking.
Interactive Control
When running in interactive mode (-c), transport
commands issued directly inside the Ecasound shell (such as
start, stop, or setpos) will
immediately propagate across the entire JACK environment if the mode is
set to send or sendrecv. This makes Ecasound a
viable headless transport controller in automated audio production
environments.