Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/RustAudio/rust-jack

Decent jack bindings for rust
https://github.com/RustAudio/rust-jack

audio jack libjack midi real rust rust-bindings rust-jack time

Last synced: 3 months ago
JSON representation

Decent jack bindings for rust

Awesome Lists containing this project

README

        

#+TITLE: JACK

| [[https://opensource.org/licenses/MIT][https://img.shields.io/badge/License-MIT-yellow.svg]] |
| [[https://github.com/RustAudio/rust-jack/actions][https://github.com/RustAudio/rust-jack/workflows/Rust/badge.svg]] |
| [[https://crates.io/crates/jack][https://img.shields.io/crates/v/jack.svg]] |
| [[https://docs.rs/jack][https://docs.rs/jack/badge.svg]] |

** Overview
:PROPERTIES:
:CUSTOM_ID: Overview-9s7h6d81ktj0
:END:

Rust bindings for the [JACK Audio Connection Kit](https://jackaudio.org). These bindings work on every
operating system that JACK does.

The JACK server is usually started by the user or system. Clients can request that the JACK server is
started on demand when they connect, but this can be disabled by the user and is the recommended
configuration.

* Linux and BSD users may install JACK1, JACK2, or Pipewire JACK from their system package
manager.
* Windows users may install JACK from the
[official website](http://jackaudio.org/downloads/) or
[Chocolatey](https://community.chocolatey.org/packages/jack).
* macOS users may install JACK from the [official website](http://jackaudio.org/downloads/) or
[Homebrew](https://formulae.brew.sh/formula/jack).

[:heart: Sponsor](https://github.com/sponsors/wmedrano)

Refer to the [documentation](https://docs.rs/jack/) for details about the API, building, and packaging.
Also take a look at the =examples= directory for usage.

** Testing
:PROPERTIES:
:CUSTOM_ID: Testing-7y451e81ktj0
:END:

Testing requires setting up a dummy server and running the tests using a single
thread.

#+BEGIN_SRC sh
# Set up a dummy server for tests. The script is included in this repository.
./dummy_jack_server.sh &
# Run tests with limited concurrency.
RUST_TEST_THREADS=1 cargo test
#+END_SRC

**Note:** We use a single thread for tests since too many client
instantiations in short periods of time cause the JACK server to become flaky.

*** Possible Issues
:PROPERTIES:
:CUSTOM_ID: TestingPossibleIssues-8u551e81ktj0
:END:

If the tests are failing, a possible gotcha may be timing issues.

1. Increase the value used by ~sleep_on_test~ in =client/common.rs=.

Another case is that libjack may be broken on your setup. Try switching between
libjack and libjack2 (they have the same API and libjack2 isn't necessarily
newer than libjack), or using a different version.