Uses old Rust 2015
0.1.0 |
|
---|
#13 in #jack
145KB
3K
SLoC
Rust JACK
Nice Rust bindings for JACK Audio Connection Kit
Running
-
libjack
is 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.
Running Tests
Testing is a little awkward to setup since it relies on a Jack server.
Setting Up Jack Dummy 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
Possible Issues
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
RUST_TEST_THREADS
to 1. - Increase the value of
DEFAULT_SLEEP_TIME
intest.rs
.
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.
Running the tests
$ cargo test
"C" & Rust API differences
- String lengths in the "C" API include the
NULL
character while these Rust bindings do not. generallyrust_size(x) = c_size(x) - 1
. - "C" bindings require functions to be registered while Rust bindings register an object with a trait.
jack_on_shutdown
has been removed, uses onlyjack_on_info_shutdown
.- Rust enums vs C enums
- Rust bitflags vs C integers used as flags
- deprecated Jack functions are not used/implemented in Rust bindings
Progress
Sections based on the main page sections on the Jack API.
TODO
- 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.
Other TODOS
- make safer
- better error reporting
- better testing
Dependencies
~300KB