rill-graph 0.4.0

Real-time audio graph with block processing
Documentation

rill-graph

Real-time audio graph with block processing, topological sort, and the [SignalEngine] — a real-time safe graph engine.

Key components

  • SignalGraph — immutable DAG container, topology is fixed at build time
  • GraphBuilder — the only way to build a graph (SourceProcessorSink)
  • Kahn's algorithm — topological sort with cycle detection
  • SignalEngine<T, BUF_SIZE> — drives the graph:
    • process_tick(tick) — clock boundary: drains commands (anti-ack on overwrite), runs pre_process (feedback mix), applies parameter changes
    • process_block(tick) — convenience: process_tick + topo-order node processing + snapshot + propagate
    • spawn() — consumes the engine and runs it in a dedicated audio thread
    • running_flag()Arc<AtomicBool> for cooperative shutdown
  • Two-thread architecture — audio thread (hard RT) runs the engine, control thread (soft RT) runs PatchbayManager via queues
  • Zero-copy routing — 1:1 и fan-out соединения читают напрямую из буфера upstream-порта (Port::upstream_buffer). Копирование только при fan-in и feedback.
  • SIMD-friendly — фиксированное положение буфера в памяти на всё время жизни графа.
  • Port routing — соединения и буферы обратной связи хранятся на портах
  • Feedback support — deferred feedback via port.pre_process / port.snapshot_feedback
  • Port typesAudio, Control, Clock, Feedback, Param

Dependencies

  • rill-coreSignalNode, Source/Processor/Sink traits, ClockTick, CommandQueue, TelemetryQueue

Links