Llogic Symbolic Granular Recomposition — User Guide
A computational interpretation of Rakhat-Bi Abdyssagin's Llogic/Lsets framework: classifies a source into six timbral-textural categories, writes a classified TextGrid and symbolic Lsets representations, then recomposes selected source regions from a user-defined proposition.
What this does
Llogic Symbolic Granular Recomposition has two linked roles:
- Analysis: divide the source into short windows, classify each window into one of six Llogic-inspired timbral-textural categories, merge the decisions into a gapless partition, create a labelled TextGrid, and print symbolic representations.
- Recomposition: treat sufficiently long classified regions as candidate atoms, select atoms according to a symbolic proposition, arrange them, optionally insert silence, shape their edges, and concatenate them with overlap.
Llogic, Lsets & this implementation
Rakhat-Bi Abdyssagin's Logic of Sound and Silence: Chaos and Order develops formal representations for timbre-texture in contemporary music, including Llogic, Lsets, silence, and sequential representations. Chapter 8 demonstrates sequential Lsets representations with and without pauses and with proportional silence classes.
The six labels used by the script are:
| Symbol | Internal label | User-facing interpretation |
|---|---|---|
| Ø | null | Silence / low-intensity region |
| ψ | psi | Airy / low-HNR region |
| θ | theta | Tonal / strongly harmonic region with F0 |
| χ | chi | Percussive / rapid intensity-rise region |
| ϕ | phi | Vibrational / intermediate-HNR region with F0 |
| ω | omega | Structured non-single-pitch candidate: sufficient HNR but no detected F0 |
Quick start
- Select exactly one Sound object.
- Run
L-Logic_Symbolic_Granular_Recomposition.praat. - Choose Custom or one of the seven named proposition presets.
- For Custom, enter a comma-separated proposition such as
psi, phi, thetaorψ, ϕ, θ. - Set the analysis window/step, pitch range and classification thresholds.
- Choose cycles, candidate selection, arrangement, gap behavior and atom shaping.
- Run the script. It leaves both a classified TextGrid and the recomposed Sound selected in the Objects environment, with the Sound reselected at the end.
Six-category acoustic classifier
Analysis objects
- Intensity: calculated from the full zero-based source, including its multichannel energy.
- Harmonicity: Praat Harmonicity (cc) on a mono fold.
- Pitch: Praat raw-autocorrelation Pitch on the same mono fold.
The default form values are:
| Parameter | Default | Effective behavior |
|---|---|---|
| Win_len | 0.030 s | Clamped to at least 0.010 s. |
| Win_step | 0.030 s | Clamped to at least 0.005 s and to no more than Win_len. |
| Min_pitch | 100 Hz | Clamped to at least 30 Hz. |
| Max_pitch_Hz | 1200 Hz | Must exceed Min_pitch; if it reaches Nyquist it is reduced to 0.45 × sample rate. |
| Hnr_psi | 5 dB | Lower boundary for phi/omega candidates. |
| Hnr_theta | 18 dB | Must exceed Hnr_psi. |
| Int_null | 25 dB | Absolute Intensity threshold for null. |
| Chi_rise_dB_per_s | 267 dB/s | Step-independent onset criterion. |
Intensity-rise rate
Chi is no longer based on a fixed dB difference between adjacent frames. The script divides the difference by the actual frame step:
Classification priority
Every analysis frame receives exactly one label in this order:
The priority matters: a sufficiently quiet frame is null regardless of the other descriptors, and a sufficiently rapid intensity rise becomes chi before HNR/F0 classification is considered.
Merging, phi bridging & true partition
Adjacent labels
Consecutive frames with the same category are first merged into larger regions.
Phi bridging
A short psi or theta region of at most 150 ms is absorbed when it is located between phi regions:
After this absorption, adjacent phi regions are merged again. The rule does not bridge arbitrary categories and does not use acoustic similarity.
Canonical non-overlapping boundaries
If Win_step < Win_len, the raw classification windows overlap. The script therefore converts the merged extents into a true partition. At every label change:
The first region begins at 0 and the final region ends at the source duration. The final classified regions therefore tile the complete source with no overlap or gap, and their durations sum to the source duration.
Silence duration classes
| Class | Current threshold |
|---|---|
| Ø(S) | duration < 0.15 s |
| Ø(M) | 0.15 s ≤ duration < 0.40 s |
| Ø(L) | duration ≥ 0.40 s |
Classified TextGrid & symbolic representations
Classified TextGrid
The script creates a one-tier TextGrid named:
Every canonical region becomes one interval labelled with ψ, θ, χ, ϕ, ω or with Ø(S), Ø(M), Ø(L).
Three printed representations
The Info window also prints:
Example structure:
The script additionally reports category counts, occupied duration and percentage, a duration-ranked dominance string, and an LPC-style expression listing which categories are present.
Candidate pool
Recomposition candidates are taken directly from the final non-overlapping classified partition. Each candidate retains the original source channel count.
| Category | Minimum candidate duration |
|---|---|
| χ chi | Win_step |
| ω omega | Win_step |
| Ø null | 50 ms |
| ψ psi | 100 ms |
| ϕ phi | 100 ms |
| θ theta | 100 ms |
The complete candidate pool is limited to 5000 regions. For proposition selection, candidates of each requested symbol are ranked longest-first; only the 50 longest are addressable by Rotate or Random selection.
Proposition parsing & candidate selection
Accepted symbols
The proposition is comma-separated and can use English names or Llogic glyphs:
Leading/trailing spaces are removed. Unknown symbols stop the script rather than being ignored. A proposition may contain at most 50 symbols.
Selection modes
| Mode | Exact behavior |
|---|---|
| Longest only | Use the longest candidate of the requested category in every cycle. |
| Rotate through candidates | Cycle 1 uses rank 1, cycle 2 rank 2, and so on, wrapping within the available top-50 candidates. |
| Random each cycle | Choose a random rank from the available top-50 candidates for every proposition position and cycle. |
If one requested category has no candidate, the script prints a warning and that proposition position is omitted from the rendered sequence. It does not substitute a different category.
Cycles & arrangement modes
Cycles is validated to 1–100. One candidate atom is selected for every available proposition position in every cycle; the arrangement is then applied separately to each cycle.
| Mode | For proposition A B C | Exact behavior |
|---|---|---|
| Linear | A B C | Keep proposition order. |
| Retrograde | C B A | Reverse the symbol order inside every cycle. |
| Palindrome | A B C B A | Forward, then reverse without repeating the turning-point atom C. |
| Accumulation | A | A B | A B C | Concatenate prefixes of increasing length. |
| Stutter | A A A B B B C C C | Repeat each selected atom three times. |
| Scatter | e.g. B C A | Fisher–Yates permutation of proposition positions, independently for every cycle. |
Repeated uses created by Palindrome, Accumulation or Stutter are rendered as fresh Sound copies, so the same selected atom can appear multiple times in the output timeline.
Gaps, atom envelopes & crossfades
Atom extraction
Candidate atoms are extracted from the zero-based, original-channel source with a rectangular extraction window.
Optional atom shaping
When Shape_atoms is enabled, the script applies Praat fade-in and fade-out to every atom. Defaults are 20 ms in and 40 ms out. If the two requested fades together exceed 90% of that atom's duration, they are replaced by:
Global crossfade
One overlap duration is used for every concatenation join:
A requested value of 0 produces ordinary butt concatenation.
Gap modes
| Mode | Intended atom-to-atom silence after atom i |
|---|---|
| None | No inserted silence object. |
| Fixed | Gap_base |
| Growing | Gap_base × [1 + 0.3(i−1)] |
| Shrinking | Gap_base / [1 + 0.3(i−1)] |
| Random | uniformly from 0.5 × Gap_base to 1.5 × Gap_base |
Because every inserted silence object participates in two overlap joins, its created duration is:
This compensates for the two overlaps so that Gap_base describes the audible atom-to-atom separation, rather than the raw silence-object length.
Seven proposition presets
| Preset | Proposition written by the preset |
|---|---|
| Breath to Tone | psi, phi, theta |
| Tonal Phrase | theta, phi, theta |
| Dissolution | theta, phi, psi, null |
| Silence Arc | null, psi, theta, psi, null |
| Dense Texture | chi, theta, phi, theta, chi |
| Void Meditation | null, omega, null |
| Full Llogic Arc | null, psi, phi, theta, chi, omega, phi, psi, null |
Visualization
The v4.3 Picture view follows the analysis-to-recomposition path:
- Classified source: unnormalized mono display copy with category-colored background regions. The mono display follows the same channel-fold decision used for HNR/Pitch analysis.
- Harmonicity cue: neutral HNR trace over background zones separated by Hnr_psi and Hnr_theta. The panel is one cue in the classifier; it is not the complete category decision by itself.
- Intensity / onset cue: neutral Intensity trace, null threshold and reminder that rapid rises can produce chi.
- Lsets distribution: one proportional bar whose widths are the actual occupied source durations of the six categories.
- Symbolic recomposition map: the actual atom/gap objects on the rendered output timeline, including crossfade overlap. Inserted compositional gaps are drawn differently from semantic Ø/null regions.
- Summary: detected Lsets string, duration-ranked dominance, requested proposition, rendered atom count, arrangement, output duration and channel count.
- Legend: one consistent color identity for Ø, ψ, ϕ, θ, χ and ω.
Outputs & limits
Objects left by the script
| Object | Name | Content |
|---|---|---|
| TextGrid | <source>_Llogic_grid | One gapless labelled interval tier covering the source duration. |
| Sound | <source>_Llogic_result | Recomposed proposition result; original channel count preserved. |
The recomposed Sound is reselected and played automatically. There is no Play_result checkbox in v4.3.
Important limits
- Exactly one Sound must be selected.
- Source duration must be at least Win_len.
- Analysis classification loop guard: 100,000 frames.
- Candidate pool: 5000 regions.
- Proposition: at most 50 symbols.
- Candidate rank storage used by Rotate/Random: top 50 longest candidates per proposition position.
- Cycles: 1–100.
- Source channel count is preserved in atoms and inserted silence.
- No final amplitude normalization or safety ceiling is applied.
Further reading
The primary theoretical source for the terminology used by this tool is:
- Abdyssagin, Rakhat-Bi. (2026). Logic of Sound and Silence: Chaos and Order. World Scientific. ISBN 978-1-80061-845-9. Publisher DOI.
The book's set-theoretic formalization introduces Llogic/Lsets as complementary ways of representing timbral-textural structure, and Chapter 8 contains sequential Lsets examples with generic and duration-classified silence. The acoustic thresholds and recomposition algorithms documented above belong to the Praat implementation, not to the book.