Multi-channel Random Paulstretch Slices — User Guide
Hybrid generative spatialization: combines random slice extraction with extreme Paulstretch time-expansion, placing each ambient-stretched fragment on separate channel for ethereal multi-channel soundscapes.
What this does
This script implements multi-channel random Paulstretch slicing — a hybrid technique combining random temporal extraction with extreme time-stretching and spatial distribution. Process: (1) Extract random slices from source (0.1-0.5s typical, variable start positions), (2) Paulstretch each slice independently (4x-50x+ expansion with phase randomization), (3) Center-position stretched slices at original temporal locations, (4) Spatial distribution: CH1 = original unchanged, CH2-CH(N+1) = one Paulstretched slice per channel in silence-padded tracks. Result: Multi-channel ambient decomposition where brief source fragments become ethereal drones, each on isolated channel. Combines generative slicing (unpredictability) + Paulstretch (smooth ambience) + multi-channel (spatial separation) for installation, immersive audio, generative composition.
Key Features:
- Hybrid Processing — Random slicing + Paulstretch + multi-channel
- Extreme Stretching — 4x-50x+ expansion per slice (independent)
- Short Source Slices — Typically 0.1-0.5s (brief fragments → long drones)
- Phase Randomization — Smooth, ambient textures per slice
- Spatial Isolation — Each stretched slice on separate channel
- Center Positioning — Slices aligned at original temporal centers
Technical Implementation: (1) Setup: Convert stereo→mono if needed (right channel for slicing), Calculate padding: max_duration × stretch_factor (accommodate longest stretch), Pad CH1 (original) to padded_duration. (2) Slice & Paulstretch loop: For each segment (1 to N): Generate random slice: duration (min/max), start position, Extract slice from source (typically 0.1-0.5s), Apply Paulstretch to slice: FFT-based, phase randomization per frame, overlap-add synthesis, stretch_factor expansion (4x+ typical), Get stretched duration (e.g., 0.3s × 8x = 2.4s), Calculate center positioning: original_center, stretched_start = center - stretched_duration/2, Create silent channel (padded_duration), Copy Paulstretched samples to position. (3) Multi-channel combination: Combine CH1 (original) + CH2-N (stretched slices), Normalize peak across all channels to 0.99. (4) Output: Multi-channel sound (1+N channels), Each slice = independent ambient drone from brief source moment. Key insight: Short source slices (0.1-0.5s) + high stretch (8-20x) = sustained ambient textures (0.8-10s) from fleeting moments. Multi-channel = spatial distribution for installation/immersive contexts.
Quick start
- In Praat, select exactly one Sound object (mono or stereo).
- Run script… → script file.
- Set slice parameters: number_of_segments (4 default), min_duration (0.1s), max_duration (0.5s).
- Set Paulstretch parameters: stretch_factor (4.0 = 4x longer), window_size (0.25s), overlap_percent (50%).
- Click OK — script displays progress per slice (extraction + Paulstretch), generates multi-channel ambient result, auto-plays.
Hybrid Processing Theory
Three-Stage Architecture
Processing Pipeline Overview
Why This Combination?
Advantages of hybrid approach:
- Temporal diversity: Random slicing creates varied source moments
- Timbral transformation: Paulstretch converts transients → drones
- Spatial distribution: Multi-channel allows independent placement
- Generative potential: Each run creates different spatial constellation
- Scalability: More segments = denser ambient texture
Vs single-technique alternatives:
- Just Paulstretch: Entire source stretched → single continuous drone (less spatial interest)
- Just slicing: Fragments remain percussive/rhythmic (not ambient)
- Just multi-channel: Needs content for channels (this generates it)
Short Slices + Extreme Stretch = Sustained Drones
Duration Transformation
Perceptual Effect
Short source (0.1-0.5s):
- Single moment "frozen in time"
- Captures instantaneous spectral snapshot
- Stretched → static chord/drone
- Minimal internal motion
- Ideal for ambient/meditative character
Long source (1.0-3.0s):
- Multiple moments → evolving content
- Stretched → slower evolution (not static)
- More dynamic, less drone-like
- Retains some phrase structure
🎵 Musical Metaphor
Imagine photographing sound:
- Short exposure (0.1s slice): Captures single instant, frozen, sharp
- Paulstretch = time magnification: Enlarges instant to visible/audible duration
- Result: Microscopic view of brief moment, "sound under magnifying glass"
Like macro photography revealing details invisible to naked eye, this reveals spectral character of fleeting moments.
Center Positioning Strategy
Temporal Alignment
Why center stretched slices?
Paulstretch Details (Per Slice)
Frame-by-Frame Processing
For each slice (independently):
Quality Considerations
Optimal Paulstretch parameters for short slices:
- window_size: 0.25s (default) works well — comparable to or larger than slice duration
- overlap: 50% (default) — good balance
- stretch_factor: 8-20x for short slices — creates sustained drones
If window_size > slice_duration:
- Script pads slice to window size
- Padding = silence → doesn't affect spectral content
- Result: Single spectral snapshot stretched
Multi-Channel Spatial Distribution
Channel Content
Spatial Mixing Strategies
In DAW or multi-speaker system:
- CH1 (original): Center speaker or main position
- CH2-N (slices): Surrounding speakers in spatial array
- Panning: Each slice independently pannable
- Processing: Different reverb/effects per channel
- Volume: CH1 louder (foreground) or quieter (background)
Complete Algorithm
Comparison to Related Techniques
| Technique | Slicing | Stretching | Channels | Character |
|---|---|---|---|---|
| Traditional Paulstretch | No | Entire file | Mono/Stereo | Single continuous drone |
| Granular Synthesis | Many tiny | Variable | Mono/Stereo | Cloud textures, mixed |
| Multi-ch Duration Stretch | Random | PSOLA | Multi (1+N) | Time-varied fragments |
| This Script | Random short | Paulstretch | Multi (1+N) | Ambient drone constellation |
| Spectral Freezing | No | Infinite | Mono/Stereo | Static sustained chord |
Parameters
Parameter Table
| Parameter | Type | Default | Description |
|---|---|---|---|
| number_of_segments | positive | 4 | Number of slices to extract/stretch |
| min_duration | real | 0.1 | Minimum slice duration (seconds) |
| max_duration | real | 0.5 | Maximum slice duration (seconds) |
| stretch_factor | positive | 4.0 | Paulstretch expansion multiplier |
| window_size | positive | 0.25 | Paulstretch frame size (seconds) |
| overlap_percent | positive | 50 | Paulstretch frame overlap (0-90%) |
Parameter Details
number_of_segments
Range: 1-10 (practical 2-6)
Default: 4
Effect:
- 1-2: Sparse, minimal ambient layer
- 3-5: Balanced density, clear spatial distribution
- 6-8: Dense ambient texture, overlapping drones
- >8: Very dense, potentially muddy, VERY long processing
Processing time: Linear scaling — 4 segments × 1 min each = 4 min total
min_duration & max_duration
Range: 0.05-2.0 seconds (practical 0.1-1.0)
Defaults: 0.1s (min), 0.5s (max)
Recommendations:
- Very short (0.05-0.15s): Single moments, pure drones, minimal evolution
- Short (0.1-0.5s, default): Brief instants, smooth ambient, ideal for Paulstretch
- Medium (0.5-1.0s): Short phrases, some evolution, less static
- Long (1.0-2.0s): Phrase-length, evolving drones, less "frozen"
Sweet spot: 0.1-0.5s — captures moments without too much internal variation
stretch_factor
Range: 2.0-100.0+ (practical 4.0-20.0)
Default: 4.0 (4× expansion)
Effect:
- 4-8x: Moderate stretch, sustained pads from brief moments
- 8-16x: Strong stretch, long drones, very ambient
- 16-30x: Extreme stretch, nearly infinite sustain
- >30x: "Frozen" quality, single chord-like output per slice
Combined with short slices: 0.2s × 10x = 2s drone from fleeting instant
window_size
Range: 0.1-1.0 seconds
Default: 0.25 seconds
Effect: See Paulstretch documentation. Larger = smoother, smaller = more textured. For short slices, window often larger than slice (script handles padding).
overlap_percent
Range: 25-75%
Default: 50%
Effect: Higher = smoother Paulstretch, lower = faster processing. 50% optimal for quality/speed balance.
Recommended Combinations
🌊 Gentle Ambient (Default)
Settings: 4 segments, 0.1-0.5s slices, 4x stretch
Character: Moderate ambient texture, clear spatial separation
Processing time: ~2-4 minutes
✨ Dense Drone Cloud
Settings: 8 segments, 0.05-0.2s slices, 12x stretch
Character: Many short moments → long overlapping drones
Processing time: ~8-15 minutes (LONG)