Chaotic Function Generator — User Guide
Mathematical chaos synthesis: generates complex, non-repeating waveforms from deterministic yet unpredictable functions for experimental sound design and algorithmic composition.
What this does
This script implements a Chaotic Function Generator — a sophisticated mathematical tool that synthesizes audio from deterministic yet unpredictable mathematical functions. By exploiting the sensitive dependence on initial conditions characteristic of chaotic systems, the generator creates complex, non-repeating waveforms that are mathematically precise yet perceptually rich and evolving. The system includes 20 pre-defined chaotic functions plus custom formula support.
Key Features:
- 20 Chaotic Functions — Pre-defined mathematical systems with distinct characters
- Custom Formula Support — User-defined mathematical expressions
- Real-time Visualization — Graphical display of generated waveforms
- Automatic Peak Normalization — Ensures optimal playback levels
- Division-by-Zero Protection — Mathematical stability for all functions
- Deterministic Chaos — Reproducible yet complex results
- Educational Tool — Hear mathematical concepts as sound
Technical Implementation: (1) Function Selection: User chooses from 20 pre-defined chaotic systems or enters custom formula. (2) Mathematical Safety: Automatic epsilon values prevent division by zero at domain boundaries. (3) Waveform Generation: Praat's formula interpreter evaluates the mathematical expression across the time domain. (4) Visualization: The generated waveform is displayed graphically for immediate feedback. (5) Audio Normalization: Peak amplitude scaled to 0.99 for optimal playback. (6) Playback: Resulting sound played through audio output. The core innovation is the translation of abstract mathematical chaos into audible, musically useful sounds while maintaining mathematical integrity and computational stability.
Quick start
- In Praat, ensure no objects are selected (generates new sound).
- Run script… →
chaotic_function_generator.praat. - Choose function from the 20 pre-defined options or select "Custom…".
- Set duration_seconds (default 1.0) for output length.
- Set sampling_rate_Hz (default 44100) for audio quality.
- For custom functions, enter custom_formula using Praat syntax.
- Click OK — sound generated, visualized, and played automatically.
- Experiment with different functions to discover their unique sonic characters.
Chaos Theory Fundamentals
What Makes a System Chaotic?
Key Properties of Chaos
Mathematical definition:
Why 1/x Creates Chaos
The singularity principle:
- Rapid oscillation: As x→0, 1/x→∞ causing infinite frequency
- Non-periodicity: No repeating pattern due to continuous change
- Scale invariance: Similar patterns at different time scales
- Mathematical instability: Extreme sensitivity near x=0
Domain and Stability
Time Domain Mapping
Normalized time variable:
Mathematical Safety System
Automatic singularity avoidance:
Chaos vs Randomness
Key Differences
Mathematical distinction:
🎲 Random Noise
Characteristics:
- Truly unpredictable
- No underlying pattern
- Maximum entropy
- No memory of previous states
Audio example: White noise
🌀 Chaotic System
Characteristics:
- Deterministic but unpredictable
- Complex underlying structure
- Structured complexity
- Complete memory (dependent on initial conditions)
Audio example: sin(1/x) synthesis
Classical Chaotic Systems
Logistic Map
Mathematical definition:
Tent Map
Piecewise linear chaos:
📈 Visualizing Chaos
sin(1/x) near x=0:
As x approaches 0, 1/x approaches infinity
sin(1/x) oscillates infinitely rapidly
Creates dense, non-repeating waveform
Logistic Map bifurcation:
At r=3.9, system never settles to fixed point
Continually visits different values in [0,1]
Creates unpredictable yet deterministic sequence
Function Library
Singularity-Based Functions
| Function | Formula | Sonic Character |
|---|---|---|
| sin(1/x) | sin(1/(x+ε)) | Classic chaotic oscillation, infinite frequency at start |
| sin((1/x)*(1/(1-x))) | sin((1/(x+ε))*(1/((1-x)+ε))) | Dual singularity, complex both ends |
| sin(1/(x*(1-x))) | sin(1/((x+ε)*((1-x)+ε))) | Product singularities, rich texture |
| atan(1/x)*sin(10/x) | arctan(1/(x+ε))*sin(10/(x+ε)) | Bounded chaos, smoother evolution |
Multi-component Functions
| Function | Formula | Sonic Character |
|---|---|---|
| Multi-sine/cosine | 2*sin(3/x)+3*cos(5/x)+4*sin(6/x)+cos(3/x) | Rich harmonic chaos, complex beating |
| sin(1/x) + 2*sin(1/(1-x)) | sin(1/(x+ε)) + 2*sin(1/((1-x)+ε)) | Mirrored chaos, symmetric structure |
| sin(3/x)*sin(5/(1-x)) | sin(3/(x+ε))*sin(5/((1-x)+ε)) | Modulated chaos, product complexity |
| tan(1/x)*cos(1/(1-x)) | tan(1/(x+ε))*cos(1/((1-x)+ε)) | Unbounded growth with modulation |
Power Law Functions
| Function | Formula | Sonic Character |
|---|---|---|
| sin(1/x²)*cos(1/(1-x)²) | sin(1/(x+ε)²)*cos(1/((1-x)+ε)²) | Rapid divergence, extreme chaos |
| sin(1/x)*cos(1/x²) | sin(1/(x+ε))*cos(1/(x+ε)²) | Multi-scale chaos, nested patterns |
| (sin(1/x)+sin(1/x³))/2 | (sin(1/(x+ε))+sin(1/(x+ε)³))/2 | Averaged chaos, smoothed result |
| cos(1/x³)+sin(1/(1-x)³) | cos(1/(x+ε)³)+sin(1/((1-x)+ε)³) | Cubic singularity, very rapid oscillation |
Exponential and Logarithmic
| Function | Formula | Sonic Character |
|---|---|---|
| exp(-1/x²)*sin(50*x) | exp(-1/(x+ε)²)*sin(50*x) | Gaussian-weighted oscillation |
| sin(ln(x+0.01))*cos(ln(1.01-x)) | sin(ln(x+0.01))*cos(ln(1.01-x)) | Logarithmic stretching, slow evolution |
| exp(sin(1/x))*cos(1/(1-x)) | exp(sin(1/(x+ε)))*cos(1/((1-x)+ε)) | Exponential modulation, growing complexity |
| sin(1/x)*sin(1/x²)*sin(1/x³) | sin(1/(x+ε))*sin(1/(x+ε)²)*sin(1/(x+ε)³) | Triple product, maximal complexity |
Classical Chaotic Maps
| Function | Formula | Sonic Character |
|---|---|---|
| Logistic Map | 3.9*x*(1-x) | Mathematical chaos, unpredictable yet deterministic |
| Tent Map | min(2*x, 2*(1-x)) | Piecewise linear chaos, sharp transitions |
Specialized Functions
| Function | Formula | Sonic Character |
|---|---|---|
| Weighted oscillation | (1/x)*sin(10*x)+(1/(1-x))*cos(10*(1-x)) | Amplitude-modulated chaos |
| Square root chaos | sin(1/√(x+0.001))*cos(1/√(1.001-x)) | Slower divergence, smoother chaos |
Function Character Guide
🎵 Musical Chaos
For rich, evolving tones:
- Multi-sine/cosine: Complex harmonic beating
- exp(-1/x²)*sin(50*x): Musical oscillation with chaos
- sin(1/x) + 2*sin(1/(1-x)): Balanced chaotic structure
🌊 Textural Chaos
For complex textures:
- sin(1/(x*(1-x))): Rich, dense patterns
- sin(1/x)*sin(1/x²)*sin(1/x³): Maximum complexity
- Logistic Map: Mathematical texture
⚡ Extreme Chaos
For rapid, intense patterns:
- sin(1/x²)*cos(1/(1-x)²): Very rapid oscillation
- cos(1/x³)+sin(1/(1-x)³): Cubic singularity intensity
- Tent Map: Sharp, discontinuous chaos
Parameters
Core Generation Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| function | optionmenu | sin(1/x) | Mathematical function for synthesis (20 options + custom) |
| duration_seconds | real | 1.0 | Length of generated sound in seconds |
| sampling_rate_Hz | integer | 44100 | Audio sampling rate (samples per second) |
| custom_formula | text | sin(1/x) | User-defined mathematical expression (Praat syntax) |
Automatic Processing Parameters
| Parameter | Behavior | Purpose |
|---|---|---|
| Epsilon protection | Automatic | Prevents division by zero (ε=1e-4) |
| Peak normalization | Automatic | Scales output to 0.99 peak amplitude |
| Waveform visualization | Automatic | Draws generated waveform for inspection |
| Auto-playback | Automatic | Plays sound immediately after generation |
Parameter Guidelines
⏱️ Duration Settings
Short (0.1-0.5s): Quick experimentation, impulse-like sounds
Medium (0.5-2.0s): General use, manageable file sizes
Long (2.0-10.0s): Extended textures, may slow generation
Very Long (>10.0s): Risk of Praat slowdown, complex functions
🎚️ Sampling Rate Settings
CD Quality (44100 Hz): Standard audio, good performance
High Quality (48000-96000 Hz): Extended frequency range
Low Quality (22050 Hz): Faster generation, lo-fi character
Very High (>96000 Hz): May slow complex functions
Applications
Sound Design and Synthesis
Use case: Creating unique, evolving synthetic textures
Technique: Generate chaotic sounds, then process with filters/effects
Example: Use Logistic Map as source for granular synthesis
Algorithmic Composition
Use case: Generating musical material with mathematical structure
Technique: Use chaotic functions to create pitch/rhythm sequences
Example: Extract features from chaos for melody generation
Scientific and Educational Use
Use case: Demonstrating mathematical concepts through sound
Technique: Compare different chaotic systems auditorily
Example: Hear the difference between periodic and chaotic behavior
Experimental Music
Use case: Creating non-repeating, organic musical structures
Technique: Layer multiple chaotic generators
Example: Create ever-changing drone textures
Practical Workflow Examples
🎹 Chaotic Melodic Source
Goal: Create evolving melodic patterns
Settings:
- Function: exp(-1/x²)*sin(50*x)
- Duration: 5.0 seconds
- Sampling Rate: 44100 Hz
Process: Generate, then apply pitch shifting and time stretching
Result: Musical chaos with pitched characteristics
🌫️ Textural Bed Creation
Goal: Generate complex background textures
Settings:
- Function: sin(1/(x*(1-x)))
- Duration: 10.0 seconds
- Sampling Rate: 48000 Hz
Process: Generate multiple layers, apply reverb and filtering
Result: Rich, non-repeating textural background
🔬 Mathematical Demonstration
Goal: Compare different chaotic systems
Settings:
- Functions: sin(1/x), Logistic Map, Tent Map
- Duration: 2.0 seconds each
- Sampling Rate: 44100 Hz
Process: Generate and compare waveforms and sounds
Result: Audible differences between chaotic systems
Advanced Techniques
- Use x as time variable: Ranges from 0 to 1 over duration
- Praat math functions: sin, cos, tan, exp, ln, sqrt, arctan, etc.
- Conditional logic: if...then...else...endif statements
- Multiple operations: Combine functions for complexity
- Avoid extreme values: Very large outputs may cause clipping
- Test with visualization: Use drawing to verify function behavior
- Filtering: Shape frequency content of chaotic sounds
- Time-stretching: Extend chaotic evolution
- Layering: Combine multiple chaotic generators
- Modulation: Use chaos to modulate other sounds
- Granular processing: Break chaos into micro-sounds
- Spatialization: Place chaotic elements in stereo field
Troubleshooting Common Issues
Cause: Very long duration with complex function
Solution: Use shorter durations (1-5 seconds), simpler functions
Cause: Function produces small output values
Solution: Use Amplify... function in Praat to increase gain
Cause: Invalid Praat syntax or mathematical errors
Solution: Check formula syntax, avoid division by zero, test simple first
Cause: Extreme chaotic function or inappropriate parameters
Solution: Try different functions, adjust duration, use visualization
Cause: Audio system issues or extreme function values
Solution: Check Praat audio settings, try basic function first