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
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:
- Audio-Reactive Control — Any audio file controls the synthesis parameters
- Analog Circuit Simulation — Models feedback, resonance, and instability
- Dual Control Paths — Pitch controls filter frequency, intensity controls feedback gain
- 4 Spatial Modes — Mono, Stereo Wide, Rotating, Binaural
- Chaotic Evolution — 40 iterations create complex emergent behavior
- Dynamic Drift — Simulates analog component instability and drift
- Self-Organizing — System evolves differently with each controller
- Real-Time Parameter Mapping — Continuous control signal extraction
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
- In Praat, select exactly ONE Sound object (any audio file).
- This file becomes the controller — it drives the synthesis but won't be heard.
- Run script… →
audio_reactive_no_input_mixer.praat.
- Watch console for analysis: pitch detection and intensity extraction.
- Adjust parameters in the form (or accept defaults).
- Click OK — circuit initializes and runs 40 iterations.
- Final output named "Final_Output" appears in Objects window.
- 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
🔄 Virtual Analog Feedback Loop
Core Concept: Simulates a mixing console with output patched back to input
Initial State: Stereo loop seeded with Gaussian noise (μ=0, σ=0.0001)
Processing Chain: Noise → Filter → VCA → Feedback → Repeat
Evolution: 40 iterations allow complex patterns to emerge
Stabilization: Damping_Factor prevents infinite gain buildup
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 Characteristic | Extracted Feature | Circuit Effect | Resulting Sound |
| High-pitched (200-800 Hz) | High mean pitch | High filter center | Bright, whistling, sine-like |
| Low-pitched (80-200 Hz) | Low mean pitch | Low filter center | Dark, rumbling, sub-bass |
| Pitch-varying (glides) | Varying mean | Filter sweeps | Moving resonances, swoops |
| Unpitched/noisy | Default 100 Hz | Mid filter | Noisy, textured, chaotic |
| Harmonic rich | Clear pitch | Stable filter | Pure, 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
| Parameter | Default | Range | Effect | Musical Result |
| Base_Feedback | 0.8 | 0.1-2.0 | Minimum feedback gain when controller silent | Higher = more active/chaotic base state |
| Input_Sensitivity | 0.5 | 0.0-2.0 | How much controller loudness adds to feedback | Higher = controller affects circuit more dramatically |
| Damping_Factor | 0.92 | 0.5-1.0 | How much signal persists in feedback loop | Lower = faster decay, more stability; Higher = more buildup |
| Iterations | 40 | 10-100 | Number of feedback processing cycles | More = more evolved/complex results |
Resonance Parameters
| Parameter | Default | Range | Effect | Musical Result |
| Frequency_Offset | 0.0 Hz | ±500 Hz | Adjusts filter center relative to controller pitch | Positive = brighter, negative = darker |
| Bandwidth | 150 Hz | 10-1000 Hz | Width of resonant bandpass filter | Narrow = pure tones, wide = noisy/textured |
| Analog_Instability | 0.05 | 0.0-0.3 | Random drift in filter parameters | Higher = 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:
- Fix all parameters except one
- Vary that parameter across its range
- Note how sound changes
- Repeat for each parameter
- 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 Context | Recommended Mode | Why | Considerations |
| Headphones | Binaural or Stereo Wide | Maximum spatial effect | Binaural requires headphones for proper effect |
| Stereo speakers | Stereo Wide or Rotating | Good width without localization issues | Avoid Binaural on speakers (can sound odd) |
| Mono system | Mono | Compatibility | Stereo modes will be summed to mono anyway |
| Installation art | Rotating | Creates sense of movement | Works well in physical spaces |
| Film/TV sound | Stereo Wide | Standard broadcast compatibility | Avoid extreme spatial effects |
Creative Applications
Sound Design and Film Scoring
🎬 Atmospheric Sound Design
Goal: Create evolving backgrounds for scenes
Workflow:
- Choose controller matching scene emotion (tense music, environmental sounds)
- Process with appropriate parameters
- Layer multiple versions at different pitches
- Add to film mix as atmospheric bed
- 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:
- Create or choose melodic controller (piano phrase, vocal melody)
- Process with musical parameters (narrow bandwidth, low instability)
- Record long output (5-10 minutes)
- Use as generative music system output
- 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:
- Capture live audio from environment (visitor voices, room tone)
- Process in near-real-time (Praat batch processing)
- Play back processed sound in space
- Creates feedback between environment and sound
- System evolves based on visitor interaction
Example: Gallery visitors' conversations → processing → evolving soundscape
Advanced Creative Techniques
Multi-Layer Processing:
- Process same controller with different parameter sets
- Layer results (panned differently, different volumes)
- Creates rich, complex textures
- 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
| Factor | Faster | Slower | Sweet Spot |
| Controller duration | 5-15 seconds | 60+ seconds | 20-40 seconds |
| Iterations | 20-30 | 80-100 | 40-50 |
| Spatial mode | Mono | Binaural | Stereo Wide |
| Sample rate | 22050 Hz | 96000 Hz | 44100 Hz |
| Analog_Instability | 0.0 | 0.2+ | 0.05-0.1 |