Stereo Delay Splitter — User Guide

Independent channel delay processing: applies different divisor-based delay patterns to left and right channels separately, creating stereo width and spatial separation through differential temporal processing.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel

What this does

This script processes stereo sound by splitting channels, applying different delay arrays to each (like delay_array.praat but per-channel), then recombining. Left channel gets divisors 1-2, right channel gets divisors 3-4. Different delay patterns create stereo width and spatial interest. Result: Enhanced stereo image with independent channel transformations.

Stereo Input: [LEFT] [RIGHT] ↓ ↓ Split: L R ↓ ↓ Process: d1,d2 d3,d4 ↓ ↓ Recombine: [LEFT] [RIGHT] └───┬───┘ Stereo Output

Quick start

  1. Select one stereo Sound object in Praat (must be 2-channel).
  2. Run script… → Load Stereo Delay Splitter script.
  3. Choose Preset: Default/Narrow/Wide/Alt or Custom.
  4. If Custom: Set divisors 1-4 and channel ranges.
  5. Click OK — processing instant, auto-plays stereo result.
Quick tip: Start with Default preset (L: 2,4 | R: 8,10) for balanced stereo width. Wide Stereo for maximum separation, Narrow for subtle effect. Requires stereo input — mono files won't work.

Presets

PresetLeft (d1,d2)Right (d3,d4)Character
Default2, 48, 10Balanced stereo width
Narrow Stereo3, 56, 8Subtle separation, similar channels
Wide Stereo2, 612, 18Maximum separation, extreme width
Alt Divisors2, 39, 15Asymmetric, experimental spacing

🎧 Default (L:2,4 | R:8,10)

Left: Longer delays (samples/2, samples/4) = slower echoes

Right: Shorter delays (samples/8, samples/10) = faster echoes

Effect: Left spacious, right tighter = balanced stereo image

Best for: General use, enhancing stereo width without extremes

How It Works

Independent Channel Processing

Process flow:

  1. Split stereo: Extract left (channel 1) and right (channel 2)
  2. Process left: Apply divisors 1-2 (iterations left_start to left_end)
  3. Process right: Apply divisors 3-4 (iterations right_start to right_end)
  4. Recombine: Merge processed channels back to stereo
  5. Normalize: Scale peak to 0.99

Delay Formula (Per Channel)

Same as delay_array.praat, applied independently:

Stereo width mechanism: Different delays per channel = different temporal patterns = perceived spatial separation. Larger divisor difference = wider stereo image.

Parameters

ParameterTypeDefaultDescription
PresetchoiceDefaultPreset stereo configuration
Left Channel Divisors
divisor_1positive2First left channel divisor
divisor_2positive4Second left channel divisor
Right Channel Divisors
divisor_3positive8First right channel divisor
divisor_4positive10Second right channel divisor
Iteration Ranges
left_start / left_endnatural1 / 2Which divisors for left (1-2 = d1,d2)
right_start / right_endnatural3 / 4Which divisors for right (3-4 = d3,d4)
Output Options
scale_peakpositive0.99Peak normalization level
play_after_processingbooleanyesAuto-play result

Creating Stereo Width

Divisor strategies:

Narrow stereo (subtle separation):

Balanced stereo (moderate width):

Wide stereo (maximum separation):

Rule of thumb: Greater divisor difference between channels = wider stereo image. Example: L:2 vs R:18 (difference=16) = very wide. L:3 vs R:6 (difference=3) = narrow.

Applications

Stereo enhancement:

Sound design:

Mixing:

Best with: Stereo recordings with some similarity between channels (not completely independent content). Percussion, ambiences, synth pads work well. Voice may sound unnatural with extreme widening.

Output

New Sound object: "soundObj_stereo"

Processing: Instant execution. Temporary left/right objects created and removed automatically. Only final stereo result remains.

Limitations

  • Stereo input required: Will not work with mono files (needs 2 channels)
  • Fixed iteration count: Always 2 iterations per channel (hardcoded)
  • No mid-side processing: Processes L/R directly, not mid-side components
  • Divisor-based delays only: Cannot specify delays in milliseconds directly
  • Same formula both channels: Only divisors differ, not processing type

Related script: For mono processing with more iteration control, use delay_array.praat