Praat AudioTools · Documentation

Vector Chain

From Signal Processing to Composition and Live Performance

A family of fixed processing chains, multi-part compositions, recorded-performance workflows, a flexible Matrix Chain host, and a bridge to Ableton Live. The related Live Lab turns nine of these chains into an interactive performance environment.

Author: Shai Cohen · Department of Music, Bar-Ilan University · MIT License · October 2026 documentation preview

Overview: a compositional layer above individual effects

In AudioTools, individual scripts transform, analyse, or synthesize sound. Vector Chain explores what happens when multiple scripts are placed in a deliberately designed relationship: a sequence of transformations can become a recognizable gesture, a succession of sections can become a form, and a set of repeatable processes can become part of a performance.

The name here denotes the family of chained workflows; it should not be confused with the separate Vector Synthesis script in Generative & Synthesis.

7Fixed Chains
2Compositions
9Live scripts
3Matrix / Ableton utilities

Chain: ordered transformation

A predefined pathway through several AudioTools modules, emphasizing how processing stages change each other's inputs.

Composition: form

Separate processes become contrasting sections connected by overlap, transition, and temporal organization.

Performance and routing

Recorded gestures, flexible series/parallel configuration, live playback, and DAW transfer extend offline processing into broader practices.

Two meanings of “Live”

The nine Live_*.praat scripts are capture-then-process workflows: they first record a bounded sound and then process it. Live Lab, by contrast, provides interactive MIDI/keyboard capture and one-shot playback while Praat workers perform analysis–resynthesis between actions. Neither description should be read as a claim that arbitrary AudioTools effects process the incoming audio stream sample by sample in real time.

1. Chain — seven fixed processing pathways

Each Chain script begins with one selected Praat Sound and launches a prescribed combination of AudioTools scripts. Their value lies in the order and coupling of operations: altering the first stage changes what becomes available to the next. Output format and duration depend on the selected modules and their configurations.

Chain 1

4-channel stage
MDS Space NavigatorSpectral Freeze & GlitchCrystalline Cascade4-Channel Canon

A similarity-guided reordering becomes a fragmented spectral texture, acquires a reverberant tail, and is finally distributed as a four-channel canon.

Chain 2

8-channel stage
Spiral Pitch DanceNeural Ambient Drone Designer8-Channel Speed Deviations

Moves from spiral pitch transformations to sustained drone generation and an eight-channel field of temporal deviations.

Chain 3

Rhythmic ending
Whisper MorphBimodal Contour GrammarPercussive Audio Groove Creator

Transforms source articulation into a whispered timbre, reshapes its pitch/contour behaviour, and introduces rhythmic organization.

Chain 4

8-channel stage
Metamodulator (Cubic Phase)Adaptive Grain Cloud Synthesis8-Channel Comb Delay

Begins with cubic phase distortion, diffuses the result into granular activity, and expands it through an eight-channel delay structure.

Chain 5

8-channel stage
Full-Wave RectifierBrownian Motion Texture Generator8-Channel Movements

Derives new partials through rectification, develops stochastic texture, and distributes movement in an eight-channel sound field.

Chain 6

Spatial panning stage
Phase ShaperPhase Modulation MatrixBPM Panning

Organizes a sequence of phase-oriented transformations and then links spatial panning to a rhythmic tempo framework.

Chain 7

Generative / stereo mix
HMM Timbre Sequencing + Kotoński FSM + Risset Mutations + Studie II → Stereo Mixer → Golden Ratio Processor

A larger generative construction: heterogeneous generated and re-sequenced materials are combined with a stereo mixer before final golden-ratio-inspired processing. Unlike Chains 1–6, this is not simply one input passed through every stage.

Working with a fixed chain. Select exactly one Sound in the Praat Objects window, run a chain_*.praat script, and examine the final selected Sound. The child modules must be installed in their expected AudioTools folders. These scripts use specific module arguments and should be checked when constituent modules change their form or output naming.

2. Composition — creating form from processing stages

The Composition scripts change the temporal level of organization. Rather than treating every stage as another effect on the same continuing signal, they construct different sections with distinct functions and join them through fades and overlaps.

Composition 1

Three-part form

Atmosphere → Rhythm → Reverberation

I · IntroductionNeural Ambient Drone Designer
II · BodyPercussive Audio Groove Creator
III · ConclusionCrystalline Cascade

An explicitly formed intro, middle, and ending. Separate sections are prepared, level/format handling is managed, and transitions are shaped with fades and overlaps.

Composition 2

Three-part form

Pitch spiral → Evolving drone → Spatial expansion

I · IntroductionSpiral Pitch Dance
II · BodyNeural Ambient Drone Designer
III · Conclusion8-Channel Speed Deviations

An alternative three-part trajectory in which pitch movement develops into drone texture and then into a multichannel spatial conclusion.

These are the two standalone Composition_*.praat files presently found in the Vector Chain folder. Later numbered Live scripts contain additional processing trajectories, but they do not imply that separate Composition_3.praat through Composition_6.praat files exist.

3. Live — record, process, perform

These nine Praat scripts begin with a fixed-duration microphone recording. They normalize and trim the captured material, apply a predefined processing route, and produce a transformed result. Live 1–3 have an additional Random variant whose parameter selection changes between performances; Live 4–6 are offered as their own numbered scripts.

Live 1

Preset path

Neural Drone → Percussive Groove → Crystalline Reverb.

Live 1 Random

Random

Randomized parameters for the Live 1 processing trajectory.

Live 2

Preset path

Spiral Pitch → Neural Drone → 8-Channel Speed Deviations.

Live 2 Random

Random

Randomized parameters for the Live 2 processing trajectory.

Live 3

Preset path

Whisper Morph → Bimodal Contour → Percussive Groove.

Live 3 Random

Random

Randomized parameters for the Live 3 processing trajectory.

Live 4

Preset path

Cubic Phase → Grain Cloud → 8-Channel Comb Delay.

Live 5

Preset path

Full-Wave Rectifier → Brownian Motion → 8-Channel Movements.

Live 6

Preset path

Phase Shaper → Phase Modulation Matrix → BPM Panning.

Beyond the recorded chain: Live Lab

Live Lab reuses all nine chain variants in a dedicated interface for held-note/pedal recording, MIDI control, a result bank, manual or automatic playback policies, crossfading, and explicit multichannel routing. It is a related performance host, not an additional Live_*.praat preset in the 21-script Vector Chain inventory.

4. Matrix Chain — from fixed presets to configurable signal topology

Where the numbered Chain scripts define a known route, Matrix Chain lets the user assemble and reconfigure a route. The host exposes four slots; compatible AudioTools processors are selected by category, their script-form parameters are reconstructed in a single graphical interface, and active stages can run in Series or in groups of consecutive Parallel rows.

Selected Sound
↓
Slot 1 · Series · Filter
↓
Slot 2 · ParallelReverb · branch gain 60%
Slot 3 · ParallelDistortion · branch gain 40%
↓  sum branches  ↓
Slot 4 · Series · Compressor
↓
Rendered Sound → Praat

Illustrative routing only, not a supplied preset. Parallel percentages are linear branch gains; they are not a wet/dry crossfade.

How a Matrix render works

  1. Choose exactly one Sound in the main Praat Objects window and run Matrix_Chain.praat.
  2. The launcher exports a high-resolution 32-bit WAV, prepares its launch manifest, and starts the Python/Tk interface.
  3. Select compatible scripts and edit their parameters per slot. Choose Off, Series, or Parallel for each row. Read the routing summary beneath the slots.
  4. Use Audition for a scratch render, then Apply → Praat for the version intended to return to the original session.
  5. Close the Matrix window. The launcher imports the selected result as a new Praat Sound.

For each Audition or Apply render, the Python host generates a disposable Praat wrapper and runs one headless Praat process. Native script stages pass their selected Sound objects in memory; the chain is not implemented by saving a new intermediate WAV at every slot.

Routing and global controls

ControlFunctionWhy it matters musically
SeriesOutput of one processor becomes input to the next.Order creates a transformation trajectory.
ParallelConsecutive parallel rows receive the same stage input and are summed.Multiple processes coexist and interact through mixing.
Branch %Linear gain applied to a parallel branch.Balances a branch without interpreting its value as wet/dry.
Dry/Wet %Linear amplitude balance of original input and completed chain.Places source identity in tension with transformed result.
Trim / fade / normalizeOptional analysis-driven trimming, edge fading, and final peak normalization.Controls the final boundary and level of a rendered gesture.
Safety ceilingOptional attenuation if the completed peak exceeds the specified ceiling.Prevents level overruns while preserving intentional branch sums below the ceiling.
Save / Load chainPreserves routing, processors, parameters, and global settings as JSON.Turns an exploratory configuration into a repeatable structure.

Compatibility is part of the design

Matrix Chain uses praat_script_inspector.py to scan AudioTools scripts for a usable input/output contract. Scripts requiring multiple selected Sounds, interactive editor/demo windows, mandatory chooser dialogs, or analysis-only outputs are typically excluded. This is a practical static filter, not a guarantee: the headless run still checks whether every stage leaves a valid Sound.

Python-backed AudioTools bridges can be included on an opt-in basis if they pass additional checks. They may take longer and require their own Python packages. For predictable parallel work, prefer mono/stereo; mismatched larger multichannel branches are conservatively conformed and may fold to mono.

Requirements and boundaries.

Requires Praat, Python 3 with Tkinter, py/matrix_chain.py, and py/praat_script_inspector.py. A working Praat executable must be available for headless rendering. Four slots are the maximum; Matrix Chain does not make all AudioTools scripts automatically chainable.

5. Ableton Bridge — transferring audio between Praat and Live

This part of the Vector Chain folder connects the offline AudioTools environment with a DAW session. The supplied AudioTools Live Bridge.amxd is a Max for Live device; Send_to_Ableton.praat exports a selected Sound and signals the device to import it. A separate cleaning script handles old bridge files when the Live project no longer depends on them.

Praat → Ableton Live

  1. Place the AudioTools Live Bridge Max for Live device on an Ableton audio track, and ensure the device is available.
  2. Select exactly one Sound in Praat and run Send_to_Ableton.praat (v1.0 is Windows-only).
  3. The script writes a uniquely named WAV into ~/Praat_AudioTools/Ableton_Bridge/ (inside the user's home folder).
  4. The script sends an import message containing the absolute WAV path as a locally addressed UDP packet to 127.0.0.1:7474. Ableton's bridge device can then place the audio in the Arrangement.

Ableton Live → Praat

Select an Ableton Audio Clip and use OPEN IN PRAAT in the Max for Live device. The device opens the clip's source audio file in Praat, not a rendered copy of Ableton's Warp, Clip Gain, Transpose, Detune, fades, or track processing.

Cleaning bridge files safely

Use Clean_Ableton_Bridge.praat only after Ableton Live → File → Collect All and Save (or once the transferred files are no longer needed). Close the Live Set first. The cleanup script requires explicit confirmation, attempts to delete .wav files and accompanying .asd analysis sidecars in the bridge folder, and reports anything remaining. It is not part of the immediate send operation.

Related performance environment — Live Lab

From processed files to a performable result bank

Live Lab builds on the nine fixed Live chain variants. A MIDI pedal or held keyboard action captures a gesture; a separate headless Praat worker processes the recording; completed results enter a bank for manual playback or policy-controlled automatic playback, with crossfades, result selection, and multichannel output routing.

Its core division is Capture Engine → Praat Worker → Playback Engine. The audio capture/playback stream and processing worker have distinct responsibilities. This enables interactive performance without asserting that the AudioTools processing chain itself runs as zero-latency live DSP.

Live Lab is distributed in the py/ part of AudioTools. It needs Python with numpy, sounddevice, and soundfile; python-rtmidi is optional for MIDI pedal/control support. Its working audio files live in a session-scoped system temporary folder, with automatic cleanup on shutdown and recovery of abandoned session workspaces on a later launch. Persisted configuration and explicitly exported results are separate from those temporary files.

Getting started: choose the level of musical control

If your goal is…Begin with…
Hear what a fixed sequence of transformations producesChain 1–7
Shape a recognizable multi-part form from a source soundComposition 1 or 2
Record a short gesture and transform it automaticallyLive 1–6 and the Random variants
Experiment with your own series/parallel signal structureMatrix Chain
Move audio to and from an Ableton sessionAbleton Bridge
Perform interactively with MIDI, result banks, and crossfadesLive Lab

The unifying idea is simple: an effect changes a sound; a chain changes the relation among sound-processing decisions. In a composition or performance, that relation can itself become musical material.