docs.rs failed to build rill-io-0.5.0-beta.4
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
rill-io-0.5.0-beta.3
rill-io
Audio I/O backends — PortAudio, ALSA, PipeWire, JACK.
This crate provides I/O backends and the Output/Input graph
nodes that own the reactive stream (process callback or similar).
All backends implement [IoBackend] — a trait for reactive stream processing:
set_process_callback, read, write, run, stop.
The process callback receives the actual negotiated sample rate (f32)
from the backend so that ClockTick always contains the true device rate.
Nodes
-
Output—Sinknode. Borrows backend via [IoBackendPtr].start()registers the process callback and drives the graph:let mut output = with_channels; -
Input—Sourcenode (push model). Borrows backend via [IoBackendPtr].start()registers the process callback.
In both cases the callback does:
- Drain
MpscQueue<ParameterCommand>into graph nodes - Create
ClockTickwith the backend‑supplied sample rate process_block()on the driver nodePort::propagate()— recursive DAG traversal
Backends
| Backend | Feature | Thread model |
|---|---|---|
PortAudioBackend |
portaudio (default) |
RT callback, exact buffer size |
PipewireBackend |
pipewire |
RT callback (PW thread) |
JackBackend |
jack |
RT callback (JACK thread) |
AlsaBackend |
alsa |
snd_pcm_wait() — poll‑driven, exact period required |
NullBackend |
(always) | No‑op, for testing |
Sample rate negotiation:
- JACK: reads
client.sample_rate()after activation - ALSA: queries
hw.get_rate()afterset_rate(Nearest), checkshw.get_period_size() == BUF_SIZE - PipeWire: output uses requested rate, input reads negotiated rate atomically
- PortAudio: opens stream with exact requested rate and buffer size
- Null: uses
config.sample_ratedirectly
Links
- Repository: https://github.com/DigitalRats/rill
- Documentation: https://docs.rs/rill-io