Chain 1
4-channel stageA similarity-guided reordering becomes a fragmented spectral texture, acquires a reverberant tail, and is finally distributed as a four-channel canon.
Praat AudioTools · Documentation
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.
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.
A predefined pathway through several AudioTools modules, emphasizing how processing stages change each other's inputs.
Separate processes become contrasting sections connected by overlap, transition, and temporal organization.
Recorded gestures, flexible series/parallel configuration, live playback, and DAW transfer extend offline processing into broader practices.
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.
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.
A similarity-guided reordering becomes a fragmented spectral texture, acquires a reverberant tail, and is finally distributed as a four-channel canon.
Moves from spiral pitch transformations to sustained drone generation and an eight-channel field of temporal deviations.
Transforms source articulation into a whispered timbre, reshapes its pitch/contour behaviour, and introduces rhythmic organization.
Begins with cubic phase distortion, diffuses the result into granular activity, and expands it through an eight-channel delay structure.
Derives new partials through rectification, develops stochastic texture, and distributes movement in an eight-channel sound field.
Organizes a sequence of phase-oriented transformations and then links spatial panning to a rhythmic tempo framework.
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.
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.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.
Atmosphere → Rhythm → Reverberation
An explicitly formed intro, middle, and ending. Separate sections are prepared, level/format handling is managed, and transitions are shaped with fades and overlaps.
Pitch spiral → Evolving drone → Spatial expansion
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.
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.
Neural Drone → Percussive Groove → Crystalline Reverb.
Randomized parameters for the Live 1 processing trajectory.
Spiral Pitch → Neural Drone → 8-Channel Speed Deviations.
Randomized parameters for the Live 2 processing trajectory.
Whisper Morph → Bimodal Contour → Percussive Groove.
Randomized parameters for the Live 3 processing trajectory.
Cubic Phase → Grain Cloud → 8-Channel Comb Delay.
Full-Wave Rectifier → Brownian Motion → 8-Channel Movements.
Phase Shaper → Phase Modulation Matrix → BPM Panning.
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.
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.
Illustrative routing only, not a supplied preset. Parallel percentages are linear branch gains; they are not a wet/dry crossfade.
Matrix_Chain.praat.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.
| Control | Function | Why it matters musically |
|---|---|---|
| Series | Output of one processor becomes input to the next. | Order creates a transformation trajectory. |
| Parallel | Consecutive 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 / normalize | Optional analysis-driven trimming, edge fading, and final peak normalization. | Controls the final boundary and level of a rendered gesture. |
| Safety ceiling | Optional attenuation if the completed peak exceeds the specified ceiling. | Prevents level overruns while preserving intentional branch sums below the ceiling. |
| Save / Load chain | Preserves routing, processors, parameters, and global settings as JSON. | Turns an exploratory configuration into a repeatable structure. |
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.
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.
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.
Send_to_Ableton.praat (v1.0 is Windows-only).~/Praat_AudioTools/Ableton_Bridge/ (inside the user's home folder).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.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.
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.
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.
| If your goal is… | Begin with… |
|---|---|
| Hear what a fixed sequence of transformations produces | Chain 1–7 |
| Shape a recognizable multi-part form from a source sound | Composition 1 or 2 |
| Record a short gesture and transform it automatically | Live 1–6 and the Random variants |
| Experiment with your own series/parallel signal structure | Matrix Chain |
| Move audio to and from an Ableton session | Ableton Bridge |
| Perform interactively with MIDI, result banks, and crossfades | Live 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.