Stereo Delay Splitter — User Guide
Applies two forward-difference comb-filter passes independently to the left and right channels, with separate delay times and an adjustable wet/dry mix. Delays can be derived from file duration, fixed milliseconds, or manual-BPM note values.
What this does
Stereo Delay Splitter creates a stereo result in which the left and right channels pass through the same two-stage difference structure but use independent delay values.
Different L/R delay geometries produce different comb responses in the two channels. The output keeps the source duration and sample rate.
Quick start
- Select exactly one Sound object. Mono and multichannel input are accepted.
- Run
Stereo_Delay_Splitter.praat. - Choose Custom or one of the four divisor presets.
- Choose Delay_mode: Divisor, Milliseconds, or Tempo-synced.
- Set the corresponding delay controls.
- Set Wet_dry from 0 for dry to 1 for fully processed.
- Run. The result is named
<source>_stereo_split.
Two-stage difference filter
Each channel is processed twice. For one pass with delay D samples:
The delayed term is a forward read: the filter compares the current sample with a later sample in the Sound. This is an offline, noncausal FIR operation.
Interior four-tap structure
Where both passes have valid forward reads, applying delays D1 and D2 in sequence gives:
The corresponding four tap positions are 0, D1, D2 and D1+D2 with signs +, −, −, +.
End-of-file behavior
Each pass leaves a sample unchanged whenever its own forward read would exceed the Sound. The transition near the end is therefore pass-dependent rather than padded, wrapped, or truncated. If a requested delay is at least the complete file length, that entire pass becomes a no-op for the channel.
Delay modes
Divisor — fraction of file
The absolute delay therefore scales with source duration. For a source of duration T, the approximate delay is T/divisor.
For one difference stage, the comb spacing is approximately:
With long files and small divisors this spacing can become very dense, producing broad decorrelation/coloration rather than a small set of widely spaced tonal notches.
Milliseconds
Each channel has two independent fixed-millisecond controls. Short delays produce more widely spaced comb notches.
Tempo-synced
| Note option | Quarter-note beats |
|---|---|
| 1/2 | 2 |
| 1/4 | 1 |
| 1/4 dotted | 1.5 |
| 1/8 | 0.5 |
| 1/8 dotted | 0.75 |
| 1/16 | 0.25 |
| 1/16 dotted | 0.375 |
| 1/32 | 0.125 |
All four calculated delays are clamped to at least one sample.
Wet/dry mix
After the two filter passes, each processed channel is mixed with its own untouched pre-processing channel:
Wet_dry is internally clamped to 0…1.
| Wet_dry | Result |
|---|---|
| 0 | Original stereo preparation only. |
| 0.5 | Equal linear mix of dry and processed signals. |
| 1 | Fully processed two-stage difference filter. |
Input-channel behavior
| Input | Processing source |
|---|---|
| Mono | The mono Sound is duplicated into identical L and R channels before independent processing. |
| Stereo | Channel 1 becomes L and channel 2 becomes R. |
| 3+ channels | Only channels 1 and 2 are used for the stereo result. |
The result is always a two-channel stereo Sound.
Divisor presets
| Preset | Left divisors | Right divisors |
|---|---|---|
| Default | 2, 4 | 8, 10 |
| Narrow Stereo | 3, 5 | 6, 8 |
| Wide Stereo | 2, 6 | 12, 18 |
| Alt Divisors | 2, 3 | 9, 15 |
The presets overwrite only Divisor_L1, Divisor_L2, Divisor_R1 and Divisor_R2. Delay_mode, millisecond delays, BPM/note values, Wet_dry, Scale_peak, visualization and playback remain unchanged.
Parameters
| Parameter | Default | Exact role |
|---|---|---|
| Preset | Default | Four divisor presets plus Custom. |
| Divisor_L1 / L2 | 2 / 4 | Left-channel file-fraction delays in Divisor mode. |
| Divisor_R1 / R2 | 8 / 10 | Right-channel file-fraction delays in Divisor mode. |
| Delay_mode | Divisor | Divisor, Milliseconds, or Tempo-synced. |
| Delay_L1_ms / L2_ms | 3 / 5 ms | Left delays in Milliseconds mode. |
| Delay_R1_ms / R2_ms | 7 / 11 ms | Right delays in Milliseconds mode. |
| Manual_bpm | 120 | Tempo reference for Tempo-synced mode. |
| Note_L1 | 1/8 | Left first note-value delay. |
| Note_L2 | 1/16 | Left second note-value delay. |
| Note_R1 | 1/4 | Right first note-value delay. |
| Note_R2 | 1/8 dotted | Right second note-value delay. |
| Wet_dry | 1.0 | Linear dry/processed mix; internally clamped to 0…1. |
| Scale_peak | 0.99 | Final target Sinc70 peak for non-silent output. |
| Draw_visualization | On | Draw process geometry, waveforms, spectra and summary. |
| Play_result | On | Play the completed result. |
Final peak scaling
After L and R are recombined, the script measures the Sinc70 absolute extremum. For a non-silent result it applies:
This is target peak normalization. With the default setting, any non-zero result is scaled to a Sinc70 peak of 0.99.
Visualization
The v0.6.2 Picture view represents both the process and its spectral consequence:
- Source waveform — the original selected Sound.
- Stereo delay geometry — L and R lanes show their actual D1, D2 and D1+D2 positions on one shared millisecond axis.
- Stereo result waveform — completed processed Sound.
- Original spectrum and Split spectrum — mono display folds, capped at min(5 kHz, Nyquist).
- Summary strip — actual L/R delays and wet/dry percentages.
Four-tap geometry
Each lane shows the composed two-pass kernel:
Filled markers represent positive taps; ring markers represent negative taps. L and R use the same sign pattern but different horizontal spacing.
Waveform scale
Source and Result use the same amplitude range derived from the larger Sinc70 peak, with 5% display headroom.
Spectrum panels
Both spectra are display-only mono folds. They show the overall spectral effect of the two-channel processing, while the central delay geometry preserves the separate L/R structure.
Output behavior
- Name:
<source>_stereo_split. - Channels: always stereo.
- Duration: unchanged.
- Sample rate: unchanged.
- Original Sound: unchanged.
- Randomness: none.
- Playback: optional through Play_result.