Delay Individual Channels Independently in Ecasound
Ecasound fully supports delaying individual audio channels independently within a multitrack chainsetup. By decoupling a multichannel audio stream into separate processing chains, you can apply distinct delay operators—such as built-in time-delay effects or LADSPA plugins—to individual channels before merging them back into a single multichannel output.
To achieve independent channel delays, Ecasound utilizes its core
architecture of chains (-a), audio inputs
(-i), audio outputs (-o), and channel-routing
operators (-erc).
How Channel Splitting Works
A standard multitrack file or multichannel stream can be assigned to multiple processing chains simultaneously. Once an input feeds multiple chains, you use channel-routing operators to isolate individual channels per chain:
- Assigning Inputs to Chains: You specify a
comma-separated list of chains for the input stream (e.g.,
-a:1,2 -i:multitrack.wav). - Channel Routing: You use the
-erc:from_channel,to_channeloperator (copy channel) or adjust chain channel counts to ensure each chain processes only its assigned target channel. - Applying the Delay: The delay effect is applied
only to the designated chain. Ecasound includes the native
-etd(delay) operator, configured as-etd:delay_time_msec,surround_mode,number_of_delays,mix_percent. Alternatively, external LADSPA delay plugins can be loaded using-el:plugin_name. - Combining the Output: Finally, all processed chains
are assigned to a single multichannel output file or device (e.g.,
-a:1,2 -o:output.wav), where each chain feeds its respective channel in the final track.
Practical Command Example
The following command demonstrates taking a stereo audio input, leaving channel 1 unaltered, delaying channel 2 by 150 milliseconds, and recombining both into a stereo output file:
ecasound \
-a:ch1,ch2 -i:input_stereo.wav \
-a:ch1 -erc:1,1 \
-a:ch2 -erc:2,1 -etd:150,0,1,100 \
-a:ch1 -erc:1,1 -a:ch2 -erc:1,2 \
-a:ch1,ch2 -f:16,2,44100 -o:delayed_output.wavExpanding to Higher Track Counts
For four, eight, or more channels, the logic remains the same:
- Create an individual chain for each track (e.g.,
-a:1,2,3,4). - Use
-ercto extract channel \(N\) to the active chain. - Insert the
-etdparameter with unique millisecond values on the specific chains requiring delay. - Re-map the outputs to their final channel positions before routing the consolidated chains to the destination stream.
Because each chain maintains its own signal processing stack, delays operate completely independently without cross-talk or timing interference between channels.