L-Logic System — Symbolic Granular Recomposition — User Guide
Praat implementation of the analytical and compositional framework from "Logic of Sound and Silence" by Rakhat-Bi Abdyssagin. Classifies audio into six Lsets (global sets) and enables symbolic recomposition based on user-defined propositions.
What this does
This script implements the L-Logic System — an analytical and compositional framework based on Rakhat-Bi Abdyssagin's "Logic of Sound and Silence" (2024). It classifies audio into six perceptual categories (Lsets), generates symbolic representations of the sound's structure, and enables recomposition by assembling sequences of classified segments according to user-defined propositions.
🧠 What is L-Logic?
L-Logic is a formal system for describing sound in terms of perceptual categories:
- Ø (null) — silence/pauses [with duration classes: S, M, L]
- ψ (psi) — airy set: breath, half-tone/half-noise, air noise
- θ (theta) — ordinary sound: tonal, pitched, harmonic
- χ (chi) — percussive set: staccato, slap tongue, onsets
- ϕ (phi) — vibrational set: vibrato, tremolo, bisbigliando
- ω (omega) — multiphonics: complex spectral, no single pitch
The system produces three symbolic representations:
- Lsets: global sets without pauses
- Lsets ∧ Ø: with pauses and phrases in brackets
- Lsets ∧ Ø(dur): with proportional silence durations (S/M/L)
Key Features:
- 7 Preset Strategies — Breath to Tone, Tonal Phrase, Dissolution, Silence Arc, Dense Texture, Void Meditation, Full Llogic Arc, plus Custom
- 6 Lset Classification — Based on HNR, intensity, intensity rise, and F0 presence
- Silence Duration Classes — Ø(S), Ø(M), Ø(L) based on absolute duration thresholds
- Phi Gap-Bridging — Merges phi segments separated by short psi/theta interruptions
- Candidate Pool Extraction — All classified segments become candidates for recomposition
- Proposition-Based Recomposition — User defines symbol sequences (e.g., "psi, phi, theta")
- 6 Arrangement Modes — Linear, Retrograde, Palindrome, Accumulation, Stutter, Scatter
- 5 Gap Modes — None, Fixed, Growing, Shrinking, Random silence between atoms
- Comprehensive Visualization — 5-panel display with waveform regions, HNR, intensity, distribution, stats
- Symbolic Outputs — Three Lsets string representations per Chapter 8 notation
Technical Implementation: (1) Analysis: Extract intensity, HNR, pitch per window. (2) Classification: Apply 6-category logic with phi gap-bridging. (3) Candidate Pool: Collect all segments with duration thresholds. (4) Proposition Parsing: Parse user's comma-separated symbol list. (5) Selection: For each symbol per cycle, choose candidate (longest, rotate, random). (6) Arrangement: Build sequence according to mode. (7) Assembly: Concatenate with gaps and envelopes. (8) Visualization: 5-panel display with color-coded regions.
Quick start
- In Praat, select exactly one Sound object (any duration, any content).
- Run script… → select
L-Logic_Symbolic_Granular_Recomposition.praat. - Choose Preset (2-8 for specific strategies, 1 for custom).
- If using custom, enter proposition (e.g., "psi, phi, theta") — comma-separated symbols.
- Set analysis parameters (window length/step, min pitch).
- Adjust classification thresholds (HNR psi/theta, intensity null/chi).
- Configure synthesis parameters (crossfade, cycles, selection mode, arrangement, gap mode).
- Enable Draw_visualization for analysis display.
- Click OK — system analyzes, classifies, builds candidate pool, recomposes, creates "source_Llogic_result".
L-Logic Theory
The Six Lsets
📊 Perceptual Categories
| Symbol | Name | Acoustic Criteria | Color |
|---|---|---|---|
| Ø | Null (silence) | intensity < int_null (default 25 dB) | Light gray |
| ψ | Psi (airy) | HNR < hnr_psi (default 5.0 dB) | Light blue |
| θ | Theta (tonal) | HNR > hnr_theta (18.0 dB) AND F0 present | Light green |
| χ | Chi (percussive) | intensity rise ≥ int_chi (8.0 dB) between frames | Light pink |
| ϕ | Phi (vibrational) | hnr_psi ≤ HNR ≤ hnr_theta AND F0 present | Light purple |
| ω | Omega (multiphonic) | HNR ≥ hnr_psi AND F0 absent | Light yellow |
Classification priority: The system checks in order: null → chi → theta → phi → omega → psi. This ensures that:
- Silence overrides all other classifications
- Percussive onsets are detected before tonal classification
- Tonal takes precedence over vibrational when HNR is high
- Omega (multiphonic) requires absence of pitch but moderate HNR
- Psi is the default for low-HNR non-percussive sounds
Silence Duration Classes
Phi Gap-Bridging
🔗 Sustaining Vibrational Regions
Vibrational sounds (ϕ) are often interrupted by short breathy (ψ) or tonal (θ) moments. The phi-bridging algorithm merges ϕ segments separated by ≤ 150ms of other material:
This creates longer, more perceptually coherent vibrational regions.
Lsets Representations
Proposition-Based Recomposition
🎛️ Symbolic Granular Synthesis
The recomposition engine works as follows:
- Candidate pool: All classified segments (with minimum duration filters) become candidates, each labeled with its Lset symbol.
- Proposition: User enters a comma-separated sequence of symbols (e.g., "psi, phi, theta, null").
- Cycles: The proposition is repeated N times (cycles parameter).
- Selection: For each symbol in each cycle, a candidate is chosen based on selection_mode:
- Longest only: always pick the longest available candidate
- Rotate through candidates: cycle through candidates in order
- Random each cycle: pick random candidate
- Arrangement: The sequence of atoms is ordered according to arrangement mode (Linear, Retrograde, etc.)
- Gaps: Optional silence inserted between atoms with configurable patterns.
- Assembly: Atoms are concatenated with crossfades, each atom shaped with fade in/out.
Arrangement Modes
| Mode | Description | Example (proposition: A B C) |
|---|---|---|
| Linear | Symbols in original order | A B C |
| Retrograde | Symbols in reverse order | C B A |
| Palindrome | Forward then back (skip repeated middle) | A B C B A |
| Accumulation | Progressive accumulation: 1, 12, 123... | A, A B, A B C |
| Stutter | Each symbol repeated 3× before next | A A A B B B C C C |
| Scatter | Random permutation each cycle | B A C, C B A, ... |
Preset Strategies
Preset 2: Breath to Tone
🌬️ ψ → ϕ → θ
Proposition: psi, phi, theta
Character: Gradual transition from airy through vibrational to tonal — models a sound "focusing"
Use on: Vocal exercises, instrumental attacks, textural evolution
Preset 3: Tonal Phrase
🎵 θ → ϕ → θ
Proposition: theta, phi, theta
Character: Tonal core with vibrational middle — ornamented statement
Use on: Melodic phrases, instrumental solos
Preset 4: Dissolution
💨 θ → ϕ → ψ → null
Proposition: theta, phi, psi, null
Character: Sound dissolves from tone through vibrational and airy into silence
Use on: Fade-outs, transitions, decays
Preset 5: Silence Arc
🔇 null → ψ → θ → ψ → null
Proposition: null, psi, theta, psi, null
Character: Emerges from silence, peaks at tonal, recedes through airy back to silence
Use on: Gestures, arcs, narrative shapes
Preset 6: Dense Texture
🌋 χ → θ → ϕ → θ → χ
Proposition: chi, theta, phi, theta, chi
Character: Percussive onsets framing tonal-vibrational core
Use on: Rhythmic textures, dense material
Preset 7: Void Meditation
🕳️ null → ω → null
Proposition: null, omega, null
Character: Silence → complex multiphonic → silence — a void containing spectral complexity
Use on: Meditative pieces, drone work
Preset 8: Full Llogic Arc
🌈 All Six Sets
Proposition: null, psi, phi, theta, chi, omega, phi, psi, null
Character: Complete traversal through all Lsets — a sonic journey
Use on: Demonstrations, compositional explorations
Parameters & Controls
Proposition
| Parameter | Default | Description |
|---|---|---|
| Proposition | psi, phi, theta | Comma-separated list of symbols (null, psi, theta, chi, phi, omega) |
Analysis Parameters
| Parameter | Default | Description |
|---|---|---|
| Win_len | 0.030 | Analysis window length (seconds) |
| Win_step | 0.030 | Analysis window step (must be ≤ win_len) |
| Min_pitch | 100 | Minimum pitch for F0 detection (Hz) |
Classification Thresholds
| Parameter | Default | Description |
|---|---|---|
| Hnr_psi | 5.0 | HNR below this = psi (airy) (dB) |
| Hnr_theta | 18.0 | HNR above this (with pitch) = theta (tonal) (dB) |
| Int_null | 25.0 | Intensity below this = null (silence) (dB) |
| Int_chi | 8.0 | Intensity rise ≥ this = chi (percussive) (dB) |
Synthesis Parameters
| Parameter | Default | Description |
|---|---|---|
| Crossfade | 0.030 | Crossfade duration between atoms (seconds) |
| Cycles | 3 | Number of times to repeat the proposition |
| Selection_mode | Rotate through candidates | How to choose candidates: longest, rotate, random |
| Arrangement | Linear | Ordering mode for atoms (6 options) |
Separation
| Parameter | Default | Description |
|---|---|---|
| Gap_mode | None | Silence between atoms: none, fixed, growing, shrinking, random |
| Gap_base | 0.300 | Base gap duration (seconds) |
Envelope
| Parameter | Default | Description |
|---|---|---|
| Shape_atoms | 1 | Apply fade in/out to each atom |
| Fade_in | 0.020 | Fade-in duration (seconds) |
| Fade_out | 0.040 | Fade-out duration (seconds) |
Output
| Parameter | Default | Description |
|---|---|---|
| Draw_visualization | 1 | Generate 5-panel analysis display |
Fixed Parameters (internal)
| Parameter | Value | Description |
|---|---|---|
| silShort | 0.15 s | Short/medium silence threshold |
| silMed | 0.40 s | Medium/long silence threshold |
| phiBridge | 0.15 s | Max gap to merge phi segments |
| minDur_chi/omega | win_step | Minimum duration for chi/omega candidates |
| minDur_null | 0.050 s | Minimum duration for null candidates |
| minDur_others | 0.100 s | Minimum duration for psi/phi/theta |
Visualization & Analysis
5-Panel Display
Reading the Visualization
- Waveform colors: Instantly see the distribution of Lsets — e.g., long gray regions (silence), green patches (tonal), pink spikes (percussive).
- HNR zones: See how segments align with harmonicity regions — tonal segments should fall in green zone, airy in blue, etc.
- Intensity rise: Chi (percussive) segments should align with sharp intensity rises visible in the orange contour.
- Distribution bar: Quickly grasp the proportion of each Lset in the source.
- Lsets strings: Compare the three representations to understand how pauses and durations are encoded.
Applications
Compositional Tool
Use case: Generating new structures from existing material using symbolic propositions
Technique: Use presets as starting points, then customize propositions and arrangements
Workflow:
- Record or select source material with varied timbral content
- Run analysis to see Lsets distribution and candidate pool
- Design a proposition that explores the available symbols
- Experiment with arrangement modes and gap patterns
- Generate multiple outputs for layering
Analytical Tool
Use case: Understanding the timbral-textural structure of a sound
Technique: Run with default thresholds, examine Lsets strings and visualization
Applications:
- Music analysis: Compare Lsets representations of different performances
- Sound classification: Use Lsets distribution as a feature set
- Pedagogy: Teach students to hear and categorize sound types
Sound Design
Use case: Creating new sounds by recombining classified segments
Technique: Use Void Meditation or Dense Texture presets on rich source material
Examples:
- Drone construction: Extract omega (multiphonic) segments and arrange them
- Rhythm generation: Use chi (percussive) segments with stutter arrangement
- Texture layering: Combine multiple outputs from different sources
Research & Education
Use case: Testing perceptual categories and classification thresholds
Technique: Adjust thresholds, compare classifications, conduct listening tests
Research questions:
- How well do acoustic thresholds align with perceptual categories?
- What are the optimal hnr_psi/hnr_theta values for different instrument families?
- Can Lsets representations serve as a compositional grammar?
Practical Workflow Examples
🎵 Vocal Texture Study
Goal: Analyze and recompose a 10-second vocal improvisation
Settings:
- Source: Vocal improvisation with breath, tone, vibrato, multiphonics
- Preset: Full Llogic Arc (analyzes all categories)
- After analysis, examine Lsets strings and distribution
- Design proposition based on dominant categories: "psi, theta, phi, omega"
- Arrangement: Accumulation (builds complexity)
Result: Recomposition that traces the vocalist's textural journey
🥁 Percussion Deconstruction
Goal: Create new rhythmic patterns from drum recording
Settings:
- Source: 5-second drum loop
- Preset: Dense Texture (focus on chi, theta, phi)
- Adjust int_chi lower (5.0 dB) to catch more percussive onsets
- Proposition: "chi, null, chi, null, chi"
- Arrangement: Stutter (each chi repeated 3×)
- Gap mode: Fixed silence (0.1s)
Result: Rhythmic pattern built from extracted drum hits
🔬 Research: Threshold Optimization
Goal: Find optimal hnr_theta for clarinet multiphonics
Settings:
- Source: Clarinet multiphonic recordings
- Run multiple analyses with hnr_theta ranging from 12-22 dB
- Compare classifications of known multiphonic sections
- Select threshold that best separates omega from theta
Result: Optimized thresholds for specific instrument families
Troubleshooting Common Issues
Cause: That Lset not present in source, or minimum duration too strict
Solution: Check candidate pool counts in Info window; adjust minDur thresholds in script; use different proposition
Cause: HNR thresholds inappropriate for material
Solution: Adjust hnr_psi/hnr_theta — lower for noisy material, raise for clean tones
Cause: int_chi too high, or win_step too large to catch rise
Solution: Lower int_chi, decrease win_step (must be ≤ win_len)
Cause: Crossfade too short or missing
Solution: Increase crossfade, ensure shape_atoms is enabled
Cause: Many segments (1000+) with high-resolution plotting
Solution: Increase win_step for coarser analysis, or disable visualization for final runs
Advanced Techniques
Modify the minDur values in the candidate pool building section. For example, increase minDur_others to 0.150s for longer segments only.
Change phiBridge value (currently 0.150) to control how aggressively phi segments are merged. Larger values (0.3) create longer vibrational regions.
Modify silShort and silMed to change Ø(S)/Ø(M)/Ø(L) classification. Useful for different tempo contexts.
The script automatically converts stereo to mono for analysis. For spatial applications, consider analyzing each channel separately.