Skip to content

schema-substrate/solido

Repository files navigation

Solido

An audiovisual synthesis engine where organisms are catalysts in a petri dish. DNA determines how an organism transforms energy passing through it. The music is the reaction.

Built in Rust with wgpu rendering and cpal audio. Organisms consume spectral substrate (video + audio feedback), metabolize it through DSP cells, and deposit waste that other organisms eat. Behavior emerges from physics, metabolism, and Hebbian learning on a weighted affinity graph.

Prerequisites

  • Rust nightlyrustup default nightly (see rust-toolchain.toml)
  • FFmpeg 8.x dev libs (optional, for video features) — set FFMPEG_DIR env var to the SDK path and ensure DLLs are on PATH

Build & Run

cargo build                    # debug build
cargo build --release          # release build
cargo run                      # launch (eframe + wgpu window)
cargo test                     # all unit tests
RUST_LOG=debug cargo run       # verbose logging

Feature Flags

Flag Default What it gates
ui-egui yes egui panels, inspectors, ModuleUi trait
audio yes cpal audio I/O, DSP cells, MIDI, voice bus
video yes FFmpeg video input, substrate energy grid
full no audio + video (convenience alias)

Audio-only build (no FFmpeg required):

cargo run --no-default-features --features ui-egui,audio

Architecture

L5  UX Shell         egui panels, inspectors, presets
L4  Output Modules   Voice DSP (cpal), blob SDF renderer
L3  Processing       Pitch gravity, rhythm gravity, raga/gamaka quantizers
L2  Input Modules    Keyboard, cursor, camera, audio analysis
L1  Routing Backbone AffinityGraph + SeedReactor + RoutingTable
L0  Module Contract  ModuleCore trait, Signal types, PortId, cpal substrate

Every module implements ModuleCore. Signals route through the affinity graph. The reactor drives the tick cycle: Emit -> Route -> Deliver -> Learn. Audio runs lock-free on a separate thread via ringbuf SPSC channels.

Organism Species

10 organism species ship as DNA presets in assets/dna/:

Species Character
dron Sustained drone, high substrate deposit
sawl Sawtooth melodizer, raga-responsive
acid Diode resonance, low waste output
hoso Granular texture, Malabar cochin moon
spgl Expanding universe, spectral glimmer
tblk Tabla machine, rhythmic catalyst
kkit 909 drum kit
rech Reich-inspired phase patterns
isao Tomita-inspired synthesis
melo Melodizer

Source Layout

src/
  app.rs              # SolidoApp — trunk state + update loop
  app_audio.rs         # Audio-surface methods (cfg audio)
  app_video.rs         # Video-surface methods (cfg video)
  main.rs              # Entry point + eframe setup
  module/              # ModuleCore trait, Signal, PortId
  modules/             # Input/processing modules (keyboard, video, raga, tala...)
  organism/            # DNA, cells, simulation, registry, chladni nodes
  reactor/             # SeedReactor, RoutingTable, clock
  affinity/            # Hebbian graph, emotion, ledger
  dsp/                 # DSP cells, commands, chaos noise
  audio/               # Voice bus, mixer, reverb, tape delay, MIDI
  substrate/           # Audio substrate, energy grid, ISF shaders
  renderer/            # wgpu SDF rendering, font atlas, biofield
  tuning/              # Gravity wells, pitch gravity, raga, scales
  ui/                  # Panel framework + all inspector panels
  config.rs            # Runtime config
  sdf.rs               # Signed distance field primitives
  preset.rs            # Preset save/load
  recorder.rs          # Frame capture + video export
  samples/             # Sample registry + playback
spec/                  # Session specs (source of truth for scope)
assets/                # DNA presets, fonts, scales, phrases, samples, video
tools/                 # MSDF atlas gen, sample fetcher

Cortex Integration

Solido's classification layer lives in separate repos:

Repo Branch What
schema-substrate/cortex main CLI tool — cortex enter, cortex classify, cortex ingest
schema-substrate/codex audit/external-review Vocabulary — primitives, species, traits, @context
schema-substrate/solido main This repo
# 1. Clone cortex CLI and link locally
git clone https://github.com/schema-substrate/cortex.git
cd cortex && npm link

# 2. In the solido directory, read the structural graph
cd /path/to/solido
cortex enter . --json

Cortex reads .agents/graph/ — a filesystem of typed JSON nodes classifying every module, asset, and spec by system and disposition. Each node is a file; git is the protocol.

The taxonomy classifies synth parameters through 5 primitives:

  • NQI (quantitative identity) — continuous DSP params (freq, cutoff, resonance)
  • SM (scoring/measurement) — character/quality fields (shape, brightness, waveform)
  • TBA (temporal binding) — temporal structure (attack, decay, release, rate)
  • AIR (external lifecycle) — metadata/provenance (preset name, bank, source)
  • RDE (remainder/default) — passthrough (id, raw data)

License

AGPL-3.0

About

Solido — living instrument. WebGPU + Rust organism engine. Part of Schema Substrate.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors