Audio-Reactive No-Input Mixer — User Guide

Generative sound synthesis: uses any audio file as a "controller" to drive a simulated analog feedback circuit, creating evolving drones, textures, and chaotic audio-reactive compositions.

Author: Shai Cohen Version: 1.2 (Sidechain VCA) License: MIT License Category: Generative Synthesis & Audio-Reactive Processing
Contents:

What this does

This script implements audio-reactive generative synthesis — a sophisticated simulation of an analog no-input mixer feedback circuit controlled by any audio file. The process: (1) Controller Analysis: Extracts pitch and intensity features from the selected audio file. (2) Circuit Initialization: Creates a stereo feedback loop seeded with low-level noise. (3) Feature Mapping: Maps controller pitch to filter resonance center frequency, controller intensity to VCA (Voltage Controlled Amplifier) feedback gain. (4) Iterative Processing: Runs 40 iterations of filtering and feedback, with the controller audio dynamically modulating circuit parameters each iteration. (5) Spatial Processing: Applies one of four spatialization modes to the resulting sound. The result is a unique, evolving soundscape that "reacts" to the characteristics of the controller audio.

Key Features:

What is a no-input mixer? Traditional synthesis: oscillators, filters, envelopes. No-input mixer: Feedback-based sound generation using mixing console feedback loops. Advantages: (1) Organic evolution: Creates living, breathing sounds. (2) Chaotic complexity: Simple rules produce complex results. (3) Unpredictability: Each run produces unique results. (4) Analog character: Warm, unstable, non-digital sound. (5) Reactivity: Responds to control signals in musical ways. Use cases: Sound design (evolving textures), experimental music (drone/ambient), installation art (generative soundscapes), film scoring (atmospheric beds), teaching (nonlinear systems).

Technical Implementation: The script creates a virtual analog circuit with: (1) VCA (Voltage Controlled Amplifier): Controlled by normalized intensity envelope of input audio. (2) Resonant Bandpass Filter: Center frequency controlled by input pitch, with analog-style drift. (3) Feedback Path: Output fed back to input with damping. (4) Nonlinearities: arctan() function simulates analog saturation. (5) Spatial Processing: Four modes create different stereo imaging. Key insight: The controller audio doesn't appear in the output — only its extracted features (pitch and intensity) control the synthesis circuit. The actual sound is generated entirely by the feedback system.

Quick start

  1. In Praat, select exactly ONE Sound object (any audio file).
  2. This file becomes the controller — it drives the synthesis but won't be heard.
  3. Run script…audio_reactive_no_input_mixer.praat.
  4. Watch console for analysis: pitch detection and intensity extraction.
  5. Adjust parameters in the form (or accept defaults).
  6. Click OK — circuit initializes and runs 40 iterations.
  7. Final output named "Final_Output" appears in Objects window.
  8. Sound automatically plays when processing completes.
Quick tip: Start with musical audio as controller (vocals, instruments) for pitch-driven results. Use percussive sounds for rhythmic, chaotic results. The controller's pitch becomes filter frequency — high-pitched sounds create bright resonances, low-pitched create dark drones. The controller's loudness becomes feedback gain — loud sections drive circuit into chaos, quiet sections create stability. Try different controller lengths — shorter files (2-10s) create focused results, longer files (30s+) create evolving pieces. Default Iterations = 40 works well — higher values (60-80) create more evolution but take longer. The output duration matches the controller duration. Listen for how the output "reacts" to controller characteristics.
Important: CONTROLLER ≠ OUTPUT — The input audio is analyzed but not heard in output. Pitch detection may fail on noisy/percussive sounds — defaults to 100 Hz. Processing time scales with controller duration and iterations — 30s file × 40 iterations may take 1-2 minutes. Chaotic system — Small parameter changes can create dramatically different results. Feedback can explode — parameters automatically clip to prevent ear damage, but loud outputs possible. Stereo processing — Even mono controllers produce stereo output via spatial modes. Non-real-time — Processing occurs offline, then plays back. Random elements — Analog_Instability adds randomness, results vary slightly each run.

Feedback Circuit Architecture

The Core Feedback Equation

MAIN PROCESSING FORMULA (per sample, per channel): loop[t] = (2/π) × arctan( (loop[t-1] × damping_Factor) + (filtered[t] × VCA_Automation[t]) ) Where: • loop[t-1] = previous sample value in feedback loop • damping_Factor = 0.92 (default), prevents infinite gain • filtered[t] = bandpass filtered version of loop[t-1] • VCA_Automation[t] = control signal from input intensity (0.8-1.8 range) • arctan() = soft clipper, simulates analog saturation PHYSICAL INTERPRETATION: This simulates: Feedback × Damping + Filtered × VCA → Saturator The arctan() function creates soft clipping when signals get large Result: Complex interplay between damping and amplification

Filter Stage

FILTER PARAMETERS (per iteration): center_freq = input_pitch + frequency_Offset ± randomGauss(0, drift) bandwidth = bandwidth_Hz ± randomGauss(0, width_drift) Where: • input_pitch = mean F0 of controller audio (Hz) • frequency_Offset = user adjustment (Hz) • drift = center_freq × analog_Instability • bandwidth_Hz = user setting (default 150 Hz) • width_drift = bandwidth_Hz × analog_Instability FILTER IMPLEMENTATION: Filter (pass Hann band): center_freq - bandwidth/2, center_freq + bandwidth/2, 20 • Hann window = smooth frequency response • 20 = steepness (higher = sharper filter) • Creates resonant peak at center_freq • Bandwidth controls how broad/narrow the resonance is EFFECT: • Controller pitch → filter center frequency • Different pitches create different resonant characters • Analog_Instability adds random drift (like unstable analog components)

VCA (Voltage Controlled Amplifier)

VCA CONTROL SIGNAL GENERATION: Step 1: Extract intensity contour from controller To Intensity: 100, 0, "yes" → Convert to Sound → Resample to match Step 2: Normalize and scale Scale peak: 1.0 # Normalize to 0-1 range Formula: "base_Feedback + (self × input_Sensitivity)" Step 3: Safety clipping Formula: "if self > 1.8 then 1.8 else self fi" Result: VCA_Automation[t] = 0.8 to 1.8 time-varying signal INTERPRETATION: • base_Feedback = 0.8 (minimum feedback when controller is silent) • input_Sensitivity = 0.5 (how much controller loudness adds to feedback) • Controller loud → higher VCA gain → more feedback → more chaotic • Controller quiet → lower VCA gain → more stable, damped PHYSICAL ANALOGY: Imagine turning up a knob in response to controller loudness Loud controller sections "excite" the circuit more

Iteration Process

FOR i = 1 to iterations (default 40): 1. Copy current loop state → "FeedbackPath" 2. Calculate drifting filter parameters center = resonance_Center ± randomGauss(0, drift) width = bandwidth ± randomGauss(0, width_drift) 3. Apply bandpass filter to FeedbackPath → "FilteredSignal" Filter (pass Hann band): center-width/2, center+width/2, 20 4. Mix filtered signal back into main loop Main formula: loop = (2/π)×arctan( (loop×damping) + (filtered×VCA) ) 5. Cleanup temporary objects Remove FeedbackPath and FilteredSignal EVOLUTION OVER ITERATIONS: Iteration 1-10: Initial pattern formation Iteration 11-25: Complexification, emergence Iteration 26-40: Refinement, stabilization EFFECT OF ITERATIONS: • Fewer (10-20): Simpler, more predictable results • Default (40): Good balance of complexity and stability • More (60-80): Highly evolved, potentially chaotic

Audio Control System

🎛️ Dual-Parameter Control Mapping

Pitch → Frequency Control: Mean F0 of controller sets filter resonance center

Intensity → Gain Control: RMS envelope of controller sets VCA feedback amount

Time-Varying: Both controls update throughout the controller duration

Nonlinear Response: Control signals affect circuit in complex, nonlinear ways

Pitch Extraction and Mapping

Controller CharacteristicExtracted FeatureCircuit EffectResulting Sound
High-pitched (200-800 Hz)High mean pitchHigh filter centerBright, whistling, sine-like
Low-pitched (80-200 Hz)Low mean pitchLow filter centerDark, rumbling, sub-bass
Pitch-varying (glides)Varying meanFilter sweepsMoving resonances, swoops
Unpitched/noisyDefault 100 HzMid filterNoisy, textured, chaotic
Harmonic richClear pitchStable filterPure, focused resonances

Intensity Extraction and Mapping

INTENSITY PROCESSING PIPELINE: 1. Extract intensity contour: To Intensity: 100, 0, "yes" • Pitch floor: 100 Hz (ignores frequencies below) • Time step: 0 (auto) • Subtract mean: yes (removes DC) 2. Convert to manipulable signal: Down to Matrix → To Sound → "Control_Signal_Raw" 3. Resample to match controller sample rate: Resample: sample_Rate, 50 • 50 = precision (higher = more accurate, slower) 4. Normalize and apply sensitivity: Scale peak: 1.0 Formula: "base_Feedback + (self × input_Sensitivity)" 5. Safety clip: Formula: "if self > 1.8 then 1.8 else self fi" RESULTING VCA_Automation SIGNAL: Range: 0.8 (silent controller) to 1.8 (loud controller) Shape: Follows controller's loudness envelope Timing: Precise sample-by-sample alignment

Controller Selection Guide

For melodic, tonal results:
  • Vocals (sung, spoken)
  • String instruments (violin, cello)
  • Wind instruments (flute, saxophone)
  • Synth pads, drones
  • Effect: Clear pitch → stable filter frequency → harmonic drones
For rhythmic, chaotic results:
  • Drum breaks, percussion
  • Field recordings (city, nature)
  • Noise textures
  • Glitch sounds
  • Effect: No clear pitch → default 100 Hz → mid-range chaotic textures
For evolving, dynamic results:
  • Music with dynamics (classical, post-rock)
  • Speech with emotion
  • Environmental sounds with variation
  • Effect: Varying intensity → changing feedback gain → evolving complexity

Advanced Control Techniques

CREATIVE CONTROL STRATEGIES: 1. MULTI-CONTROLLER CHAINING: • Process Controller A → Output A • Use Output A as Controller for second pass → Output B • Creates deeply processed, evolved results 2. CONTROLLER EDITING: • Edit controller in audio editor before processing • Create custom envelopes (fade in/out, spikes, etc.) • These shapes will control VCA gain 3. PITCH SHIFTING PRE-PROCESSING: • Shift controller pitch up/down before analysis • Changes resulting filter frequency • Example: +1 octave → filter frequency doubled 4. INTENSITY COMPRESSION/EXPANSION: • Process controller loudness envelope • Compress for more consistent VCA control • Expand for more dramatic dynamic effects

Parameters and Their Effects

Circuit Behavior Parameters

ParameterDefaultRangeEffectMusical Result
Base_Feedback0.80.1-2.0Minimum feedback gain when controller silentHigher = more active/chaotic base state
Input_Sensitivity0.50.0-2.0How much controller loudness adds to feedbackHigher = controller affects circuit more dramatically
Damping_Factor0.920.5-1.0How much signal persists in feedback loopLower = faster decay, more stability; Higher = more buildup
Iterations4010-100Number of feedback processing cyclesMore = more evolved/complex results

Resonance Parameters

ParameterDefaultRangeEffectMusical Result
Frequency_Offset0.0 Hz±500 HzAdjusts filter center relative to controller pitchPositive = brighter, negative = darker
Bandwidth150 Hz10-1000 HzWidth of resonant bandpass filterNarrow = pure tones, wide = noisy/textured
Analog_Instability0.050.0-0.3Random drift in filter parametersHigher = more unstable, "living" sound

Parameter Interactions and Recipes

RECIPE 1: STABLE DRONE Base_Feedback: 0.6 Input_Sensitivity: 0.3 Damping_Factor: 0.95 Bandwidth: 80 Hz Analog_Instability: 0.02 Result: Stable, harmonic drone with subtle evolution RECIPE 2: CHAOTIC TEXTURE Base_Feedback: 1.2 Input_Sensitivity: 0.8 Damping_Factor: 0.88 Bandwidth: 300 Hz Analog_Instability: 0.15 Result: Unpredictable, noisy, evolving texture RECIPE 3: RHYTHMIC PATTERNS Base_Feedback: 0.7 Input_Sensitivity: 1.2 Damping_Factor: 0.85 Bandwidth: 200 Hz Analog_Instability: 0.08 Use percussive controller Result: Rhythmic, pulsating patterns RECIPE 4: PURE TONES Base_Feedback: 0.5 Input_Sensitivity: 0.2 Damping_Factor: 0.98 Bandwidth: 30 Hz Analog_Instability: 0.01 Use tonal controller (sine, voice) Result: Clean, stable sine-like tones

Parameter Exploration Strategies

Systematic Exploration:
  1. Fix all parameters except one
  2. Vary that parameter across its range
  3. Note how sound changes
  4. Repeat for each parameter
  5. Build intuition for each parameter's effect
Controller-Parameter Pairing:
  • For tonal controllers: Use narrower bandwidth, lower instability
  • For noisy controllers: Use wider bandwidth, higher instability
  • For dynamic controllers: Use higher input_sensitivity
  • For static controllers: Use lower base_feedback, higher damping

Spatial Processing Modes

🎧 4 Spatialization Algorithms

Mono: Collapse to single channel (focused, centered)

Stereo Wide: Frequency-based separation (wide, immersive)

Rotating: Amplitude panning rotation (moving, swirling)

Binaural: Simulated head acoustics (3D, spatial)

Mode 1: Mono

PROCESS: Convert to mono IMPLEMENTATION: Praat's "Convert to mono" (average of channels) CHARACTER: • Centered, focused sound • No stereo width • Good for: focused listening, mono compatibility • Loses: stereo complexity, spatial interest USE WHEN: • Planning further mono processing • Need compatibility with mono systems • Want focused, centered result

Mode 2: Stereo Wide

PROCESS: Frequency-based channel separation Left channel: Filter (pass Hann band): 0, 4000, 100 • Passes 0-4000 Hz • Steepness 100 • Result: Low-mid frequencies in left Right channel: Filter (pass Hann band): 200, 22050, 100 • Passes 200-22050 Hz (full range with high-pass) • Steepness 100 • Result: Full range but emphasized highs in right CHARACTER: • Wide, immersive stereo • Frequency separation creates width • Left = warmer, Right = brighter • Good for: Headphone listening, immersive experiences USE WHEN: • Want maximum stereo width • Listening on good stereo system • Creating immersive soundscapes

Mode 3: Rotating

PROCESS: Amplitude panning with rotation Left channel: Multiply by (0.6 + cos(2π × rotation_rate × time) × 0.4) Right channel: Multiply by (0.6 + sin(2π × rotation_rate × time) × 0.4) Where: • rotation_rate = 0.2 Hz (completes cycle every 5 seconds) • 0.6 = center level (prevents complete silencing) • 0.4 = modulation depth • cos/sin = 90° phase difference creates rotation CHARACTER: • Slowly rotating sound field • Creates sense of movement • Not true 3D, but effective panning • Good for: Creating motion, avoiding static stereo image USE WHEN: • Want evolving spatial character • Creating hypnotic, moving textures • Avoiding static stereo placement

Mode 4: Binaural

PROCESS: Simplified binaural simulation Left channel: Filter (pass Hann band): 50, 3000, 80 • Simulates head shadow for low-mids • 50-3000 Hz passband Right channel: 1. Apply 30-sample delay: "if col > 30 then self[col-30] else 0 fi" 2. Filter (pass Hann band): 200, 6000, 80 3. Simulates ITD (Interaural Time Difference) and HRTF CHARACTER: • Simulated 3D space • Sounds "around" the listener • Best with headphones • Simplified but effective USE WHEN: • Headphone listening • Want 3D spatial effect • Creating immersive, environmental sounds

Spatial Mode Selection Guide

Listening ContextRecommended ModeWhyConsiderations
HeadphonesBinaural or Stereo WideMaximum spatial effectBinaural requires headphones for proper effect
Stereo speakersStereo Wide or RotatingGood width without localization issuesAvoid Binaural on speakers (can sound odd)
Mono systemMonoCompatibilityStereo modes will be summed to mono anyway
Installation artRotatingCreates sense of movementWorks well in physical spaces
Film/TV soundStereo WideStandard broadcast compatibilityAvoid extreme spatial effects

Creative Applications

Sound Design and Film Scoring

🎬 Atmospheric Sound Design

Goal: Create evolving backgrounds for scenes

Workflow:

  1. Choose controller matching scene emotion (tense music, environmental sounds)
  2. Process with appropriate parameters
  3. Layer multiple versions at different pitches
  4. Add to film mix as atmospheric bed
  5. Automate volume to follow scene dynamics

Example: City traffic noise → processing → futuristic city hum

Generative Music Composition

🎵 Algorithmic Music Generation

Goal: Create endless, evolving musical pieces

Workflow:

  1. Create or choose melodic controller (piano phrase, vocal melody)
  2. Process with musical parameters (narrow bandwidth, low instability)
  3. Record long output (5-10 minutes)
  4. Use as generative music system output
  5. Optionally process multiple controllers for variation

Example: Bach cello suite → processing → ambient drone piece

Interactive Installations

🏛️ Real-time Reactive Sound

Goal: Create sound that reacts to environment

Workflow:

  1. Capture live audio from environment (visitor voices, room tone)
  2. Process in near-real-time (Praat batch processing)
  3. Play back processed sound in space
  4. Creates feedback between environment and sound
  5. System evolves based on visitor interaction

Example: Gallery visitors' conversations → processing → evolving soundscape

Advanced Creative Techniques

Multi-Layer Processing:
  1. Process same controller with different parameter sets
  2. Layer results (panned differently, different volumes)
  3. Creates rich, complex textures
  4. Example: Layer 1 (bright), Layer 2 (dark), Layer 3 (noisy)
Controller Sequencing:
  • Create sequence of different controllers
  • Process each separately
  • Arrange results in timeline
  • Creates piece with evolving character
  • Example: Voice → Drums → Nature → Silence → repeat
Parameter Automation:
  • Create text file with parameter changes over time
  • Modify script to read and apply automation
  • Creates evolving parameter landscapes
  • Example: Damping_Factor slowly decreases over 5 minutes

Troubleshooting Common Issues

Problem: Output is silent or very quiet
Causes: Base_Feedback too low, Damping_Factor too high, controller very quiet
Solutions: Increase Base_Feedback (0.8-1.2), decrease Damping_Factor (0.85-0.9), normalize controller
Problem: Output clips/distorts unpleasantly
Causes: Base_Feedback too high, Input_Sensitivity too high, no safety clipping
Solutions: Decrease Base_Feedback (0.4-0.7), decrease Input_Sensitivity (0.2-0.4), script includes clipping at 1.8
Problem: Sound is static/boring
Causes: Iterations too low, Analog_Instability too low, controller too static
Solutions: Increase Iterations (50-80), increase Analog_Instability (0.1-0.2), use more dynamic controller
Problem: Processing takes too long
Causes: Long controller, high iterations, complex spatial mode
Solutions: Use shorter controller (10-30s), reduce iterations (20-30), use simpler spatial mode (Mono)

Performance Optimization

FactorFasterSlowerSweet Spot
Controller duration5-15 seconds60+ seconds20-40 seconds
Iterations20-3080-10040-50
Spatial modeMonoBinauralStereo Wide
Sample rate22050 Hz96000 Hz44100 Hz
Analog_Instability0.00.2+0.05-0.1