Project structure
Envion_v3.6.pd
→ main patchaudio/
→ test samples and audio filesdata/
→ data terna and presets for slicing/algorithmshtml-guide/
→ guides and documentation (HTML/CSS)
an envelope-first ecosystem for musique concrète & experimental sound
Envion is an ecosystem in Pure Data designed for algorithmic and procedural composition, musique concrète, and experimental sound processing.
➜ Go to GitHub Repository and Download
Envion is an envelope‑first engine for Pure Data (Pd): it drives the read index of stereo buffers through textual sequences of triplets (value, time, delay) sent to
vline~
.
Each line of a text file represents a complete envelope; switching line means switching gesture.For years, I explored different systems for handling envelopes dynamically — starting with software like Composer Desktop Project, and later with hardware generators such as Zadar in the Eurorack domain.
Envion - Plugdata versionI would like to emphasize how fascinating the world of envelope dynamics is, and how envelopes can imprint transformative tonal characteristics onto sounds. Out of this research, I developed Envion as a kind of gesture generator.
I soon realized that the most flexible way to manage thousands of segments was to use plain-text databases containing the necessary information. From there, I created the Dynatext system.
At the moment, I am working on formatting textual data from external APIs. In this way, Envion could become a powerful tool for generating thousands of random articulations not only generated from local lists but also from the variable numbers of online APIs.
For example, by drawing on stock market data, weather information, or NASA’s extensive library of APIs — which are incredibly rich and fascinating. Even Co-Star, the app that calculates natal charts, makes wide use of them.
The system is designed for musique concrète/acousmatic music, sound design, and non‑metric writing.
Key idea
Instead of “playing” files, Envion writes trajectories on them through numeric envelopes (dynatext). This enables hyper‑articulated hits, slow morphs, irregular internal delays, and pseudo‑organic behaviors.At its core, Envion adds an algorithmic layer that keeps the envelope and the sample tightly coupled, preserving coherence while enabling complex, generative transformations.
Inside the repository there is also a version tailored for PlugData. It’s worth noting that this version is significantly more performant: unlike Pd-vanilla, where the audio and GUI share the same thread, PlugData (built on JUCE) separates the audio engine from the graphical interface. This reduces overhead, prevents dropouts when interacting with the patch, and makes real-time processing smoother. The JUCE-based architecture also improves GUI responsiveness, event handling, and CPU scheduling, resulting in noticeably faster and more stable performance, especially on older machines.
Dependencies: Cyclone · ggee · ceammc · else · simplex (for 3D scope) | audiolab
cyclone
, ggee
, ceammc
, else
, simplex
, audiolab
.~/Documents/Pd/externals
).As a procedural environment, in most cases it is sufficient to load a sample, record the output for several minutes, and then select the most interesting portions of the generated audio.
This approach highlights Envion’s nature: it is not about “playing” directly, but about generating emergent sonic material from which fragments can be extracted for composition.
Note — When loading material with high headroom (low volume), use the array normalization utility (top‑left). For mono material, a Mono → Stereo function (top‑right) mirrors data by copying the left array into the right array.
Ultra‑stereo material is recommended for this kind of application. When loading and mirroring mono material, activate Nuke on alternate channels of the matrix mixer to emphasize differences between left and right arrays, widening the stereo field.
To start experimenting, try loading the file:
/audio/env_0001.wav
This reel was created specifically for Envion using my modular synthesizers (Orthogonal Devices ER‑301, Morphagene, and several Low Pass Gates). It was then reamped — played back through speakers and re‑recorded in the room — to capture the original ambient nuances of the space.
The result is a material that embodies a contrast:
This interplay between the synthetic and the real, between algorithmic articulation and spatial resonance, is at the core of Envion’s aesthetic exploration.
By enabling both checkboxes, Envion activates a procedural randomization process that automatically draws from 19,000 pre‑defined triplets and applies the X factor to each segment of the terna, imposing its own time‑stretch and creating the sonic gesture.
/data
folder (each file ≈ 1,000 envelopes/triplets).This combines automatic loading and random selection, producing an ever‑changing and potentially infinite stream of events.
The patch may look intimidating at first, but it is intentionally left “alive” (with formulas and functions visible) to encourage exploration. Once you learn the few basic operations (keys 1–5 and the space bar, enabled via a flag), it is often best to record the output to capture unique articulations that are hard to reproduce exactly.
The Nuke module processes the left and right channels with slight differences in the filter and clipping stages. These micro‑variations introduce phase shifts and asymmetries between L and R, resulting in:
This design makes Nuke not only a distortion stage but also a stereo expander through destruction. The contrast between similar but non‑identical processing of L and R gives the module strong spatial depth.
Envion_v3.6.pd
→ main patchaudio/
→ test samples and audio filesdata/
→ data terna and presets for slicing/algorithmshtml-guide/
→ guides and documentation (HTML/CSS)One of the central elements of Envion is the use of terne (triplets of numerical values). Each terna defines the behavior of a sound fragment through three main parameters:
0.452 80 0 ; → 452 ms duration, amplitude 80, offset at start of sample
0.210 45 600 ; → 210 ms duration, amplitude 45, offset 600 ms into the sample
0.879 100 1280 ; → 879 ms duration, full amplitude, offset 1280 ms
The patch duration_flag_800.pd
implements a basic semantic check for incoming lists (vline‑style). It ensures structural validity and assigns each list to a category before it is passed on.
inlet
) A list in vline~
format enters the patch (usually a triplet: duration – amplitude – offset).list length
) — at least 3 elements; otherwise flagged as invalid.unpack f f f
), first is duration.moses 500
) — < 500 ms → percussive; ≥ 500 ms → hybrid.This acts as a semantic filter: it checks structural validity, then classifies by duration so Envion can route lists by temporal behavior.
.txt
in data/
).$0
-factorThe timebase module retrieves the buffer duration (samples → milliseconds), exposes it as $0‑durata, and calculates $0‑factor for the global stretch of envelopes.
// from samples to milliseconds (44.1 kHz)
expr round((($f1 * 1000.) / 44100) * 100) / 100
Original‑speed playback: 0, <array_size> <durata_ms>
— scans the entire buffer in durata_ms at constant speed.
openpanel ~ soundfiler
into sampletabL/R. If mono, use Mono→Stereo (copy L→R).text define/get
. Each line = one terna. Select or randomize.1 0.0 0.58 19 0.8 22 29 1 25 41; 0.7 120 0.0 38 80;
text get
; last strike duration can trigger next step (END listener).Smart concatenation: internal delays in terne allow irregular patterns without reprogramming the metro.
tabread4~ sampletabL/R
— 4‑point interpolation, indexed by vline~
*~ / pow~
— amplitude control + shapingsnake~
— stereo/multichannel routingclip~
headroomNote: tabread4~
never stops until index=0 or out of buffer. For immediate stop: send clear/stop
to vline~
, or drop amp to 0.
This simple workflow turns Envion into an algorithmic drum machine: browse different lists and strike manually to generate unique percussive articulations and irregular rhythms.
perc.txt
, random_delayed_perc.txt
).