Expand description
§Rill Patchbay — Маршрутизация событий и автоматизация
rill-patchbay является эволюцией rill-automation из версии 0.2.0,
объединённой с функциональностью маппинга из rill-control.
§Основные компоненты
- Автоматы — генеративные источники сигналов (LFO, огибающие, секвенсоры)
- Сервоприводы (в модуле
control) — связь автоматов с параметрами узлов - Маппинги — связь внешних событий (MIDI/OSC) с параметрами
- Сенсоры — источники событий из внешнего мира
- Менеджер — центральный координатор для двухпоточной архитектуры
§Архитектура
┌─────────────────────────────────────────────────────────────┐
│ ПОТОК УПРАВЛЕНИЯ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ PatchbayManager │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Automata │ │ Servos │ │ Mappings │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ │ │ │ │ │
│ │ ▼ ▼ │ │
│ │ ┌──────────────────────────┐ │ │
│ │ │ RtQueue<ParameterCommand>│ │ │
│ │ └──────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ │ неблокирующая очередь │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ АУДИОПОТОК │ │
│ │ (rill-graph / rill-io) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘Re-exports§
pub use automaton::EnvelopeAutomaton;pub use automaton::EnvelopeStage;pub use automaton::EnvelopeType;pub use automaton::FunctionAutomaton;pub use automaton::LfoAutomaton;pub use automaton::LfoWaveform;pub use automaton::PlayMode;pub use automaton::Range;pub use automaton::SequencerAutomaton;pub use automaton::StatefulFunctionAutomaton;pub use automaton::Step;pub use automaton::SyncMode;pub use control::midi_cc;pub use control::osc_address;pub use control::AnyServo;pub use control::Automaton;pub use control::BoxedServo;pub use control::ControlEvent;pub use control::EventPattern;pub use control::Mapping;pub use control::NoAction;pub use control::OscSurface;pub use control::OscSurfaceEntry;pub use control::ParameterCommand;pub use control::ParameterMapping;pub use control::PatchbayControl;pub use control::Servo;pub use control::Target;pub use control::Transform;pub use manager::PatchbayManager;pub use strategy::ConflictStrategy;pub use strategy::ControlStrategy;pub use strategy::UiCommand;pub use port_combiner::PortCombinerHandle;pub use port_combiner::spawn_combiner;pub use automaton_task::spawn_automaton_task;pub use engine::PatchbayEngine;pub use sequencer::ParameterTarget;pub use sequencer::Pattern;pub use sequencer::SequenceStep;pub use sequencer::SequencerHandle;pub use sequencer::Snapshot;pub use sequencer::SnapshotSequencer;pub use sequencer::StepPlayMode;
Modules§
- automaton
- Автоматы — генеративные источники управления Automata — generative control-signal sources.
- automaton_
task - Обёртка Automaton в green thread (tokio task)
- buffer_
prelude - Prelude for working with buffers
- control
- Управление и маппинг событий Control and automation subsystem.
- engine
- Референсный оркестратор — high-level API над green threads
- external
- Common third-party types that are frequently used with Rill
- f32_
prelude - Prelude for working with f32 samples (common case)
- f64_
prelude - Prelude for working with f64 samples (high precision)
- function_
registry - Реестр именованных функций для сериализации
- manager
- Менеджер патчбэя — центральный координатор Patchbay manager — central coordinator (DEPRECATED).
- node_
prelude - Prelude for working with nodes
- param_
prelude - Prelude for working with parameters
- port_
combiner - PortCombiner — комбинирование автомата и UI на порт
- port_
prelude - Prelude for working with ports
- prelude
- Прелюдия для удобного импорта основных типов
- queue_
prelude - Prelude for working with queues (automation)
- sensor
- Сенсоры — источники событий из внешнего мира
- sequencer
- Parameter-lock step sequencer
- strategy
- Стратегии управления автоматами
- time_
prelude - Prelude for working with time
- utils
- Утилиты и вспомогательные функции Utility functions and helpers for the patchbay.
Structs§
- Action
Context - Context provided to an
Algorithmduring processing. - Algorithm
Metadata - Descriptive metadata for an
Algorithmimplementation. - Atomic
Cell - Atomic cell with a fully safe API.
- Atomic
Stats - Atomic statistics for safe concurrent access
- Buffer
Stats - Buffer statistics snapshot for monitoring and debugging
- Clock
Tick - A tick of the audio clock
- Delay
Line - Delay line for audio effects — single-threaded circular buffer.
- FanIn
Buffer - Buffer for mixing multiple producers to one consumer.
Single-threaded — use
rill_core::queuesfor cross-thread. - FanOut
Buffer - Buffer for broadcasting from one producer to multiple consumers.
Single-threaded — use
rill_core::queuesfor cross-thread. - NodeId
- Unique identifier for a node in the graph
- Node
Metadata - Metadata about a node
- Node
Params - A flexible set of parameters passed to a node constructor.
- Node
State - State of a node during processing State of a node during processing
- Node
Type Id - Type identifier for a node (for downcasting)
- Param
Metadata - Metadata about a parameter
- Param
Range - Range constraints for a parameter
- Parameter
Id - Type-safe parameter identifier with validation
- Pipe
Buffer - Single-producer, single-consumer buffer for intra-graph node connections.
- Port
- A port on a node.
- PortId
- Unique identifier for a port within a graph
- Ring
Buffer - Fixed-size ring buffer (power-of-two size). Single-threaded.
- RtQueue
- Главная RT-safe очередь
- Scalar
Vector1 - Скалярный вектор из 1 элемента
- Scalar
Vector2 - Скалярный вектор из 2 элементов
- Scalar
Vector4 - Скалярный вектор из 4 элементов
- Scalar
Vector8 - Скалярный вектор из 8 элементов
- System
Clock - High-precision system clock for sample-accurate timing.
- Telemetry
Block - Fixed-size telemetry frame for RT-safe ring buffer communication.
Enums§
- Algorithm
Category - Functional category of an algorithm (for introspection / UI).
- Atomic
Cell Error - Errors that can occur when creating an
AtomicCell. - Buffer
Error - Buffer error types
- Connection
Error - Errors that can occur during graph connections
- Node
Category - Category of a node (for UI/organization)
- Param
Type - Type of parameter value
- Param
Value - Parameter value (can be of different types)
- Parameter
Error - Errors that can occur during parameter operations
- Port
Direction - Direction of a port (input or output)
- Port
Error - Errors that can occur during port operations
- Port
Type - Type of a port - what kind of signal it carries
- Process
Error - Main error type for signal processing operations
- Queue
Error - Errors that can occur during queue operations.
- Time
Error - Errors that can occur during time and clock operations
Constants§
- CACHE_
LINE_ SIZE - Cache line size for alignment (64 bytes on x86_64)
- DEFAULT_
BLOCK_ SIZE - Default block size for signal processing
- DEFAULT_
BUFFER_ SIZE - Default buffer size for most use cases
- DEFAULT_
SAMPLE_ RATE - Default sample rate (44.1 kHz)
- MAX_
BLOCK_ SIZE - Maximum block size
- MAX_
BUFFER_ SIZE - Maximum buffer size (2^16 = 65536 samples)
- MAX_
SAMPLE_ RATE - Maximum supported sample rate
- MIN_
BLOCK_ SIZE - Minimum block size
- MIN_
BUFFER_ SIZE - Minimum buffer size
- MIN_
SAMPLE_ RATE - Minimum supported sample rate
- VERSION
- Current version of rill-core
Traits§
- Action
- Unified processing primitive for ports and DSP blocks.
- Algorithm
- Unified processing primitive for ports and DSP blocks.
- Buffer
- Common interface for audio buffers of arbitrary size.
- Clock
Source - A source of clock ticks for signal processing
- Interpolate
- Fractional-index reading with interpolation.
- Into
Param Value - Trait for types that can be converted to/from
ParamValue - Processor
- Passive processor of signals
- Signal
Buffer - Common trait for all signal buffers
- Signal
Node - Base trait for all audio nodes
- Sink
- Active sink of signals
- Source
- Active source of signals
- Transcendental
- Transcendental operations (sin, cos, sqrt, exp, ln).
- Vector
- Core trait for vector types (basic operations).
- Vector
Mask - Vector comparison and masking operations.
- Vector
Reduce - Horizontal reduction operations (vector → scalar).
- Vector
Scalar Ops - Scalar-vector arithmetic operations.
- Vector
Transcendental - Trait for vector types with transcendental operations.
Functions§
- abs_
slice - Поэлементный модуль слайса
- add_
scalar_ slice - Сложение слайса со скаляром
- add_
slices - Поэлементное сложение двух слайсов с сохранением результата в третий
- clamp_
slice - Поэлементное ограничение слайса
- cos_
slice - Поэлементный косинус слайса
- div_
slices - Поэлементное деление двух слайсов
- exp_
slice - Поэлементная экспонента слайса
- ln_
slice - Поэлементный натуральный логарифм слайса
- max_
slice - Поэлементный максимум двух слайсов
- min_
slice - Поэлементный минимум двух слайсов
- mul_
scalar_ slice - Умножение слайса на скаляр
- mul_
slices - Поэлементное умножение двух слайсов
- sin_
slice - Поэлементный синус слайса
- sqrt_
slice - Поэлементный квадратный корень слайса
- sub_
slices - Поэлементное вычитание двух слайсов
- tan_
slice - Поэлементный тангенс слайса
Type Aliases§
- Buffer
Result - Result type for buffer operations
- Connection
Result - Result type for connection operations
- Control
Value - Control signal value type
- Default
Clock - Default system clock
- Default
Delay Line - Default delay line with f32 samples
- Default
Pipe Buffer - Default pipe buffer with f32 samples
- Default
Ring Buffer - Default ring buffer with f32 samples
- Mono
Block - Mono signal block type
- Parameter
Result - Result type for parameter operations
- Port
Result - Result type for port operations
- Process
Result - Result type for signal processing operations
- Queue
Result - Result type alias for queue operations.
- Sample
- Default sample type (32-bit float)
- Stereo
Block - Stereo signal block type (left, right)
- Time
Result - Result type for time operations