Self-Oscillating FDN Synthesizer — Nonlinear Feedback Network Synthesis

Turn a feedback delay network into an autonomous sound generator. Eight coupled delay lines move from decay through near-critical resonance into bounded self-oscillation, with nonlinear shaping, evolving feedback conditions, and spatial output derived directly from the network state.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 1.1 (2026) Category: Synthesis License: MIT License Repo: Praat AudioTools
Contents:

What this does

Self-Oscillating FDN Synthesizer is a pure-Praat nonlinear feedback delay network designed as a synthesizer rather than a conventional reverberator. Eight delay lines are coupled through an energy-preserving feedback matrix, filtered, DC-blocked, passed through a bounded nonlinearity, and written back into the network. A short excitation starts the system; after that, the sound is generated by the feedback dynamics themselves.

The network is the instrument. This is not an oscillator bank and it does not continuously inject a source signal. Pitch, beating, spectral density, amplitude evolution, and spatial movement emerge from the interaction of the eight coupled delay states.

Key Features:

Quick start

  1. Run Self_Oscillating_FDN_Synthesizer.praat. No input Sound is required.
  2. For a first run, choose Self-Oscillating, the default preset.
  3. Keep Duration = 8 s, Sample rate = 44100 Hz, Output layout = Stereo, and Normalization = Peak.
  4. Enable Draw visualisation to see how the network evolves after the excitation ends.
  5. Try Damped Resonator, Critical Network, and Strong Nonlinear to hear the main dynamical regimes.
  6. Then explore the experimental presets, especially Metallic Organism, Slow Attractor, Breathing Metal, Ignition, and Chaotic Edge.
  7. Enable Show parameters to expose the network, excitation, nonlinear, spatial, and drift controls behind the chosen preset.
No dependencies: the entire synthesizer runs inside Praat. Praat 6.3+ is required; Python is not used.

Core concept

The synthesis loop combines delayed state, damping, DC blocking, matrix coupling, and bounded nonlinear feedback. Each delay line has its own delay length and its own damping/DC state, but all eight lines interact through the feedback matrix.

eight delayed states ↓ per-line feedback radius + one-pole damping ↓ per-line DC blocker ↓ 8 × 8 feedback matrix ↓ bounded nonlinear function + short excitation ↓ write back into the eight delay lines ↓ spatial projection → stereo / quad / 8-channel Sound

The default feedback matrix is a normalised 8 × 8 Sylvester-Hadamard matrix. In the ideal linear case it preserves energy while redistributing it among the lines. The nonlinearity then bounds growth when the network is operated above the critical region.

After excitation: the script marks the end of the excitation in the visualisation. Everything that follows is produced by feedback circulation inside the network rather than by a continuously supplied source.

20 Presets + Custom

Reference regimes

Damped Resonator

Clearly below unity: a long but decisively decaying coupled resonance. Uses a short noise burst and linear drive settings so the network behavior is easy to read.

Critical Network

Extremely close to the critical region, with very slow energy loss and minimal nonlinear intervention.

Sustained FDN

Approximately unity behavior with gentle saturation and slight asymmetry, designed for long-lived resonance.

Self-Oscillating

Slightly supercritical feedback with moderate nonlinear bounding. This is the default preset and the clearest starting point for autonomous FDN synthesis.

Strong Nonlinear

Higher growth, stronger drive, harder saturation, and increased asymmetry for a more forceful nonlinear regime.

Experimental presets

Metallic Organism

Short irregular delays, high feedback, bright damping, and a distributed state-driven image.

Glass Swarm

Very short distributed delays, wide space, sparse excitation, and light softsign saturation.

Slow Attractor

Longer delays, low drive, darker damping, and an orbiting field that develops slowly around the critical region.

Rusted Machine

Highly irregular delay distribution, dark damping, strong saturation, asymmetry, and a Householder feedback matrix.

Digital Insects

Extremely short delays, sparse random excitation, high instability, and dense high-frequency activity.

Frozen Resonance

Near-critical behavior with very low damping and minimal nonlinear drive.

Fractured Bell

Medium irregular delays, a bipolar excitation, moderate nonlinearity, and an overall decaying regime.

Breathing Metal

A metal-like network whose growth rate drifts slowly while its spatial field orbits at a gentle rate.

Unstable Choir

Longer, more closely grouped delays, gentle saturation, darker damping, and slow orbiting spatial motion.

Chaotic Edge

A deliberately complex nonlinear edge regime with strong drive and asymmetry. The name is artistic; the script does not claim mathematically proven chaos.

Collapse and Recover

Begins supercritical and gradually moves into the stable region while drive falls and damping increases.

Ignition

Begins below critical and slowly crosses into self-oscillation as drive rises and damping opens.

Feedback Storm

High nonlinear drive, strong irregularity, aggressive growth, and bounded harder saturation.

Microstructure

Very short delays and low damping create dense, bright, high-frequency nonlinear texture.

Deep Network

Long delays create low, slowly interacting resonances and a more spacious temporal structure.

Custom

Uses the default starting values and automatically opens the parameter dialogs for full manual control.

Controls

Main dialog

ControlDefaultFunction
PresetSelf-OscillatingFive reference regimes, fifteen experimental presets, or Custom.
Duration8 sRendered duration. Limited internally to 120 seconds.
Sample rate44100 HzAllowed range: 8000–192000 Hz.
Random seed1Controls reproducible stochastic excitation.
Output layoutStereoStereo, Quad (FL FR RL RR), or 8-channel ring.
NormalizationPeakPeak, Resonance (RMS of the body), or None.
Output peak-1 dBFSPeak ceiling used by Peak and Resonance normalisation.
EndingShort fadeHard stop, 20 ms fade, or fade over 10% of the duration.
Show parametersOffOpens the detailed network and advanced dialogs after applying the preset.
Draw visualisationOnCreates the multi-panel Praat Picture explanation.
Play resultOnPlays the generated Sound after synthesis.

Network parameters

ParameterRange / role
Base delayDefines the shortest nominal delay before irregularity and prime snapping.
Delay spread0–1000%. Expands the geometric range between the shortest and longest delay.
Delay irregularity0–1. Perturbs the geometric delay distribution before selecting distinct prime lengths.
Instability start / end-1…+1. Controls the start and end growth rates with fine resolution around the critical point.
Drive start / end0.1–20. Controls the nonlinear operating range while preserving unit small-signal gain.
Damping start / end0–1. Maps logarithmically from a bright high cutoff toward approximately 150 Hz.
Stereo spread0–100%. Contracts or expands the spatial projection; in Orbiting mode it defines the arc width.

Excitation & advanced parameters

ParameterOptions / role
Excitation typeSingle impulse / Short noise burst / Sparse random impulses / Initial random state / Bipolar pulse.
Excitation amount0–2. Scales the initial energy supplied to the network.
Excitation durationUsed by time-extended excitation modes.
NonlinearitySoft saturation (tanh) / Softsign / Cubic soft clip / Harder saturation.
Asymmetry0–0.6. Introduces nonlinear bias, even harmonics, and richer sustained dynamics; the effective internal bias is safety-capped when required.
Feedback matrixHadamard 8×8 / Householder 8×8 / Decoupled identity reference.
Spatial modeOrthogonal Field / Distributed Network / Orbiting Network.
Spatial motion0–100%. Orbiting swing amplitude.
Spatial rate0.005–1 Hz. Orbiting swing rate.
Drift depth0–30 dB/s. Adds slow sinusoidal modulation to the network growth rate.
Drift rateFrequency of the growth-rate drift.

Instability & growth rate

The user-facing Instability parameter is not used as a single raw feedback multiplier. It is mapped cubically to a growth rate in dB per second:

growth rate ρ = 60 × Instability³ dB/s

The cubic mapping gives much finer control around zero, where very small changes can move the network between decay, sustained resonance, and self-oscillation.

Each delay line receives its own per-pass feedback radius according to its delay length:

gₖ = 10^(ρ dₖ / (20 · sampleRate))

This keeps the growth or decay rate consistent per second across delay lines of different lengths. A single shared per-pass gain would make short and long delays grow at radically different rates.

Reported regimeGrowth rateInterpretation
Dissipative< -3 dB/sEnergy clearly decays.
Near-critical-3 to -0.3 dB/sVery slow decay and long-lived coupled resonance.
Sustained-0.3 to +0.3 dB/sApproximately unity behavior.
Self-oscillating+0.3 to +15 dB/sSmall signals grow until bounded by the nonlinear feedback function.
Strongly nonlinear> +15 dB/sRapid growth drives the network deeply into nonlinear saturation.
Terminology: irregular or complex behavior is described as nonlinear, self-oscillatory, quasi-periodic, or chaos-like where appropriate. The tool does not claim mathematically proven chaos; that would require an analysis such as Lyapunov-exponent estimation.

Nonlinearity & damping

The nonlinear stage is designed so its small-signal gain remains approximately unity. This separates the primary growth/decay control from the character of the saturation:

f(x) = [S(D(x + b)) − S(Db)] / [D · S′(Db)] D = Drive b = Asymmetry S = selected bounded saturator

Soft saturation (tanh)

Smooth symmetric saturation and the default nonlinear mode.

Softsign

A softer rational saturation curve with a different approach to the bounds.

Cubic soft clip

A bounded cubic transfer based on a clipped -1…+1 input domain.

Harder saturation

A stronger bounded curve used by more aggressive presets such as Strong Nonlinear and Feedback Storm.

Asymmetry shifts the nonlinear operating point. At zero asymmetry the sustained behavior is close to scale-invariant with respect to Drive; non-zero asymmetry breaks that invariance, introduces even harmonics, and can substantially change the long-term spectral state.

Damping is a separate one-pole low-pass state for every delay line. The 0–1 control maps logarithmically from a high cutoff near 20 kHz toward 150 Hz, capped appropriately by the current Nyquist frequency.

Nonlinear bistability is possible. With asymmetry, a sufficiently strong excitation can keep some slightly negative-growth configurations active even though a weak excitation would decay. This is a property of the nonlinear system rather than a processing error.

Excitation

Excitation only starts the network. It is not a continuous synthesis source.

ModeBehavior
Single impulseOne impulse enters all eight lines with alternating polarity.
Short noise burstA windowed Gaussian-noise burst excites a broad set of network modes. Used by the main reference presets.
Sparse random impulsesLow-density random impulses are distributed across the eight lines during the requested excitation interval.
Initial random stateThe delay-line history is seeded directly; there is no explicit input excitation afterward.
Bipolar pulseA short positive/negative pulse with alternating line polarity.
Reproducibility: stochastic excitation uses the user Random seed. The synthesis itself is deterministic for the same parameters and seed.

Spatial output

The spatial layer is generated from the eight FDN states themselves. No reverb or post-hoc spatial effect is required.

Orthogonal Field

The stereo/quad channels use different zero-mean sign projections of the eight states. At 8 channels, each delay line can feed its corresponding speaker directly. Spread contracts the field toward the centre.

Distributed Network

The eight delay states occupy fixed positions in the order 1–5–3–7–2–6–4–8, avoiding a simple mapping from delay length to spatial position. Nothing is explicitly panned over time: movement is created by energy moving between the network states.

Orbiting Network

The distributed nodes occupy an arc whose width is set by Spread. The whole arc swings slowly according to Spatial motion and Spatial rate, adding controlled external motion to the internal state-driven field.

Output layouts

LayoutSpeaker geometry
StereoLeft -30°, Right +30°.
QuadFront Left -45°, Front Right +45°, Rear Left -135°, Rear Right +135°.
8-channel ringEight speakers spaced by 45°, beginning at -22.5°.
State-driven space: Distributed Network is especially important conceptually. Its nodes remain fixed; the audible image moves because the internal FDN energy distribution changes. Spatial trajectory and synthesis trajectory are therefore aspects of the same dynamical system.

Normalisation & ending

Version 1.1 applies fades before final normalisation. The processing order is:

Subtract mean → fade-in / ending fade → normalisation
ModeBehavior
PeakScales the rendered Sound to the requested Output peak, with an internal ceiling no higher than 0.999.
Resonance (RMS of the body)Applies an 8 ms fade-in, targets approximately -18 dBFS RMS over the body-analysis window, and reduces the gain when needed to respect the requested peak ceiling.
NoneLeaves the raw rendered level unchanged and reports when the output exceeds full scale.

The supplied Damped Resonator and Critical Network use a short noise burst rather than a single impulse. This avoids a needle-like initial transient dominating peak normalisation while leaving the resonant body perceptually weak.

Ending can be Hard stop, a 20 ms Short fade, or a Longer fade covering 10% of the rendered duration.

Visualisation

When Draw visualisation is enabled, the tool creates a Praat Picture figure intended to explain what the network actually did rather than merely decorate the result.

1 — Output spectrogram

Shows the generated spectral evolution. A red dotted line marks the end of excitation; everything later is feedback activity.

2 — Network energy

RMS energy of all eight delay lines through time over an 80 dB display range.

3 — Spatial map

A frequency-resolved map measured from the actual output channels. Blue indicates leftward energy, red rightward energy, grey the centre, and pale regions low energy.

4 — Growth rate

Plots the requested dB/s growth curve through time, with the critical line and shaded dissipative / self-oscillating regions.

5 — State space

Compares an early transient phase portrait with the final second, revealing how the coupled state evolves toward decay, sustained motion, or nonlinear attractor-like structure.

Summary strip

Reports prime delays, feedback matrix, growth rates and per-pass radii, drive, asymmetry, nonlinearity, damping, excitation, spatial mode, normalisation, level change, maximum internal state, exact block count, and synthesis time.

Technical behavior

Signal path

delayed line k → delay-dependent feedback radius → one-pole low-pass damping → DC blocker → 8 × 8 matrix coupling → bounded nonlinear feedback → write into line k 8 network states → Orthogonal / Distributed / Orbiting projection → Stereo / Quad / 8-channel output → mean removal → fades → normalisation

Requirements & installation

ComponentRequirement
PraatPraat 6.3+; the script uses colon-form command syntax.
PythonNot required.
External librariesNone.
Input SoundNot required; this is a standalone synthesizer.
Sample rate8000–192000 Hz.
Maximum duration120 seconds per render.

Limitations

Outputs

The script creates one new multichannel Sound named from the preset:

FDN_<PresetName>

Examples:

FDN_SelfOscillating
FDN_MetallicOrganism
FDN_SlowAttractor

The result contains 2, 4, or 8 channels according to Output layout. The Info window reports the actual prime delay lengths, growth regime, per-pass feedback radii, nonlinear settings, excitation, spatial mode, normalisation result, numerical safety state, and render statistics.

Applications

Critical resonance

Use case: create resonant textures that sit between obvious decay and autonomous oscillation.

Starting point: Critical Network or Frozen Resonance.

Autonomous nonlinear synthesis

Use case: generate sustained sound whose waveform and spectrum arise from coupled feedback rather than predefined oscillators.

Starting point: Self-Oscillating or Strong Nonlinear.

State-driven spatial composition

Use case: let the network's changing internal energy distribution generate spatial movement without a panning LFO.

Starting point: Metallic Organism with Distributed Network.

Slow dynamical transitions

Use case: compose a trajectory through stability regimes rather than holding one fixed feedback condition.

Starting point: Ignition or Collapse and Recover.

Orbiting nonlinear fields

Use case: combine internal state-driven movement with a slow global spatial swing.

Starting point: Slow Attractor, Breathing Metal, Unstable Choir, or Chaotic Edge.

Dense high-frequency structures

Use case: use sub-millisecond and very short delays as the basis for metallic, insect-like, or microstructural spectra.

Starting point: Glass Swarm, Digital Insects, or Microstructure.

Workflow: from reverberation logic to synthesis

Begin with Damped Resonator and listen to the familiar decay of a feedback network. Move to Critical Network and Sustained FDN, then cross into Self-Oscillating. Finally compare the experimental presets. The central compositional transition is:

excitation → coupled resonance → near-critical persistence → nonlinear self-oscillation → evolving spatial texture