JACK (for Rust)
Rust bindings for JACK Audio Connection Kit.
Overview
JACK is a low-latency audio server that allows multiple applications to share audio and MIDI devices and route signals between each other. This crate provides safe Rust bindings to create JACK clients that can process audio and MIDI in real-time.
Documentation
- Guide - Quickstart, features, and tutorials
- API Reference - Complete API documentation
Quick Example
use io;
See the examples directory for more.
Installation
Add to your Cargo.toml:
[]
= "0.13"
JACK Server Setup
A JACK server must be running for clients to connect. Install one of:
- Linux/BSD: JACK2 (lowest latency), Pipewire JACK (easiest), or JACK1 via your package manager
- Windows: Official installer or Chocolatey
- macOS: Official installer or Homebrew
By default, clients request the server to start on demand. Use
ClientOptions::default() or the NO_START_SERVER flag to disable this.
Testing
Tests require a dummy JACK server and must run single-threaded:
&
If cargo nextest is unavailable: RUST_TEST_THREADS=1 cargo test
Troubleshooting
- Use
cargo nextestinstead ofcargo testfor better handling of timing-sensitive tests - Try libjack2 or pipewire-jack if tests fail with your current JACK implementation
License
MIT - see LICENSE for details.