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.

Author: Shai Cohen Version: 4.0 (2025) Citation: Cohen, S. (2025). Praat AudioTools Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

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:

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

  1. In Praat, select exactly one Sound object (any duration, any content).
  2. Run script… → select L-Logic_Symbolic_Granular_Recomposition.praat.
  3. Choose Preset (2-8 for specific strategies, 1 for custom).
  4. If using custom, enter proposition (e.g., "psi, phi, theta") — comma-separated symbols.
  5. Set analysis parameters (window length/step, min pitch).
  6. Adjust classification thresholds (HNR psi/theta, intensity null/chi).
  7. Configure synthesis parameters (crossfade, cycles, selection mode, arrangement, gap mode).
  8. Enable Draw_visualization for analysis display.
  9. Click OK — system analyzes, classifies, builds candidate pool, recomposes, creates "source_Llogic_result".
Quick tip: Start with Tonal Phrase preset on a 5-10 second recording of speech or instrument. Enable visualization — you'll see the waveform color-coded by Lset categories (gray = null, light blue = psi, purple = phi, green = theta, pink = chi, yellow = omega). The Info window will display the three Lsets string representations. The output will be a recomposition based on the proposition "theta, phi, theta" — a tonal phrase, vibrational, tonal phrase sequence.
Important: CLASSIFICATION ACCURACY depends on thresholds. Adjust hnr_psi/hnr_theta for your material (lower for noisy content, higher for clean tones). WIN_STEP must be ≤ WIN_LEN to prevent gaps (script auto-clamps). PHI BRIDGING merges phi segments separated by ≤ 150ms of psi/theta — can be adjusted in script. CANDIDATE MINIMUM DURATIONS: chi/omega = win_step, null = 50ms, others = 100ms. PROPOSITION SYMBOLS must match classification labels exactly: null, psi, theta, chi, phi, omega.

L-Logic Theory

The Six Lsets

📊 Perceptual Categories

SymbolNameAcoustic CriteriaColor
Ø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 presentLight green
χChi (percussive)intensity rise ≥ int_chi (8.0 dB) between framesLight pink
ϕPhi (vibrational)hnr_psi ≤ HNR ≤ hnr_theta AND F0 presentLight purple
ωOmega (multiphonic)HNR ≥ hnr_psi AND F0 absentLight 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

Null segments are further classified by duration: Ø(S) — short silence: duration < silShort (0.15 s) Ø(M) — medium silence: silShort ≤ duration < silMed (0.40 s) Ø(L) — long silence: duration ≥ silMed These appear in the Lsets∧Ø(dur) representation, e.g.: (ψ θ) Ø(M) (χ) Ø(L) (ψ)

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:

if currLbl = "phi" and prevLbl = "phi" and gapDur ≤ 150ms: merge into one phi segment if prevLbl = "phi" and (currLbl = "psi" or currLbl = "theta") and gapDur ≤ 150ms and nextLbl = "phi": absorb the interrupting segment into phi

This creates longer, more perceptually coherent vibrational regions.

Lsets Representations

After classification and merging, three symbolic representations are generated: 1. Lsets (no pauses): ψ θ ψ χ θ ϕ ψ ω (spaces between symbols) 2. Lsets ∧ Ø (with pauses and phrases): (ψ θ) Ø (χ) Ø (θ ϕ) Ø (ψ ω) 3. Lsets ∧ Ø(dur) (with duration classes): (ψ θ) Ø(M) (χ) Ø(L) (θ ϕ) Ø(S) (ψ ω) These follow the notation of Abdyssagin, Chapter 8.

Proposition-Based Recomposition

🎛️ Symbolic Granular Synthesis

The recomposition engine works as follows:

  1. Candidate pool: All classified segments (with minimum duration filters) become candidates, each labeled with its Lset symbol.
  2. Proposition: User enters a comma-separated sequence of symbols (e.g., "psi, phi, theta, null").
  3. Cycles: The proposition is repeated N times (cycles parameter).
  4. 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
  5. Arrangement: The sequence of atoms is ordered according to arrangement mode (Linear, Retrograde, etc.)
  6. Gaps: Optional silence inserted between atoms with configurable patterns.
  7. Assembly: Atoms are concatenated with crossfades, each atom shaped with fade in/out.

Arrangement Modes

ModeDescriptionExample (proposition: A B C)
LinearSymbols in original orderA B C
RetrogradeSymbols in reverse orderC B A
PalindromeForward then back (skip repeated middle)A B C B A
AccumulationProgressive accumulation: 1, 12, 123...A, A B, A B C
StutterEach symbol repeated 3× before nextA A A B B B C C C
ScatterRandom permutation each cycleB 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

ParameterDefaultDescription
Propositionpsi, phi, thetaComma-separated list of symbols (null, psi, theta, chi, phi, omega)

Analysis Parameters

ParameterDefaultDescription
Win_len0.030Analysis window length (seconds)
Win_step0.030Analysis window step (must be ≤ win_len)
Min_pitch100Minimum pitch for F0 detection (Hz)

Classification Thresholds

ParameterDefaultDescription
Hnr_psi5.0HNR below this = psi (airy) (dB)
Hnr_theta18.0HNR above this (with pitch) = theta (tonal) (dB)
Int_null25.0Intensity below this = null (silence) (dB)
Int_chi8.0Intensity rise ≥ this = chi (percussive) (dB)

Synthesis Parameters

ParameterDefaultDescription
Crossfade0.030Crossfade duration between atoms (seconds)
Cycles3Number of times to repeat the proposition
Selection_modeRotate through candidatesHow to choose candidates: longest, rotate, random
ArrangementLinearOrdering mode for atoms (6 options)

Separation

ParameterDefaultDescription
Gap_modeNoneSilence between atoms: none, fixed, growing, shrinking, random
Gap_base0.300Base gap duration (seconds)

Envelope

ParameterDefaultDescription
Shape_atoms1Apply fade in/out to each atom
Fade_in0.020Fade-in duration (seconds)
Fade_out0.040Fade-out duration (seconds)

Output

ParameterDefaultDescription
Draw_visualization1Generate 5-panel analysis display

Fixed Parameters (internal)

ParameterValueDescription
silShort0.15 sShort/medium silence threshold
silMed0.40 sMedium/long silence threshold
phiBridge0.15 sMax gap to merge phi segments
minDur_chi/omegawin_stepMinimum duration for chi/omega candidates
minDur_null0.050 sMinimum duration for null candidates
minDur_others0.100 sMinimum duration for psi/phi/theta

Visualization & Analysis

5-Panel Display

L-Logic System Visualization: Panel 1: TITLE • Script name, source name, duration, segment count, candidate count Panel 2: WAVEFORM WITH COLOR-CODED LLOGIC REGIONS • X-axis: Time, Y-axis: Amplitude (± ampMax) • Background colored rectangles for each merged segment: - Gray = null (Ø) - Light blue = psi (ψ) - Light green = theta (θ) - Light pink = chi (χ) - Light purple = phi (ϕ) - Light yellow = omega (ω) • Black waveform overlay • Dotted zero line • Title: "Waveform — Llogic timbral-textural regions" Panel 3: HNR CONTOUR WITH THRESHOLDS • X-axis: Time, Y-axis: HNR (-10 to 40 dB) • Background zones: - Light blue = psi region (HNR < hnr_psi) - Light purple = phi/omega region (hnr_psi to hnr_theta) - Light green = theta region (HNR > hnr_theta) • Dotted threshold lines at hnr_psi and hnr_theta • HNR contour in dark purple • Zone labels at right: ψ, ϕ/ω, θ • Title: "Harmonicity — ψ(Y)" Panel 4: INTENSITY CONTOUR WITH NULL THRESHOLD • X-axis: Time, Y-axis: Intensity (0-90 dB) • Light gray zone = null region (intensity < int_null) • Dotted threshold line at int_null • Intensity contour in orange • Title: "Intensity — Ø(

Reading the Visualization

What to look for:
  • 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:

Analytical Tool

Use case: Understanding the timbral-textural structure of a sound

Technique: Run with default thresholds, examine Lsets strings and visualization

Applications:

Sound Design

Use case: Creating new sounds by recombining classified segments

Technique: Use Void Meditation or Dense Texture presets on rich source material

Examples:

Research & Education

Use case: Testing perceptual categories and classification thresholds

Technique: Adjust thresholds, compare classifications, conduct listening tests

Research questions:

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

Problem: No candidates for a symbol in proposition
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
Problem: Classification seems wrong (e.g., tonal labeled as psi)
Cause: HNR thresholds inappropriate for material
Solution: Adjust hnr_psi/hnr_theta — lower for noisy material, raise for clean tones
Problem: Chi (percussive) not detected
Cause: int_chi too high, or win_step too large to catch rise
Solution: Lower int_chi, decrease win_step (must be ≤ win_len)
Problem: Output has clicks between atoms
Cause: Crossfade too short or missing
Solution: Increase crossfade, ensure shape_atoms is enabled
Problem: Visualization very slow
Cause: Many segments (1000+) with high-resolution plotting
Solution: Increase win_step for coarser analysis, or disable visualization for final runs

Advanced Techniques

Customizing minimum durations (edit script):

Modify the minDur values in the candidate pool building section. For example, increase minDur_others to 0.150s for longer segments only.

Phi bridging adjustment:

Change phiBridge value (currently 0.150) to control how aggressively phi segments are merged. Larger values (0.3) create longer vibrational regions.

Silence duration thresholds:

Modify silShort and silMed to change Ø(S)/Ø(M)/Ø(L) classification. Useful for different tempo contexts.

Multi-channel sources:

The script automatically converts stereo to mono for analysis. For spatial applications, consider analyzing each channel separately.