Spiral Segmentation — User Guide
Segment-indexed duration and pitch trajectories using Praat DurationTier and PitchTier resynthesis.
What this does
Spiral Segmentation divides the source time domain into equal control regions. Each region receives a duration factor and a pitch shift. The regions are not extracted and concatenated as separate grains; instead, their values are written into a shared DurationTier and, when voiced pitch is available, a source-relative PitchTier. Each source channel is then resynthesized with Praat overlap-add.
The duration trajectory is exponential across segment index, with optional Gaussian jitter. Pitch can be additive in hertz or proportional in semitones. The original F0 contour is retained wherever voiced pitch is detected; the segment shift is applied to each original PitchTier point.
Quick start
- Select exactly one Sound.
- Run
Spiral_Segmentation.praat. - Choose a preset or Custom.
- Choose Pitch_scaling: Hertz or Semitones.
- Set segmentation, duration, pitch and jitter controls.
- Run the script. The result is named
<source>_spiral.
Presets
| Preset | Segments | Duration | Pitch step | Pitch direction | Jitter |
|---|---|---|---|---|---|
| Gentle Expansion | 8 | 1.12, expanding | 3 Hz / 0.25 st | Rising | 0.05 |
| Accelerating Collapse | 16 | 1.25, contracting | 8 Hz / 0.70 st | Falling | 0.06 |
| Pitch Ascent | 10 | 1.05, expanding | 15 Hz / 1.25 st | Rising | 0.03 |
| Pitch Descent | 10 | 1.05, expanding | 15 Hz / 1.25 st | Falling | 0.03 |
| Drunken Spiral | 12 | 1.18, expanding | 7 Hz / 0.60 st | Alternating | 0.25 |
| Tight Coil | 24 | 1.08, expanding | 2 Hz / 0.17 st | Rising | 0.02 |
| Wide Orbit | 6 | 1.35, expanding | 20 Hz / 1.65 st | Rising | 0.10 |
| Reverse Time Feel | 12 | 1.20, contracting | 5 Hz / 0.43 st | Rising | 0.08 |
| Glitch Scatter | 32 | 1.10, expanding | 12 Hz / 1.00 st | Alternating | 0.40 |
| Meditative Stretch | 6 | 1.50, expanding | 1 Hz / 0.09 st | Falling | 0.02 |
| Anxious Compression | 20 | 1.30, contracting | 10 Hz / 0.85 st | Rising | 0.15 |
| Cosmic Drift | 8 | 1.40, expanding | 25 Hz / 2.00 st | Alternating | 0.12 |
Parameters
| Control | Default | Validated behavior |
|---|---|---|
| Number_of_segments | 12 | 1–512 equal source-time regions |
| Duration_multiplier | 1.15 | 1–10; exponential base |
| Spiral_direction | Expanding | Expanding uses exponent i-1; Contracting uses N-i |
| Pitch_step_Hz | 5.0 | ≥0; used only in Hertz mode |
| Pitch_scaling | Hertz | Hertz = additive F0 offset; Semitones = frequency ratio |
| Pitch_step_semitones | 1.0 | 0–48; used only in Semitones mode |
| Pitch_direction | Rising | Rising, Falling or Alternating by segment index |
| Jitter_amount | 0.08 | 0–2; Gaussian multiplier variation |
| Preserve_original | yes | If off, the selected source Sound is removed after processing |
Processing
The DurationTier receives two points inside each segment boundary, so the factor is nearly constant through each region with a short transition near boundaries. Pitch analysis uses a mono reference at 40 Hz to min(1200, 0.45*SR). Synthesis pitch safety is independent: 20 Hz to 0.45*SR.
In Hertz mode, newF0 = originalF0 + shiftHz. In Semitones mode, newF0 = originalF0 * 2^(shiftSt/12). Values outside synthesis safety are clamped. If no voiced pitch is detected, the duration spiral still runs and pitch shifting is skipped.
Each source channel is processed independently with the same shared duration tier and, when available, the same absolute spiral PitchTier derived from the mono analysis. The exact source channel count is rebuilt. Random jitter has no seed control, so repeated runs can differ.
Visualization
- Original waveform: source with equal-time segment boundaries.
- Spiral waveform: rendered result. Original and result waveforms are autoscaled independently.
- Duration plot: bars are the non-jittered exponential factors; horizontal markers are the actual jittered factors.
- Pitch plot: requested segment shift in the active unit. If pitch safety clamps individual F0 points, this plot does not show that point-by-point reduction.
- Spiral diagram: a conceptual Archimedean spiral. Marker size follows the jittered duration factor; marker position is not a measured time-pitch coordinate.
- Parameters/results and time axis: report the run and compare source/output duration.
Output
- Name:
<source>_spiral - Channel count: preserved exactly
- Time domain: source-aware; resynthesized output duration follows the DurationTier
- Peak handling: attenuation only when absolute peak exceeds 0.95
- Playback and visualization are optional