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:

  1. Assigning Inputs to Chains: You specify a comma-separated list of chains for the input stream (e.g., -a:1,2 -i:multitrack.wav).
  2. Channel Routing: You use the -erc:from_channel,to_channel operator (copy channel) or adjust chain channel counts to ensure each chain processes only its assigned target channel.
  3. 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.
  4. 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.wav

Expanding 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 -erc to extract channel \(N\) to the active chain.
  • Insert the -etd parameter 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.