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:

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:

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:

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:

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.