Ecasound Mono-to-Stereo Spatial Widening

This article explains how Ecasound transforms a single-channel mono audio signal into a wide pseudo-stereo field using its built-in routing architecture and signal processing operators. By splitting a mono source across independent processing chains, applying timing and phase offsets, leveraging frequency splits, or integrating external LADSPA plugins, Ecasound offers lightweight, terminal-based control over spatial audio imaging.

The Core Mechanism: Chain-Based Splitting

Ecasound achieves mono-to-stereo conversion natively through its chain routing system. In Ecasound, an audio input can be assigned simultaneously to multiple processing chains, each routed to specific channels of a multi-channel output.

To widen a mono source, Ecasound directs the single input into two separate chains (representing Left and Right). Each chain receives distinct acoustic processing before being summed into an interleaved stereo output stream.

Implementing the Haas Effect (Time-Delay Widening)

The most common method for pseudo-stereo widening in Ecasound is the Haas (precedence) effect. By delaying one channel by 10 to 30 milliseconds relative to the other, the human brain perceives a wider acoustic space without hearing an explicit echo.

In Ecasound, this is configured using:

  • The chain selector (-a:chain_name)
  • The channel panning operator (-epp:pan_percent)
  • The delay operator (-etd:delay_time_ms,surround_mode,number_of_delays,mix_percent,feedback_percent)

Example Haas Widening Command

ecasound -a:1,2 -i:mono_input.wav \
         -a:1 -epp:0 \
         -a:2 -etd:18,0,1,100,0 -epp:100 \
         -a:1,2 -f:s16_le,2,44100 -o:stereo_widened.wav

In this command:

  • -a:1,2 -i:mono_input.wav assigns the mono input file to Chain 1 and Chain 2.
  • -a:1 -epp:0 pans Chain 1 hard left (0%).
  • -a:2 -etd:18,0,1,100,0 -epp:100 delays Chain 2 by 18 milliseconds at a 100% wet mix with zero feedback, then pans it hard right (100%).
  • -a:1,2 -f:s16_le,2,44100 -o:stereo_widened.wav combines both chains into a standard 2-channel 44.1 kHz stereo file.

Spectral and Comb-Filter Widening

A purely delayed signal can introduce severe comb filtering and phase cancellation if summed back to mono. To mitigate this, Ecasound allows channel-specific equalisation using low-pass, high-pass, or band-pass filters:

  • Left channel: Mild high-shelf or high-pass bias (-ef3 or -ef1).
  • Right channel: Complementary low-shelf or low-pass bias.

Distributing frequency bands differently across the left and right channels prevents phase cancellation artifacts while generating a perceived stereo spread across the frequency spectrum.

LADSPA Plugin Integration

Ecasound supports LADSPA (Linux Audio Developer's Simple Plugin API) plugins natively via the -el option. Instead of constructing manual delay lines, users can insert dedicated stereo spatializers and chorus/dimension effects directly into chains:

  • Stereo Chorus/Flanger (-el:chorus_1433): Applies subtle pitch modulation and micro-delays between channels.
  • Matrix Spatializers: Plugins that translate mid-side (M/S) channels to alter the width directly.

Example using an external LADSPA stereo widener on a split bus:

ecasound -a:1 -i:mono_input.wav -el:caps_WideMono -o:stereo_output.wav

Mono Compatibility Considerations

When creating spatial widening effects in Ecasound:

  1. Keep delay values strictly under 35 milliseconds to avoid distinct rhythmic echoes.
  2. Avoid hard phase-inversion (-ea:channel_invert structures) without dry center preservation, as this causes the signal to cancel out completely when collapsed back to a single mono speaker.
  3. Keep the original, unprocessed dry signal mixed slightly in both chains to preserve the phantom center image for lead elements such as vocals or dialogue.