Uses old Rust 2015
#8 in #realtime
Nice Rust bindings for JACK Audio Connection Kit
libjackis required. Consult your package manager or the official website.
The general workflow for a jack application is to start up a jack daemon and connect the client to it. qjackctl is a convinient way to configure and bring up a jack server through a GUI.
Testing is a little awkward to setup since it relies on a Jack server.
Testing expects there to be an available Jack server running at a sample rate of 44.1kHz and a buffer size of 1024 samples.
$ jackd -r -ddummy -r44100 -p1024 & # Start the dummy jack server
If the tests are failing, a possible gotcha may be timing issues.
- Rust runs tests in parallel, it may be possible that the jack server is not keeping up. Set the environment variable
- Increase the value of
Another case can be that libjack is broke. Try switching between libjack and libjack2 (they have the same API and libjack2 isn't necessarily newer than libjack), or using a different version.
$ cargo test
- String lengths in the "C" API include the
NULLcharacter while these Rust bindings do not. generally
rust_size(x) = c_size(x) - 1.
- "C" bindings require functions to be registered while Rust bindings register an object with a trait.
jack_on_shutdownhas been removed, uses only
- Rust enums vs C enums
- Rust bitflags vs C integers used as flags
- deprecated Jack functions are not used/implemented in Rust bindings
Sections based on the main page sections on the Jack API.
- Top priority: MIDI!!!
- Managing and determining latency
- Transport and Timebase control
- The non-callback API (possibly skip)
- Reading and writing MIDI data
- Session API for clients.
- managing support for newer/older versions of JACK
- the API for starting and controlling a JACK server
- Metadata API.
- make safer
- better error reporting
- better testing