Total Serialism Machine — User Guide
Algorithmic audio segmentation and reordering inspired by post-Webern total serialism: creates pointillistic textures through systematic control of pitch, duration, amplitude, and spatialization.
What this does
This script implements total serialist audio processing — deconstructing a source sound into a series of events whose parameters (timing, duration, pitch, amplitude, panning) are controlled by mathematical series and transformations. Inspired by the post-Webern serialist composers (Boulez, Stockhausen, Babbitt), this machine applies rigorous organizational principles to create complex, pointillistic textures from any audio source. Events are extracted, transformed, and reordered according to serial procedures, resulting in precisely controlled yet perceptually rich sonic structures.
Key Features:
- 6 Compositional Presets — From Webern-style pointillism to statistical fields
- Serial Transformations — Inversion, retrograde, rotation operations
- Multi-Parameter Control — Independent series for timing, duration, pitch, gain, pan
- Event Sorting & Ordering — Systematic temporal arrangement
- Granular Processing — Micro-event manipulation capabilities
- Spatial Serialism — Panning controlled by series values
Technical Implementation: (1) Series generation: Create numerical series (arithmetic, permutation, or 12-tone) of user-defined length. (2) Transformations: Apply inversion (mirroring), retrograde (reversal), rotation (cyclic shift). (3) Normalization: Scale series to 0–1 range for parameter mapping. (4) Event generation: For each event (1 to num_events): Map series values to parameters (timing, duration, source position, pitch, gain, pan), Extract segment from source, Apply pitch shift via resampling, Apply gain, Apply stereo panning, Apply fade envelope. (5) Temporal sorting: Sort events by their assigned timing values. (6) Concatenation: Assemble events with gaps into final output. The result is a systematic yet complex audio texture where all parameters derive from serial procedures.
Quick start
- In Praat, select exactly one Sound object (mono or stereo).
- Run script… →
total_serialism_machine.praat. - Choose Preset: Start with "Pointillism (Webern-style)" for classic sound.
- Set series_length (typically 12 for dodecaphonic, but can be any number).
- Choose series_type: Arithmetic (1..N), Permutation (custom), or 12-tone row.
- For Permutation, enter comma-separated values in series_values.
- Enable use_inversion and/or use_retrograde for transformations.
- Set num_events (24-80 depending on density desired).
- Adjust min_event_ms and max_event_ms for event durations.
- Set gap_between_events_ms for temporal spacing.
- Configure pitch range in cents (±200 typical).
- Click Apply to process while keeping form open, or OK to process and close.
Serialism Theory
Core Serialist Principles
🎼 Fundamental Concepts
Series as Organizational Matrix: Numerical sequences control all parameters
Parameter Independence: Timing, pitch, duration, amplitude each get own series
Systematic Transformation: Mathematical operations generate variety
Objective Structure: Compositional decisions based on rules, not intuition
Perceptual Complexity: Simple rules create rich, intricate textures
Series Types and Construction
Three fundamental series types:
Serial Transformations
🔄 Mathematical Operations
Inversion (Mirroring): Values reflected around midpoint
Retrograde (Reversal): Series played backward
Rotation (Cyclic Shift): Series shifted circularly
Combinations: Retrograde-inversion, rotated-retrograde, etc.
Preservation of Intervals: Relationships maintained under transformation
Transformation Algorithms
Mathematical implementations:
Multi-Parameter Mapping
Distributing Series Across Dimensions
Each parameter uses different positions in the series:
Temporal Sorting Algorithm
Creating Rhythmic Structures from Series
Event ordering based on series values:
Complete Processing Pipeline
Presets & Styles
Preset 1: Pointillism (Webern-style)
🎵 Classic Serialist Texture
Character: Sparse, isolated events, wide pitch range, noticeable silences
Inspiration: Anton Webern's late works, Op. 27-31
Parameters: num_events=24, min_event_ms=80, max_event_ms=250, gap_ms=150, pitch_range=±400¢
Typical use: Academic serialism, pedagogical examples, abstract textures
Preset 2: Moment Form (Discrete Blocks)
🧱 Segmented Structure
Character: Distinct blocks, moderate density, clear separation
Inspiration: Stockhausen's "Klavierstücke", moment form composition
Parameters: num_events=20, min_event_ms=300, max_event_ms=800, gap_ms=200, pitch_range=±300¢
Typical use: Structural composition, segmented narratives, formal clarity
Preset 3: Granular Texture (Micro-events)
🌫️ Dense Micro-Soundscape
Character: Many short events, small gaps, overlapping textures
Inspiration: Granular synthesis, microsound aesthetics
Parameters: num_events=60, min_event_ms=50, max_event_ms=150, gap_ms=20, pitch_range=±200¢
Typical use: Textural beds, ambient backgrounds, sound design
Preset 4: Transformational (Extreme Ranges)
⚡ Radical Processing
Character: Wide parameter ranges, transformations enabled, dramatic effects
Inspiration: Experimental studio techniques, tape manipulation
Parameters: num_events=40, min_event_ms=100, max_event_ms=700, gap_ms=80, pitch_range=±600¢, inversion=yes, retrograde=yes
Typical use: Experimental music, sound art, extreme processing
Preset 5: Statistical Field (Dense Cloud)
☁️ Mass Texture
Character: Very dense, many overlapping events, statistical distribution
Inspiration: Xenakis' stochastic music, mass phenomena
Parameters: num_events=80, min_event_ms=150, max_event_ms=500, gap_ms=10, pitch_range=±300¢
Typical use: Statistical textures, dense clouds, mass effects
Preset 6: Custom (Manual Settings)
🔧 Full Parameter Control
Character: User-defined across all dimensions
Inspiration: Specific compositional needs, experimentation
Parameters: All values manually adjustable
Typical use: Precise control, specific textural goals, research
Parameters
Preset Selection
| Parameter | Type | Default | Description |
|---|---|---|---|
| preset | option | Custom | Behavioral preset (1-6) |
Series Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
| series_length | integer | 12 | Length of control series (typically 12 for dodecaphonic) |
| series_type | option | 12-tone row | Arithmetic, Permutation, or 12-tone row |
| series_values | sentence | "0,10,7,11,3,8,1,9,2,5,6,4" | Comma-separated values for Permutation type |
Serial Transformations
| Parameter | Type | Default | Description |
|---|---|---|---|
| use_inversion | boolean | 0 (no) | Apply inversion transformation to series |
| use_retrograde | boolean | 0 (no) | Apply retrograde transformation to series |
| rotation | integer | 0 | Rotate series by this many positions |
Event Structure
| Parameter | Type | Default | Description |
|---|---|---|---|
| num_events | integer | 30 | Total number of events to generate |
| min_event_ms | positive | 200 | Minimum event duration in milliseconds |
| max_event_ms | positive | 600 | Maximum event duration in milliseconds |
| gap_between_events_ms | positive | 50 | Silence gap between events in milliseconds |
Pitch Range
| Parameter | Type | Default | Description |
|---|---|---|---|
| min_pitch_cents | integer | -200 | Minimum pitch shift in cents (-600 to 0) |
| max_pitch_cents | integer | 200 | Maximum pitch shift in cents (0 to +600) |
Internal Derived Parameters
| Parameter | Type | Description |
|---|---|---|
| normalized_series[] | array | Series values normalized to 0–1 range |
| event_time[] | array | Timing values for each event (from series) |
| event_index[] | array | Sorted event indices after temporal ordering |
| min_event_s, max_event_s | real | Duration bounds converted to seconds |
| gap_s | real | Gap duration converted to seconds |
Applications
Academic Composition
Use case: Teaching serialist principles through audible examples
Technique: Use 12-tone row with inversion/retrograde transformations
Example: Demonstrate how series control creates perceptible structure
Sound Design
Use case: Creating complex, evolving textures for media
Technique: "Granular Texture" or "Statistical Field" presets
Example: Sci-fi interfaces, magical effects, transitional sounds
Algorithmic Music Generation
Use case: Generating structured yet complex musical materials
Technique: Random series generation with systematic transformations
Workflow:
- Generate random permutation series
- Apply different transformations to create families
- Map to different source materials
- Create larger structures through systematic variation
Analytical Tool
Use case: Studying serialist compositions through re-synthesis
Advantages:
- Hear the effect of specific series
- Isolate parameter controls
- Compare different transformation strategies
- Understand perceptual consequences of serial organization
Example: Reconstructing Webern's pitch series as audio events
Experimental Audio Processing
Use case: Radical transformation of source material
Technique: "Transformational" preset with extreme ranges
Example: Deconstructing speech into abstract pointillistic textures
Application: Sound art, electroacoustic composition, experimental radio
Practical Workflow Examples
🎓 Teaching Serialism (Music Theory Class)
Goal: Demonstrate 12-tone technique audibly
Settings:
- Preset: Pointillism (Webern-style)
- Series type: 12-tone row
- Series length: 12
- Transformations: Inversion=Yes, Retrograde=No
- Source: Piano chord
- Num_events: 24 (series × 2)
Result: Clear audible demonstration of serial organization
🎬 Sci-Fi Sound Design (Film/TV)
Goal: Create complex interface/technology sounds
Settings:
- Preset: Granular Texture
- Series type: Permutation with custom values
- Source: Synthesizer glissando
- Num_events: 60
- Event duration: 50-150ms
- Gap: 20ms (creates overlapping texture)
Result: Dense, complex texture suggesting advanced technology
🔬 Research Tool (Music Cognition)
Goal: Generate stimuli for perception studies
Settings:
- Preset: Custom
- Series: Controlled permutations
- Parameters: Systematically varied across conditions
- Documentation: Full parameter recording
Result: Reproducible, systematically varied audio stimuli
Advanced Techniques
- Intervallic series: Design based on specific interval patterns
- Multiple series: Run script multiple times with different series
- Nested transformations: Apply transformation chains (P, R, I, RI)
- Series concatenation: Create longer series by joining multiples
- Parameter-specific series: Different series for different parameters
Traditional serialist practice often uses prime (P), retrograde (R), inversion (I), and retrograde-inversion (RI) forms
- Harmonically rich: Complex spectra provide more variation
- Dynamic variation: Sources with amplitude changes add interest
- Timbral variety: Different attack/sustain characteristics
- Stereo sources: Provide spatial interest before panning
- Duration: Longer sources allow more extraction positions
Optimal sources: piano chords, string sustains, percussion hits, environmental sounds
Troubleshooting Common Issues
Cause: Series values clustered at extremes, or gap between events too large
Solution: Check series distribution, reduce gap_between_events_ms, increase num_events
Cause: Very short event durations, abrupt fades
Solution: Increase min_event_ms, use longer fade times, choose smoother source material
Cause: Extreme pitch values (±600¢ or more), resampling artifacts
Solution: Reduce pitch range, use higher quality resampling, pre-filter source
Cause: Series values clustered in panning range
Solution: Check pan_pos distribution, adjust series values, enable uniform distribution
Historical Context & References
Key Serialist Composers
📜 Historical Development
Anton Webern (1883-1945): Pointillistic texture, extreme economy
Pierre Boulez (1925-2016): Total serialism, "Structures I"
Karlheinz Stockhausen (1928-2007): Electronic serialism, moment form
Milton Babbitt (1916-2011): American serialism, combinatoriality
Luciano Berio (1925-2003): Serialism combined with other techniques
Technical Extensions
Beyond Traditional Serialism
Potential script extensions: